使用说明
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/callbackhttps://noah-684.workers.dev/mcp-compliance-intelligence/tokenhttp://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"
]
}
}
}
添加配置后:
- 重新启动克劳德桌面 完全
- Claude Desktop将自动:
- 通过以下方式注册临时客户端
/register - 通过以下方式将其兑换为代币
/token - 连接到
/sse随着Authorization: Bearer <token>
- 通过以下方式注册临时客户端
- 试着问:“有哪些合规工具可用?”或“获取资产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"
]
}
}
}
添加配置后:
- 重新启动游标 完全
- 光标将自动:
- 通过以下方式注册临时客户端
/register - 通过以下方式将其兑换为代币
/token - 连接到
/sse随着Authorization: Bearer <token>
- 通过以下方式注册临时客户端
- MCP服务器应在Cursor的MCP面板中显示为“已连接”
- 可用工具将出现在MCP工具列表中
替代方案:UI配置
您还可以通过Cursor的UI进行配置:
- 打开设置(
Cmd/Ctrl + ,) >Features>MCP - 点击
+ Add New MCP Server - 配置:
- 名字:
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
两种操作模式:
- 组织范围模式 (仅限controlPath):显示控件的所有资产的通过/失败状态
- 资产特定模式 (带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
追踪笔记、证明或犯罪的证据链(谱系)。显示证据如何从起源(触发)通过事件(数据收集)流向证明(控制评估)。
三种操作模式:
- 直接UUID:提供
noteUuid追踪特定笔记 - 资产+承诺:提供
assetIdentifier+commit对于特定的承诺 - 仅限资产:提供公正
assetIdentifier-自动解析为默认分支上的最新提交
参数:
noteUuid-特定注释(证明、事件或事务)的UUIDassetIdentifier-资产/回购名称(例如,“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)
- 目标登机口信息
canDeployboolean-如果所有必需的控件都通过,则为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远程进行测试
克劳德桌面自动:
- 获取发现文档
- 呼叫
/register获取客户端凭据 - 通过以下方式进行交换
/token - 连接到
/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:
- 仪表板: 工人和页面→ 您的员工→ 日志选项卡(启用“持久日志”)
- 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