合规智能查询服务

Fianu合规智能MCP服务器为软件供应链提供AI驱动的合规数据自然语言查询功能,支持多种合规工具和场景分析。

  • by fianulabs
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 fianulabs/mcp

使用说明

Fianu合规智能MCP服务器

AI为您的软件供应链提供合规智能。此模型上下文协议(MCP)服务器使Claude Desktop等AI助手能够以自然语言查询Fianu的合规数据。

特性

MCP工具

工具 描述 示例问题
get_asset_compliance_status 获取特定资产的合规状态,包括所有通过/失败的控制 “我的回购的合规状态如何?”
list_controls 列出所有合规控制,并按严重性或框架进行筛选 “我们有什么控制措施?”
get_compliance_summary 执行层全组织合规概述及风险分类 “我现在的顺从姿势有多健康?”
get_attestation_details 获取证明详细信息-支持组织范围(仅限控制)或特定于资产的查询 “显示所有存储库中cycode.secret.detection的通过/失败状态”
get_deployment_attestations 显示特定部署记录中的所有证明 “显示上次部署我的应用程序的证明”
get_pipeline_vulnerabilities 从管道扫描中获取安全漏洞(SAST、SCA、secrets、容器) “在我的仓库中发现了哪些漏洞?”
get_evidence_chain 从起源到事件再到证明的痕迹证据谱系 “在我的仓库中显示秘密检测失败的证据链”
get_policy_violations 将失败的控制视为整个组织或特定资产的“策略违规” “所有违反政策的行为都是什么?” 或 “哪些资产未通过秘密检测?”
get_compliance_trends 使用智能采样分析随时间推移的合规趋势 “在过去的30天里,合规性发生了怎样的变化?” 或 “我的合规性是否有所改善?”
get_deployment_blockers 找出阻止应用程序部署到特定入口/环境的原因 “是什么阻止了DBX部署到生产环境?” 或 “我的应用程序可以部署到登台吗?”
get_policy_exceptions 列出并分析政策例外情况(豁免/免于控制) “哪些政策例外是有效的?” 或 “哪些控制有例外?”
resolve_external_artifact 将工件URI从工件/容器注册表解析到Fianu仪表板 “带我去Fianu买sha256:abc123…” 或 “查找此容器映像的Fianu仪表板”
analyze_control_failure 分析控制的OPA Rego策略,了解它检查的内容以及失败的原因 “为什么cycode.secret.detection失败?” 或 “显示可靠性警报的OPA规则”
list_releases 列出应用程序即将发布(待定)或过去发布(已发布)的版本 “DBX即将发布哪些版本?” 或 “向我展示数字银行体验的最后5个版本”

安全

  • OAuth 2.0 通过Auth0进行身份验证
  • 租户隔离 -用户只能访问自己组织的数据
  • 审核日志记录 -记录到Cloudflare Analytics引擎的所有API调用和工具调用
  • JWT验证 -加密验证所有令牌

技术栈

  • Cloudflare员工 -无服务器运行时
  • 耐用物品 -有状态的MCP会话
  • KV命名空间 -响应缓存
  • 分析引擎 -审计跟踪和监测
  • TypeScript -类型安全开发

先决条件

  • Node.js 18+和npm
  • Cloudflare帐户(帐户ID: 6841d88809021dab1138d0451d92f94e)
  • Auth0凭据(来自fianu.io应用程序的客户端ID和密码)
  • 访问Fianu开发环境

设置

1.克隆和安装

cd /Users/petezimmerman/Documents/dev/mcp-compliance-intelligence
npm install

2.配置Cloudflare

这 wrangler.toml 文件已配置为:

  • 帐户ID
  • 工人姓名
  • 持久对象绑定
  • KV命名空间绑定(需要创建)
  • 分析引擎绑定

3.创建KV命名空间

npx wrangler kv:namespace create CACHE_KV

复制命名空间ID并更新 wrangler.toml:

[[kv_namespaces]]
binding = "CACHE_KV"
id = "<paste-namespace-id-here>"

4.设定秘密

设置Auth0凭据(从fianu.io Auth0应用程序获取这些凭据):

npx wrangler secret put AUTH0_CLIENT_ID
# Paste client ID when prompted

npx wrangler secret put AUTH0_CLIENT_SECRET
# Paste client secret when prompted

# Optional: Set audience if Consulta requires it
npx wrangler secret put AUTH0_AUDIENCE
# Enter: https://fianu.io/api

5.配置Auth0应用程序

在fianu.io应用程序的Auth0仪表板中,添加以下回调URL:

  • https://noah-684.workers.dev/mcp-compliance-intelligence/callback
  • https://noah-684.workers.dev/mcp-compliance-intelligence/token
  • http://localhost:8788/callback (用于本地测试)
  • http://localhost:8788/token (用于本地测试)

使用MCP服务器

Fianu Compliance Intelligence MCP服务器可与这两者配合使用 克劳德桌面 和 光标IDE 使用相同的配置。服务器使用OAuth 2.0进行身份验证,因此不需要手动设置令牌。

MCP服务器URL

生产: https://mcp.fianu.io/sse

暂存: https://mcp-compliance-intelligence-staging.noah-684.workers.dev/sse

Claude桌面配置

将此添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "fianu-compliance": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp-compliance-intelligence-staging.noah-684.workers.dev/sse"
      ]
    }
  }
}

添加配置后:

  1. 重新启动克劳德桌面 完全
  2. Claude Desktop将自动:
    • 通过以下方式注册临时客户端 /register
    • 通过以下方式将其兑换为代币 /token
    • 连接到 /sse 随着 Authorization: Bearer <token>
  3. 试着问:“有哪些合规工具可用?”或“获取资产xd交易应用程序的合规状态”

Cursor IDE的配置

Cursor使用与Claude Desktop相同的JSON配置文件格式。将以下内容添加到您的Cursor MCP配置文件中:

macOS/Linux: ~/.cursor/mcp.json
视窗: %APPDATA%\Cursor\mcp.json

{
  "mcpServers": {
    "fianu-compliance": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp-compliance-intelligence-staging.noah-684.workers.dev/sse"
      ]
    }
  }
}

添加配置后:

  1. 重新启动游标 完全
  2. 光标将自动:
    • 通过以下方式注册临时客户端 /register
    • 通过以下方式将其兑换为代币 /token
    • 连接到 /sse 随着 Authorization: Bearer <token>
  3. MCP服务器应在Cursor的MCP面板中显示为“已连接”
  4. 可用工具将出现在MCP工具列表中

替代方案:UI配置

您还可以通过Cursor的UI进行配置:

  1. 打开设置(Cmd/Ctrl + ,) > Features > MCP
  2. 点击 + Add New MCP Server
  3. 配置:
    • 名字: Fianu Compliance Intelligence
    • 类型: stdio
    • 命令: npx
    • 参数: -y, mcp-remote, https://mcp-compliance-intelligence-staging.noah-684.workers.dev/sse

可用工具

连接后,这些工具在Claude Desktop和Cursor中都可用:

get_asset_compliance_status

获取特定资产的合规状态。返回合规性得分、所有控制(通过/失败/缺失)和可操作的建议。

  • 参数: assetIdentifier (必填), assetType, branch
  • 示例: “fianu全栈演示的合规状态如何?”

list_controls

列出组织中配置的所有合规控制。使用此功能可发现可用的控制路径。

  • 参数: severity, framework
  • 示例: “显示所有关键控件” 或 “我们对SOC2有什么控制?”

get_compliance_summary

CISO报告的执行级全组织合规概述。

  • 退货:风险等级(临界/高/中/低)、按类型划分的资产明细、最失败的控制措施、风险最高的资产和建议
  • 参数: frameworkFilter, includeAssets
  • 示例: “我现在的顺从姿势有多健康?”

get_attestation_details

两种操作模式:

  1. 组织范围模式 (仅限controlPath):显示控件的所有资产的通过/失败状态
  2. 资产特定模式 (带assetIdentifier):显示详细的证明信息,包括阈值和测量值
  • 参数: controlPath, assetIdentifier, attestationUuid, branch, commit
  • 示例: “显示所有存储库中的cycode.secret.detection状态” 或 “在我的仓库中获取sonarqube.descan.coverage的证明详细信息”

get_deployment_attestations

显示特定部署记录中的所有证明(不符合策略)。

  • 参数: assetIdentifier (必填), deploymentId, environment
  • 示例: “显示上次将应用程序部署到PROD的证明”

get_pipeline_vulnerabilities

从存储库的安全扫描(SAST、SCA、secrets、容器)中获取所有漏洞。

  • 参数: assetIdentifier (必填), branch, commit, severity, showIntroduced
  • 特别:使用 showIntroduced=true 只查看与上次提交相比的新漏洞
  • 示例: “在fianu全栈演示中发现了哪些安全漏洞?” 或 “显示上次提交引入的关键漏洞”

get_evidence_chain

追踪笔记、证明或犯罪的证据链(谱系)。显示证据如何从起源(触发)通过事件(数据收集)流向证明(控制评估)。

三种操作模式:

  1. 直接UUID:提供 noteUuid 追踪特定笔记
  2. 资产+承诺:提供 assetIdentifier + commit 对于特定的承诺
  3. 仅限资产:提供公正 assetIdentifier -自动解析为默认分支上的最新提交

参数:

  • noteUuid -特定注释(证明、事件或事务)的UUID
  • assetIdentifier -资产/回购名称(例如,“fianu全栈演示”)
  • commit -具体提交SHA(完整或简短)
  • branch -分支名称(默认为默认分支)
  • controlPath -用于特定控制的过滤器(例如“秘密检测”)
  • direction - upstream (祖先), downstream (儿童),或 full (两者)
  • maxDepth -最大遍历深度(默认值:10)

示例问题:

  • “向我展示fianu全栈演示中秘密检测失败的证据链”
  • “是什么导致了这一部署决定?”
  • “上次构建产生了什么证据?”

get_policy_violations

获取整个组织或特定资产的策略违规(控制失败)。该工具将失败的证明视为“违反政策”,这是合规监控的一流概念。

参数:

  • assetIdentifier -可选-过滤到特定资产(名称或UUID)
  • controlPath -可选-过滤到特定控件(例如,“循环码.秘密.检测”)
  • severity -可选-按严重程度(严重、高、中、低)过滤
  • since -可选-仅显示自该日期以来的违规行为(ISO 8601格式)
  • limit -可选-返回的最大违规次数(默认100,最大500)

退货: 违规次数、风险等级、按控制分组的违规行为以及可操作的建议。

示例问题:

  • “所有违反政策的行为都是什么?”
  • “哪些资产未通过秘密检测?”
  • “显示关键控制故障”
  • “上周发生了什么违规行为?”

get_compliance_trends

使用智能采样分析随时间推移的合规趋势。显示合规性如何变化,以及哪些控制措施得到了改进或拒绝。

参数:

  • assetIdentifier -可选-过滤到特定资产(名称或UUID)。忽略整个组织的趋势。
  • period -分析时间段:“7d”(7天)、“30d”(30天,默认)、“90d”(90天)

退货:

  • 总结当前得分、期初得分、趋势方向(改善/稳定/下降)、变化百分比
  • 显示改善最多和下降最多的控制措施的亮点
  • 采样数据点(性能最多30个)
  • 见解和建议

示例问题:

  • “在过去的30天里,合规性发生了怎样的变化?”
  • “我的合规性是在提高还是在下降?”
  • “哪些控制措施改善得最多?”
  • “向我展示90天的合规轨迹”

注: 使用智能采样以确保快速响应。对于精确的时间点数据,请使用 get_policy_violations 具体日期。

get_deployment_blockers

找出阻止应用程序部署到特定环境/门的原因。此工具根据入口要求检查应用程序中的所有资产,并报告哪些控制失败。

参数:

  • applicationName -必填项-应用程序名称或代码(例如“DBX”、“数字银行体验”)
  • targetEnvironment -可选-目标门/环境(默认:“生产”)。示例:“staging”、“qa”、“prod”

退货:

  • 应用程序信息(解析名称、代码、uuid)
  • 目标登机口信息
  • canDeploy boolean-如果所有必需的控件都通过,则为true
  • 控制失效的资产及其原因
  • 传递资产
  • 见解和建议

示例问题:

  • “是什么阻止了DBX部署到生产环境?”
  • “数字银行体验可以部署到分期付款吗?”
  • “为什么fianu不能发布全栈演示?”
  • “我的应用程序准备好部署了吗?”

注: 此工具检查当前的合规状态。对于历史部署记录,请使用 get_deployment_attestations.

get_policy_exceptions

列出并分析政策例外情况(豁免/豁免控制)。此工具显示哪些异常处于活动状态,哪些控件具有异常,以及异常何时到期。

参数:

  • controlPath -可选-过滤特定控件的异常(例如,“ci.restaurot.alerts”)
  • status -可选-按状态筛选:“活动”(默认)、“非活动”或“全部”
  • expiringSoon -可选-如果为true,则仅显示在未来30天内到期的异常

退货:

  • 摘要(异常总数、活动计数、即将到期计数、按控件分组)
  • 例外情况清单及详细信息(名称、控制、理由、到期)
  • 见解和局限性

示例问题:

  • “哪些政策例外是有效的?”
  • “哪些控制有例外?”
  • “哪些例外即将到期?”
  • “显示可靠性警报的例外情况”

重要限制:

  • API 非 暴露谁请求或创建了异常
  • 只有审批者角色(例如“内部:系统:管理员”)可用,而不是个人用户身份
  • 业务线/组织单位过滤不可用
  • 对于“谁请求了最多的异常?”之类的问题,API中不会公开此数据

resolve_external_artifact

从Artifactory或容器注册表解析工件URI,以查找相应的Fianu资产和仪表板URL。将外部工具与Fianu连接起来,以便快速查找合规性。

参数:

  • artifactUri -必需-要解析的工件URI

支持的格式:

  • 容器消化: sha256:abc123...
  • GHCR图像: ghcr.io/org/repo/image@sha256:abc123...
  • Docker Hub: docker.io/org/image:tag
  • 文物: artifactory.example.com/docker-local/image:tag

退货:

  • 存储库名称/UIDI
  • 程序信息
  • 提交SHA
  • Fianu仪表板URL (直接链接!)
  • 当前合规状态

示例问题:

  • “查找适用于sha256的Fianu仪表板:fd47edeaf25b10731a7117201a6243c371b4db33f05710bc0dec2d85d24e8c54”
  • “ghcr.io/yorg的合规状态如何/myapp@sha256:abc123…”
  • “带我去Fianu看这个集装箱图片”

用例: 从Artifactory复制资源URI,并立即在Fianu中查看其合规性状态,而无需手动导航。

故障排除

OAuth没有触发?

  • 删除并重新添加MCP服务器以触发新的注册
  • 对于Cursor:完全退出应用程序(Cmd+Q)并重新启动

连接失败?

  • 验证服务器是否可访问: curl https://mcp-compliance-intelligence-staging.noah-684.workers.dev/health
  • 检查Worker日志: npx wrangler tail --env staging

身份验证失败?

  • 确保您的Auth0帐户可以访问Fianu租户
  • 检查是否在Auth0仪表板中配置了回调URL

有关更详细的故障排除,请参阅 CURSOR_SETUP.md 或 CLAUDE_DESKTOP_SETUP.md.


发展

在本地运行

npm run dev

这将启动Worker http://localhost:8788.

测试健康检查

curl http://localhost:8788/health

预期响应:

{
  "status": "healthy",
  "service": "Fianu Compliance Intelligence MCP",
  "version": "0.1.0",
  "environment": "development"
}

测试身份验证

# Get a JWT token from Auth0 (use Fianu dev environment)
TOKEN="your-auth0-jwt-token"

# Test authentication
curl -X POST http://localhost:8788/auth \\
  -H "Content-Type: application/json" \\
  -d "{\"token\": \"$TOKEN\"}"

添加新工具

创建新的MCP工具时,请遵循以下模式:

⚠️ 重要提示:使用纯JSON模式,而不是Zod

MCP工具模式 必须是纯JSON模式对象,而不是Zod模式。Zod模式将无法正确序列化,并导致工具注册失败,出现以下错误:

Error listing tools: Invalid literal value, expected "object"

✅ 正确-纯JSON模式:

export const myToolSchema = {
  type: 'object',
  properties: {
    requiredParam: {
      type: 'string',
      description: 'Description of the parameter',
    },
    optionalParam: {
      type: 'string', 
      description: 'Optional parameter description',
    },
  },
  required: ['requiredParam'],
};

❌ 错误-Zod模式(将破坏MCP):

// DO NOT USE ZOD FOR MCP SCHEMAS
import { z } from 'zod';
export const myToolSchema = z.object({
  requiredParam: z.string().describe('...'),
  optionalParam: z.string().optional().describe('...'),
});

工具文件结构

在中创建工具 src/tools/ 遵循此模式:

// src/tools/my-new-tool.ts
import type { Env, SessionState, ToolHandler } from '../types';
import { ConsultaClient } from '../api/consulta-client';

// Schema MUST be plain JSON Schema object
export const myNewToolSchema = {
  type: 'object',
  properties: {
    // ... properties
  },
  required: ['requiredParam'],
};

export const myNewToolHandler: ToolHandler = async (
  args: Record<string, unknown>,
  env: Env,
  session: SessionState
): Promise<any> => {
  const client = new ConsultaClient(env, session);
  
  // Extract args (no Zod parsing)
  const requiredParam = args.requiredParam as string;
  const optionalParam = args.optionalParam as string | undefined;
  
  // ... tool logic ...
  
  // Return MCP content format
  return {
    content: [{
      type: 'text' as const,
      text: JSON.stringify(result, null, 2),
    }],
  };
};

注册合规mcp.ts

导入并注册 src/compliance-mcp.ts:

import { myNewToolHandler, myNewToolSchema } from './tools/my-new-tool';

// In registerTools():
this.toolHandlers.set('my_new_tool', {
  name: 'my_new_tool',
  description: `Tool description for the LLM...`,
  inputSchema: myNewToolSchema,
  handler: async (params) => myNewToolHandler(params, this.env, this.state),
});

部署

部署到生产

npm run deploy
# or: npx wrangler deploy --env production

部署到暂存

npm run deploy:staging
# or: npx wrangler deploy --env staging

认证

MCP服务器现在公开了标准 OAuth 2.0(客户端证书授予) 端点,因此工具如 mcp-remote Claude Desktop可以自动获取令牌。

OAuth端点

端点 描述
/.well-known/oauth-authorization-server 发现文档
/register 动态客户端注册(返回短期客户端凭据)
/token 将临时凭据交换为Auth0访问令牌
/sse MCP SSE端点(需要 Authorization: Bearer <token>)

所有OAuth端点都由Worker前置。 /token 使用通过以下方式配置的第一方客户端将请求代理到Auth0 AUTH0_CLIENT_ID / AUTH0_CLIENT_SECRET,所以秘密永远不会暴露给用户。

使用curl进行手动测试

# 1. Register a temporary client (valid for 24h)
REG=$(curl -s -X POST https://mcp-compliance-intelligence-staging.noah-684.workers.dev/register)
CLIENT_ID=$(echo "$REG" | jq -r .client_id)
CLIENT_SECRET=$(echo "$REG" | jq -r .client_secret)

# 2. Exchange for a token
TOKEN=$(curl -s -X POST https://mcp-compliance-intelligence-staging.noah-684.workers.dev/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET" | jq -r .access_token)

# 3. Call the SSE endpoint
curl https://mcp-compliance-intelligence-staging.noah-684.workers.dev/sse \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: text/event-stream"

使用Claude Desktop/mcp远程进行测试

克劳德桌面自动:

  1. 获取发现文档
  2. 呼叫 /register 获取客户端凭据
  3. 通过以下方式进行交换 /token
  4. 连接到 /sse 使用返回的持票人令牌

除了在Claude Desktop中添加MCP服务器URL外,不需要手动设置。


测试

运行单元测试

npm test

在监视模式下运行测试

npm run test:watch

覆盖范围报告

npm run test:coverage

监控

查看日志

npx wrangler tail

分析引擎

所有工具调用和API调用都会记录到Cloudflare Analytics引擎中进行使用分析。

数据集:

  • compliance_mcp_staging -暂存环境
  • compliance_mcp -生产环境

列引用

分析引擎使用固定的列名。以下是每列包含的内容:

列 工具调用(mcp_tool_invocation) API调用(consulta_api_call)
blob1 事件类型: 'mcp_tool_invocation' 事件类型: 'consulta_api_call'
blob2 工具名称(例如。, analyze_control_failure) API端点(例如。, /console/controls)
blob3 用户ID 用户ID
blob4 租户ID 租户ID
blob5 请求参数JSON(截断为1KB) 状态(success/failure)
blob6 响应JSON(截断为1KB) 时间戳(ISO 8601)
blob7 状态(success/failure) -
blob8 时间戳(ISO 8601) -
double1 持续时间(ms) 持续时间(毫秒)
double2 请求大小(字节) HTTP状态码
double3 响应大小(字节) 响应大小(个字节)
index1 状态(success/failure) 状态(success/failure)

查询示例

-- Recent tool invocations with full details
SELECT 
  blob8 as timestamp,
  blob2 as tool_name,
  blob3 as user_id,
  blob4 as tenant_id,
  blob5 as request_params,
  blob6 as response,
  blob7 as status,
  double1 as duration_ms,
  double3 as response_size_bytes
FROM compliance_mcp_staging
WHERE blob1 = 'mcp_tool_invocation'
ORDER BY blob8 DESC
LIMIT 100;

-- Tool usage summary by user
SELECT 
  blob3 as user_id,
  blob2 as tool_name,
  COUNT(*) as call_count,
  AVG(double1) as avg_duration_ms,
  SUM(double3) as total_response_bytes
FROM compliance_mcp_staging
WHERE blob1 = 'mcp_tool_invocation'
GROUP BY blob3, blob2
ORDER BY call_count DESC;

-- Most popular tools
SELECT 
  blob2 as tool_name,
  COUNT(*) as calls,
  AVG(double1) as avg_duration_ms
FROM compliance_mcp_staging
WHERE blob1 = 'mcp_tool_invocation'
GROUP BY blob2
ORDER BY calls DESC;

-- API latency by endpoint
SELECT 
  blob2 as endpoint,
  COUNT(*) as calls,
  AVG(double1) as avg_ms,
  MAX(double1) as max_ms,
  AVG(double3) as avg_response_bytes
FROM compliance_mcp_staging
WHERE blob1 = 'consulta_api_call'
GROUP BY blob2
ORDER BY calls DESC;

-- Failed requests
SELECT 
  blob8 as timestamp,
  blob2 as tool_name,
  blob3 as user_id,
  blob5 as request_params,
  blob6 as error_response
FROM compliance_mcp_staging
WHERE blob1 = 'mcp_tool_invocation'
  AND blob7 = 'failure'
ORDER BY blob8 DESC;

工人日志

对于实时调试和完整的请求/响应数据(未截断),请使用Workers Logs:

  1. 仪表板: 工人和页面→ 您的员工→ 日志选项卡(启用“持久日志”)
  2. CLI: npx wrangler tail --env staging

日志条目被标记以便于过滤:

  • [AUDIT] -带有完整JSON的工具请求/响应
  • [API] -API顾问调用摘要
  • [SECURITY] -安全相关事件(403个错误等)

项目结构

mcp-compliance-intelligence/
├── src/
│   ├── index.ts                  # OAuth provider entry point
│   ├── compliance-mcp.ts         # McpAgent (Durable Object) - registers all tools
│   ├── types.ts                  # TypeScript definitions
│   ├── api/
│   │   └── consulta-client.ts    # Consulta API client with caching
│   ├── auth/
│   │   └── auth0-handler.ts      # Auth0 JWT validation
│   └── tools/
│       ├── get-asset-compliance-status.ts  # Asset compliance with controls
│       ├── list-controls.ts                # Control discovery
│       ├── get-compliance-summary.ts       # Executive compliance overview
│       ├── get-attestation-details.ts      # Attestation details (org-wide & asset-specific)
│       ├── get-deployment-attestations.ts  # Deployment-specific attestations
│       ├── get-pipeline-vulnerabilities.ts # Security scan vulnerabilities
│       ├── get-evidence-chain.ts           # Evidence lineage tracing
│       ├── get-policy-violations.ts        # Policy violations (failing controls)
│       ├── get-compliance-trends.ts        # Compliance trends over time
│       ├── get-deployment-blockers.ts      # Deployment blocking issues
│       ├── get-policy-exceptions.ts        # Policy exceptions/waivers
│       └── resolve-external-artifact.ts    # External artifact deep linking
├── test/                         # Unit and integration tests
├── wrangler.toml                 # Cloudflare configuration
├── package.json
├── tsconfig.json
├── env.example                   # Environment variables template
└── README.md

环境变量

变量 描述 设置方式
CLOUDFLARE_ACCOUNT_ID 帐户ID wrangler.toml
CONSULTA_URL Fianu Consulta API URL rigger.toml
AUTH0_DOMAIN Auth0域 wrangler.toml
AUTH0_ISSUER Auth0颁发者URL wrangler.toml
AUTH0_CLIENT_ID OAuth客户端ID 争论者秘密
AUTH0_CLIENT_SECRET OAuth客户端机密 争论者机密
AUTH0_AUDIENCE API受众(可选) 争论者秘密

安全与合规

租户隔离

每个API请求都包括:

  • Authorization: Bearer <jwt> -Auth0令牌
  • X-Tenant-ID: <tenant_id> -摘自JWT

Consulta API在数据库级别强制执行行级别安全性(RLS)。

审计跟踪

所有事件都记录到分析引擎和工作日志中。看 分析引擎 第节:

  • 列引用和架构
  • SQL查询示例
  • 工人日志过滤

数据保留

  • 会话状态:存储在持久对象中,随会话过期
  • 缓存:KV命名空间中的TTL为5-15分钟
  • 审计日志:分析引擎6个月

故障排除

“令牌验证失败”

  • 检查是否设置了Auth0凭据: npx wrangler secret list
  • 在wrangler.toml中验证AUTH0_DOMAIN和AUTH0_ISSUER
  • 确保令牌来自正确的Auth0租户

“API查询错误:403”

  • 验证用户是否有权访问租户
  • 检查一下 X-Tenant-ID 标头与JWT的租户声明相匹配
  • 确认用户已 read:compliance 范围

“缓存命中率低”

  • 检查KV命名空间是否正确绑定
  • 在wrangler.toml中验证CACHE_KV绑定
  • 查看consulta-client.ts中的缓存TTL值

“找不到耐用对象”

  • 运行迁移: npx wrangler deploy
  • 检查是否在src/index.ts中导出了ComplianceMCP
  • 验证wrangler.toml中的durable_objects绑定

已完成的功能

  • [x] 12个MCP工具 -资产合规性、控制、摘要、证明、部署、漏洞、证据链、策略违规、合规趋势、部署阻止程序、策略异常、外部工件解决
  • [x] OAuth 2.0身份验证 -通过mcp-remote自动处理令牌
  • [x] 执行合规摘要 -风险分类(临界/高/中/低)
  • [x] 脆弱性增量分析 -比较当前与以前的提交,以查找引入的问题
  • [x] 全组织控制状态 -查询一个控件的所有资产的通过/失败率
  • [x] 政策违规作为头等概念 -具有严重性和资产背景的表面故障控制
  • [x] 随时间推移的合规趋势 -智能采样用于趋势分析,无需后端物化视图
  • [x] 部署阻塞分析 -检查是什么阻止了应用程序部署到网关
  • [x] 政策例外 -列出并分析对请求者身份有明确限制的例外/豁免
  • [x] 外部工件深度链接 -将工件/容器URI解析为Fianu仪表板URL
  • [x] LLM优化工具描述 -为AI助手提供明确的指导

路线图

  • []特定于框架的控件过滤(SOC2、ISO、NIST)
  • []证据缺口工具(缺失/陈旧证据检测)
  • []合规热图可视化
  • []缓存Redis事件无效
  • []每个用户的速率限制
  • []将单元测试覆盖率扩展到80%+
  • []用于监控的Grafana仪表板
  • []PagerDuty错误警报

支持

  • 文档: https://docs.fianu.io/mcp/compliance-intelligence
  • 实施计划: /eng-specs/compliance-intelligence-mcp/implementation-plan.md
  • 问题:联系皮特·齐默尔曼或在Fianu仓库中提交文件

许可证

专有-Fianu Labs©2025