自定义模型上下文协议(MCP)服务器,使FedRAMP/docs存储库可以通过FRMR感知工具进行查询。该服务器扫描FRMR JSON数据集和支持的markdown指南,提供结构化的分析工具,并可选择克隆和缓存上游存储库。
使用Claude Desktop查看FedRAMP Docs MCP Server的实际操作:
https://github.com/user-attachments/assets/6c96ace6-cbd8-4479-9aa9-4474643362c4
npm install
npm run build
node dist/index.js
要全局安装并使用fedramp-docs-mcp命令:
npm install -g .
fedramp-docs-mcp
注意: 如果您希望在MCP客户端配置中使用fedramp-docs-mcp作为命令(例如Claude Desktop、Goose等),则需要全局安装。或者,您可以使用构建服务器的完整路径:node /path/to/fedramp-docs-mcp/dist/index.js
启动时,服务器确保FedRAMP/docs存储库可用,索引FRMR JSON和markdown内容,然后开始通过MCP标准I/O提供请求。
环境变量控制存储库发现和索引行为:
| 变量 | 默认值 | 描述 |
|---|---|---|
FEDRAMP_DOCS_PATH | ~/.cache/fedramp-docs | 已存在的FedRAMP/docs检出路径。 |
FEDRAMP_DOCS_REMOTE | https://github.com/FedRAMP/docs | 克隆时使用的远程地址。 |
FEDRAMP_DOCS_BRANCH | main | 克隆时检出的分支。 |
FEDRAMP_DOCS_ALLOW_AUTO_CLONE | true | 当路径缺失时自动克隆。 |
FEDRAMP_DOCS_AUTO_UPDATE | true | 自动检查并获取存储库更新。 |
FEDRAMP_DOCS_UPDATE_CHECK_HOURS | 24 | 自动更新检查之间的小时数(当启用自动更新时)。 |
FEDRAMP_DOCS_INDEX_PERSIST | true | 将内存中的索引持久化到~/.cache/fedramp-docs/index-v1.json。 |
如果您维护一个本地克隆,请设置FEDRAMP_DOCS_PATH。否则,留空并允许服务器创建浅层缓存副本。
服务器包含自动更新检查以保持FedRAMP文档的最新状态:
自动更新(默认行为):
手动更新:
update_repository工具强制立即更新。禁用自动更新:
{
"mcpServers": {
"fedramp-docs": {
"command": "fedramp-docs-mcp",
"env": {
"FEDRAMP_DOCS_AUTO_UPDATE": "false"
}
}
}
}
自定义更新频率:
{
"env": {
"FEDRAMP_DOCS_UPDATE_CHECK_HOURS": "6"
}
}
所有工具遵循产品规范中描述的错误模型,并响应JSON负载。关键工具包括:
list_frmr_documents — 列出索引的FRMR JSON文档。get_frmr_document — 返回文档的完整JSON和摘要。list_ksi / get_ksi — 过滤和检查关键安全指标。list_controls — 扁平化FRMR → NIST控制映射。search_markdown / read_markdown — 全文搜索和检索,附带摘要。list_versions — 按FRMR文档类型整理版本元数据。diff_frmr — 使用ID感知比较两个FRMR数据集的结构化差异。grep_controls_in_markdown — 查找markdown指南中的控制引用。get_significant_change_guidance — 跨FRMR和markdown整理的重大变更参考。health_check — 确认服务器成功索引并暴露存储库路径。update_repository — 强制更新缓存的FedRAMP文档到最新版本。参见src/tools/了解使用Zod实现的具体模式。每个工具返回成功的对象或包含code、message和可选hint的error负载。
当使用MCP服务器与Claude Desktop或其他MCP客户端时,这里是一些示例查询:
获取KSI信息:
"列出所有可用的FedRAMP文档"
→ 使用list_frmr_documents
"显示关键安全指标"
→ 使用get_frmr_document,路径为'FRMR.KSI.key-security-indicators.json'
"KSI类别是什么?"
→ 解析KSI文档以显示IAM、CNA、MLA等类别。
搜索文档:
"搜索有关持续监控的信息"
→ 使用search_markdown,查询词为'continuous monitoring'
"查找关于事件响应的指南"
→ 使用search_markdown,查询词为'incident response'
处理控制:
"列出MAS中映射的所有控制"
→ 使用list_controls
"查找引用AC-2的所有markdown文件"
→ 使用grep_controls_in_markdown,控制为'AC-2'
分析变化:
"最新KSI发布有什么新内容?"
→ 使用list_versions,然后使用diff_frmr比较版本
"显示重大变更指南"
→ 使用get_significant_change_guidance
FedRAMP Docs MCP服务器可以与任何兼容MCP的客户端一起工作。以下是使用最广泛且可靠的客户端的设置说明。
推荐客户端:
将服务器添加到您的Claude Desktop配置文件中:
位置: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"fedramp-docs": {
"command": "fedramp-docs-mcp",
"env": {
"FEDRAMP_DOCS_PATH": "/path/to/FedRAMP/docs"
}
}
}
}
更新配置后,重启Claude Desktop。FedRAMP Docs工具将在您的对话中出现。
Claude Code是Anthropic的官方CLI工具,内置了MCP支持。
# 添加FedRAMP Docs MCP服务器
claude mcp add --transport stdio fedramp-docs fedramp-docs-mcp
# 使用完整路径
claude mcp add --transport stdio fedramp-docs /path/to/node/bin/fedramp-docs-mcp
# 列出配置的服务器
claude mcp list
# 如需移除
claude mcp remove fedramp-docs
Claude Code支持三种配置范围:
.mcp.json~/.claude/settings.local.json.claude/settings.local.json示例.mcp.json(项目范围,可版本控制):
{
"mcpServers": {
"fedramp-docs": {
"command": "fedramp-docs-mcp",
"args": [],
"env": {
"FEDRAMP_DOCS_AUTO_UPDATE": "true"
}
}
}
}
带有环境变量扩展:
{
"mcpServers": {
"fedramp-docs": {
"command": "fedramp-docs-mcp",
"args": [],
"env": {
"FEDRAMP_DOCS_PATH": "${HOME}/fedramp-docs",
"FEDRAMP_DOCS_AUTO_UPDATE": "true"
}
}
}
}
测试:
/mcp命令进行交互式管理--mcp-debug标志进行故障排除:claude --mcp-debugclaude mcp list注意: 项目范围配置在.mcp.json中,使团队成员能够访问相同的MCP工具。
LM Studio(v0.3.17+)具有原生MCP支持,非常适合隐私导向的工作流程,使用本地模型效果很好。
配置文件位置:
~/.lmstudio/mcp.json基本配置:
{
"mcpServers": {
"fedramp-docs": {
"command": "fedramp-docs-mcp",
"args": [],
"env": {
"FEDRAMP_DOCS_AUTO_UPDATE": "true"
}
}
}
}
使用完整路径(如果找不到命令时推荐):
{
"mcpServers": {
"fedramp-docs": {
"command": "/path/to/node/bin/fedramp-docs-mcp",
"args": [],
"env": {
"FEDRAMP_DOCS_AUTO_UPDATE": "true",
"FEDRAMP_DOCS_PATH": "/path/to/FedRAMP/docs"
}
}
}
}
注意: 需要全局安装(npm install -g .)或使用可执行文件的完整路径。找到您的路径:which fedramp-docs-mcp
OpenCode是一款强大的AI编码代理,专为终端设计,具有原生MCP支持。
配置文件位置:
~/.config/opencode/opencode.jsonopencode.json基本配置:
{
"mcp": {
"fedramp-docs": {
"type": "local",
"command": ["fedramp-docs-mcp"],
"enabled": true
}
}
}
使用完整路径:
{
"mcp": {
"fedramp-docs": {
"type": "local",
"command": ["/path/to/node/bin/fedramp-docs-mcp"],
"enabled": true
}
}
}
使用环境变量:
{
"mcp": {
"fedramp-docs": {
"type": "local",
"command": ["fedramp-docs-mcp"],
"enabled": true,
"env": {
"FEDRAMP_DOCS_AUTO_UPDATE": "true",
"FEDRAMP_DOCS_PATH": "/path/to/FedRAMP/docs"
}
}
}
}
注意: MCP服务器添加到您的上下文中,因此只需启用您需要的服务器。使用"enabled": false暂时禁用服务器而不删除它。
Goose是Block的开源AI代理。您可以使用以下方法之一添加FedRAMP Docs MCP服务器:
goose configure
然后选择:
添加扩展命令行扩展FedRAMP Docsfedramp-docs-mcp300FedRAMP DocsSTDIOfedramp-docs-mcp300FEDRAMP_DOCS_PATH:/path/to/FedRAMP/docsFEDRAMP_DOCS_AUTO_UPDATE:true编辑~/.config/goose/config.yaml(Linux/macOS)或%USERPROFILE%\.config\goose\config.yaml(Windows):
extensions:
fedramp-docs:
name: FedRAMP Docs
cmd: fedramp-docs-mcp
enabled: true
type: stdio
timeout: 300
envs:
FEDRAMP_DOCS_PATH: "/path/to/FedRAMP/docs" # 可选
FEDRAMP_DOCS_AUTO_UPDATE: "true" # 可选
配置后,重新启动Goose或重新加载扩展。您可以通过询问:“有哪些FedRAMP工具可用?”来测试。
注意: Goose的MCP支持仍在成熟中,可能会遇到从stdio服务器发现工具的问题。如果遇到工具发现问题,请考虑使用Claude Desktop、Claude Code CLI、LM Studio或OpenCode。
用于调试和直接测试服务器:
npx @modelcontextprotocol/inspector node dist/index.js
使用tsx进行快速迭代,无需构建:
npm run dev
这将直接运行TypeScript源代码,在更改时自动重新编译。
存储库包含基于Vitest的单元和合同测试,使用小型固定样本:
npm test
测试设置FEDRAMP_DOCS_PATH为tests/fixtures/repo,确保索引器、搜索和差异逻辑确定性地运行,无需真实的FedRAMP存储库。
代码库使用:
"type": "module"在package.json中)moduleResolution: "NodeNext")src/
index.ts # MCP引导
repo.ts # 存储库发现和克隆
indexer.ts # FRMR + markdown索引逻辑
frmr.ts # 以FRMR为中心的帮助程序
search.ts # markdown搜索 + 聚合
diff.ts # 结构化FRMR差异引擎
tools/ # 单个MCP工具处理器
固定样本位于tests/fixtures下,而Vitest规格位于tests/下。
错误:无法找到模块'@modelcontextprotocol/sdk'
确保安装了正确的SDK版本:
npm install @modelcontextprotocol/sdk@^1.20.0
错误:模块未找到或导入错误
该项目使用ES模块和NodeNext解析。确保您使用的是Node.js 18+,并且您的TypeScript配置匹配:
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext"
}
}
错误:REPO_CLONE_FAILED
服务器无法克隆FedRAMP文档存储库。检查:
FEDRAMP_DOCS_PATH为现有的本地克隆,或