🚀 FedRAMP 20x MCP 服务器
FedRAMP 20x MCP 服务器是一个基于 Model Context Protocol(MCP)的服务器,它提供对 FedRAMP 20x 安全要求和控制的访问,并提供以 Azure 优先的指导。该服务器从官方的 FedRAMP 文档仓库加载数据,支持通过控制、家族或关键字查询要求,同时提供了丰富的工具和提示,帮助用户进行 FedRAMP 20x 合规性的规划、实施、监控和审计。
🚀 快速开始
前提条件
- Python 3.10 或更高版本
- pip(包含在 Python 中)
- Python 必须在系统的 PATH 环境变量中
安装步骤
git clone https://github.com/KevinRabun/FedRAMP20xMCP.git
cd FedRAMP20xMCP
python -m venv .venv
source .venv/bin/activate
pip install -e .
uv pip install -e .
依赖项
mcp>=1.2.0 - Model Context Protocol SDK
httpx>=0.27.0 - 用于获取 FedRAMP 数据的 HTTP 客户端
openpyxl>=3.1.0 - 用于导出功能的 Excel 文件生成库
python-docx>=1.1.0 - 用于 KSI 规范的 Word 文档生成库
tree-sitter>=0.21.0 - 用于代码分析的 AST 解析库
tree-sitter-python>=0.21.0 - tree-sitter 的 Python 语言绑定
tree-sitter-c-sharp>=0.21.0 - tree-sitter 的 C# 语言绑定
tree-sitter-java>=0.21.0 - tree-sitter 的 Java 语言绑定
tree-sitter-javascript>=0.21.0 - tree-sitter 的 JavaScript/TypeScript 语言绑定
故障排除
如果遇到问题,请参阅 高级设置指南 获取详细的故障排除步骤。
✨ 主要特性
完整的数据覆盖
服务器提供对 FedRAMP 20x 文档中 271 项要求(199 项 FRR + 72 项 KSI)和 50 项定义(FRD)的访问。
- FedRAMP 要求(FRR):涵盖 10 个家族的 199 项要求,如授权数据共享(ADS)、协作持续监控(CCM)等。
- 关键安全指标(KSI):涵盖 11 个家族的 72 项指标,如架构、功能和资源(AFR)、持续证据交付(CED)等。
- FedRAMP 定义(FRD):50 项官方术语定义。
丰富的功能特性
- 自动化证据收集:为所有 65 个活跃的 KSI 提供完整的自动化指导,包括 Azure 原生服务、即用型查询和工件规范。
- 多样化的查询方式:支持按控制、家族或关键字查询要求,以及查询 FedRAMP 定义和关键安全指标。
- 基于模式的架构:使用统一的基于模式的架构进行所有 FedRAMP 20x 合规性分析,支持 14 种语言,具有一致性、可维护性、性能和可扩展性等优点。
- 代码分析工具:提供 AST 驱动的 FedRAMP 合规性扫描,支持 6 种语言(Python、C#、Java、TypeScript/JavaScript、Bicep、Terraform),可对基础设施代码、应用程序代码和 CI/CD 管道进行准确的语义分析。
- 安全工具:提供 CVE 漏洞检查和依赖项文件检查等安全工具。
- 审计工具:提供 KSI 覆盖摘要和状态检查等审计工具。
- KSI 状态工具:跟踪所有 KSI 家族的实施状态。
集成分析能力
提供结合关键安全指标(KSI)和 FedRAMP 修订要求(FRR)的集成分析能力,通过多个示例展示了如何同时使用 KSI 代码分析器和 FRR 分析工具进行全面的安全评估,实现战术代码级发现和战略合规性覆盖的结合。
📦 安装指南
前提条件
- Python 3.10 或更高版本
- pip(包含在 Python 中)
- Python 必须在系统的 PATH 环境变量中
安装步骤
git clone https://github.com/KevinRabun/FedRAMP20xMCP.git
cd FedRAMP20xMCP
python -m venv .venv
source .venv/bin/activate
pip install -e .
uv pip install -e .
依赖项
mcp>=1.2.0 - Model Context Protocol SDK
httpx>=0.27.0 - 用于获取 FedRAMP 数据的 HTTP 客户端
openpyxl>=3.1.0 - 用于导出功能的 Excel 文件生成库
python-docx>=1.1.0 - 用于 KSI 规范的 Word 文档生成库
tree-sitter>=0.21.0 - 用于代码分析的 AST 解析库
tree-sitter-python>=0.21.0 - tree-sitter 的 Python 语言绑定
tree-sitter-c-sharp>=0.21.0 - tree-sitter 的 C# 语言绑定
tree-sitter-java>=0.21.0 - tree-sitter 的 Java 语言绑定
tree-sitter-javascript>=0.21.0 - tree-sitter 的 JavaScript/TypeScript 语言绑定
故障排除
如果遇到问题,请参阅 高级设置指南 获取详细的故障排除步骤。
💻 使用示例
与 VS Code 和 GitHub Copilot 配合使用
- 安装 VS Code MCP 扩展(如果尚未安装)
- 配置 MCP 服务器 - 选择以下范围之一:
- 选项 A:工作区级别(推荐用于共享)
在项目的
.vscode/mcp.json 中添加以下内容:{
"servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
如果 Python 不在 PATH 中,请更新命令以使用虚拟环境的 Python:{
"servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
- 选项 B:用户级别(全局适用于所有项目)
在 VS Code 用户设置 (
settings.json) 中添加以下内容:{
"github.copilot.chat.mcp.servers": {
"fedramp-20x-mcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "fedramp_20x_mcp"]
}
}
}
安全注意事项:请勿在配置中使用 "alwaysAllow"。VS Code 将在首次使用时提示您授予权限,这是一种安全最佳实践。
- 可选:配置 VS Code 设置:将
.vscode/settings.json.example 复制到 .vscode/settings.json
- 重新加载 VS Code 以激活 MCP 服务器
- 授予权限:当 VS Code 提示时(仅首次使用)
- 与 GitHub Copilot Chat 配合使用:
- 打开 Copilot Chat
- 询问有关 FedRAMP 20x 要求的问题
- 使用
@workspace 查询特定的控制或家族
- 访问所有 48 个工具和 15 个全面的提示
与 Claude Desktop 配合使用
将此服务器添加到您的 Claude Desktop 配置中(在 macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,在 Windows 上为 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"fedramp-20x": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/FedRAMP20xMCP",
"run",
"fedramp-20x-mcp"
]
}
}
}
注意:请将 /absolute/path/to/FedRAMP20xMCP 替换为您的实际安装路径。
与 MCP 检查器配合使用
使用 MCP 检查器测试服务器:
npx @modelcontextprotocol/inspector python -m fedramp_20x_mcp
代码分析示例
result = analyze_frr_code(
frr_id="FRR-VDR-01",
code="""import subprocess
subprocess.run(['trivy', 'image', 'myapp:latest'])
""",
language="python"
)
result = analyze_frr_code(
frr_id="FRR-ADS-01",
code="""resource apiManagement 'Microsoft.ApiManagement/service@2023-05-01-preview' = {
name: 'evidence-api'
properties: {
publisherEmail: 'admin@contoso.com'
publisherName: 'Contoso'
}
}""",
language="bicep"
)
📚 详细文档
可用工具
服务器提供 48 个工具,分为以下类别:
- 核心工具(11 个):查询要求、定义、KSI 和 KSI 证据自动化
- FRR 分析工具(7 个):根据 FedRAMP 要求(FRR)分析代码,进行全面的合规性检查
- 文档工具(3 个):搜索和检索 FedRAMP 文档
- 增强工具(7 个):提供实施示例、依赖项、工作量估计和架构验证等功能
- 导出工具(3 个):支持 Excel/CSV 导出和 KSI 规范生成
- 规划工具(1 个):生成战略实施问题
- 证据收集自动化工具(3 个):提供基础设施代码、收集代码和架构指导
- 实施映射工具(2 个):提供 KSI 家族矩阵和分步实施清单
- 代码分析工具(3 个):使用 tree-sitter 进行 AST 驱动的 FedRAMP 合规性扫描,支持 6 种语言
- 安全工具(2 个):检查包和依赖项文件的 CVE 漏洞
- 审计工具(2 个):提供 KSI 覆盖摘要和状态检查
- KSI 状态工具(1 个):跟踪所有 KSI 家族的实施状态
工具详细说明
get_control
获取特定 FedRAMP 要求或控制的详细信息。
- 参数:
control_id(字符串):要求标识符(例如,"FRD-ALL-01","KSI-AFR-01")
list_family_controls
列出特定家族中的所有要求。
- 参数:
family(字符串):家族标识符(例如,"FRD","KSI","MAS")
search_requirements
搜索包含特定关键字的要求。
- 参数:
keywords(字符串):在要求文本中搜索的关键字
get_definition
获取特定术语的 FedRAMP 定义。
- 参数:
term(字符串):要查找的术语(例如,"vulnerability","cloud service offering")
list_definitions
列出所有 FedRAMP 定义及其术语。
search_definitions
按关键字搜索 FedRAMP 定义。
get_ksi
获取特定关键安全指标的详细信息。
- 参数:
ksi_id(字符串):KSI 标识符(例如,"KSI-AFR-01")
list_ksi
列出所有关键安全指标。
get_ksi_evidence_automation
获取特定 KSI 的全面证据自动化建议。所有 65 个活跃的 KSI 都包括完整的自动化证据收集指导。
- 参数:
ksi_id(字符串):KSI 标识符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:全面的证据自动化指导,包括 Azure 服务、收集方法、存储要求、FRR-ADS 集成、实施细节和代码示例等。
get_ksi_evidence_queries
获取特定 KSI 的即用型证据收集查询。
- 参数:
ksi_id(字符串):KSI 标识符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:用于从 Azure 收集证据的生产就绪查询,包括 KQL 查询、Azure 资源图查询、REST API 调用、Azure CLI 脚本和 PowerShell cmdlet 等。
get_ksi_evidence_artifacts
获取特定 KSI 要收集的证据工件的规范。
- 参数:
ksi_id(字符串):KSI 标识符(例如,"KSI-IAM-01","KSI-CNA-01")
- 返回值:详细的工件规范,包括工件名称、收集方法、文件格式、更新频率、保留要求和存储建议等。
analyze_frr_code
根据特定的 FedRAMP 要求(FRR)分析代码的合规性问题。
- 参数:
frr_id(字符串):FRR 标识符(例如,"FRR-VDR-01","FRR-RSC-01","FRR-ADS-01")
code(字符串):要分析的代码
language(字符串):语言/平台 - "python","csharp","java","typescript","bicep","terraform","github-actions","azure-pipelines","gitlab-ci"
file_path(字符串,可选):用于上下文的文件路径
- 返回值:分析结果,包括发现、严重程度级别和补救建议
analyze_all_frrs
根据所有 199 个 FedRAMP 要求分析代码,进行全面的合规性检查。
- 参数:
code(字符串):要分析的代码
language(字符串):语言/平台(python,csharp,java,typescript,bicep,terraform,github-actions,azure-pipelines,gitlab-ci)
file_path(字符串,可选):用于上下文的文件路径
- 返回值:按 FRR 家族分组的完整分析结果,包括摘要统计信息
analyze_frr_family
根据特定 FRR 家族中的所有要求分析代码。
- 参数:
family(字符串):家族代码 - "VDR","RSC","UCM","SCN","ADS","CCM","MAS","ICP","FSI","PVA"
code(字符串):要分析的代码
language(字符串):语言/平台
file_path(字符串,可选):用于上下文的文件路径
- 返回值:指定家族中所有要求的分析结果
list_frrs_by_family
列出特定家族中所有 FRR 要求及其实施状态。
- 参数:
family(字符串):家族代码(VDR,RSC,UCM,SCN,ADS,CCM,MAS,ICP,FSI,PVA)
- 返回值:家族中所有 FRR 的列表,包括 FRR ID 和名称、实施状态、代码可检测性、NIST 800-53 控制映射和影响级别等。
get_frr_metadata
获取特定 FRR 的详细元数据,包括 NIST 控制、相关 KSI 和检测策略。
- 参数:
frr_id(字符串):FRR 标识符(例如,"FRR-VDR-01")
- 返回值:全面的 FRR 元数据,包括 FRR 详细信息、NIST 800-53 控制、相关 KSI、影响级别、检测策略和实施指南等。
get_frr_evidence_automation
获取特定 FRR 的证据自动化建议。
- 参数:
frr_id(字符串):FRR 标识符(例如,"FRR-VDR-01","FRR-ADS-01")
- 返回值:全面的证据自动化指导,包括证据类型、自动化可行性、Azure 服务、收集方法、存储要求、证据工件、实施步骤、代码示例、更新频率和责任方等。
get_frr_implementation_status
获取所有 FRR 分析器的实施状态摘要。
- 参数:无
- 返回值:实施状态摘要,包括总 FRR 数量、按家族的实施情况、状态细分、代码可检测性、基于流程的要求和覆盖统计信息等。
compare_with_rev4
比较 FedRAMP 20x 与 Rev 4/Rev 5 要求的特定领域。
- 参数:
requirement_area(字符串):要比较的领域(例如,"continuous monitoring","vulnerability management","authorization boundary","evidence collection","change management","incident response")
get_implementation_examples
获取特定要求的实际实施示例。
- 参数:
requirement_id(字符串):要求标识符(例如,"KSI-IAM-01","FRR-VDR-01")
check_requirement_dependencies
检查 FedRAMP 20x 要求之间的依赖关系。
- 参数:
requirement_id(字符串):要检查依赖关系的要求标识符
estimate_implementation_effort
估计特定要求的实施工作量。
- 参数:
requirement_id(字符串):要估计工作量的要求标识符
get_cloud_native_guidance
获取特定 Azure 和多云技术的云原生实施指南。
- 参数:
technology(字符串):要获取指南的技术(例如,"kubernetes","containers","serverless","terraform")
validate_architecture
根据 FedRAMP 20x 要求验证系统架构。
- 参数:
architecture_description(字符串):要验证的架构描述
search_documentation
在 FedRAMP 官方文档的 Markdown 文件中搜索特定关键字。
- 参数:
keywords(字符串):要在文档中搜索的关键字
- 返回值:匹配的文档部分,包含所有可用 Markdown 文件的上下文
get_documentation_file
获取特定 FedRAMP 文档文件的完整内容。
- 参数:
filename(字符串):Markdown 文件名(例如,"overview.md","key-security-indicators.md")
- 返回值:文档文件的完整 Markdown 内容
list_documentation_files
列出所有可用的 FedRAMP 文档文件。
- 返回值:从仓库中动态发现的所有 Markdown 文档文件的完整列表
export_to_excel
将 FedRAMP 20x 数据导出到 Excel 文件,用于离线分析和报告。
- 参数:
export_type(字符串):要导出的数据类型:
"ksi" - 所有 72 个关键安全指标
"all_requirements" - 所有家族的 329 个要求
"definitions" - 所有 FedRAMP 术语定义
output_path(字符串,可选):自定义输出路径。如果未提供,则保存到下载文件夹
- 返回值:生成的 Excel 文件的路径,具有专业的格式(样式化的标题、边框、冻结窗格)
export_to_csv
将 FedRAMP 20x 数据导出到 CSV 文件,用于数据分析和电子表格导入。
- 参数:
export_type(字符串):要导出的数据类型:
"ksi" - 所有 72 个关键安全指标
"all_requirements" - 所有家族的 329 个要求
"definitions" - 所有 FedRAMP 术语定义
output_path(字符串,可选):自定义输出路径。如果未提供,则保存到下载文件夹
- 返回值:生成的 CSV 文件的路径
generate_ksi_specification
生成 KSI 的全面产品规范 Word 文档,指导工程实施和规划。
- 参数:
ksi_id(字符串):KSI 标识符(例如,"KSI-AFR-01")
evidence_collection_strategy(字符串):用户提供的高级证据收集策略描述
output_path(字符串,可选):自定义输出路径。如果未提供,则保存到下载文件夹
- 返回值:生成的 Word (.docx) 文档的路径
generate_implementation_questions
为产品经理和工程师生成战略面试问题,促进深思熟虑的规划讨论。
- 参数:
requirement_id(字符串):要求或 KSI 标识符(例如,"FRR-CCM-01","KSI-IAM-01")
- 返回值:按利益相关者角色组织的全面战略问题集
analyze_infrastructure_code
分析基础设施即代码(IaC)文件的 FedRAMP 20x 合规性问题,并提供可操作的建议。
- 参数:
code(字符串):要分析的 IaC 代码内容
file_type(字符串):IaC 文件类型 - "bicep" 或 "terraform"
file_path(字符串):正在分析的文件的路径(用于报告)
context(字符串,可选):有关代码的额外上下文(例如,PR 描述)
- 返回值:
findings:合规性发现的数组,包含要求 ID、严重程度、描述和建议
summary:高/中/低优先级问题和良好实践的计数
pr_comment:适用于 GitHub/ADO PR 评论的格式化 Markdown
analyze_application_code
分析应用程序代码的 FedRAMP 20x 安全合规性问题。
- 参数:
code(字符串):要分析的应用程序代码内容
language(字符串):编程语言 - "python","csharp","java","typescript",或 "javascript"
file_path(字符串):正在分析的文件的路径(用于报告)
dependencies(数组,可选):项目依赖项列表(例如,["flask==2.3.0", "requests==2.31.0"])
- 返回值:
findings:安全发现的数组(与基础设施分析结构相同)
summary:高/中/低优先级问题和良好实践的计数
pr_comment:用于 PR 审查的格式化 Markdown
dependencies_checked:分析的依赖项数量
analyze_cicd_pipeline
分析 CI/CD 管道配置的 FedRAMP 20x DevSecOps 合规性。
- 参数:
code(字符串):管道配置内容(YAML/JSON)
pipeline_type(字符串):管道类型 - "github-actions","azure-pipelines","gitlab-ci",或 "generic"
file_path(字符串):管道文件的路径(用于报告)
- 返回值:
findings:DevSecOps 发现的数组(与代码分析结构相同)
summary:高/中/低优先级问题和良好实践的计数
pr_comment:用于 PR 审查的格式化 Markdown
pipeline_type:检测到的管道平台
get_infrastructure_code_for_ksi
生成用于自动化证据收集基础设施的基础设施即代码模板(Bicep 或 Terraform)。
- 参数:
ksi_id(字符串):关键安全指标标识符(例如,"KSI-IAM-01","KSI-MLA-01")
infrastructure_type(字符串):"bicep" 或 "terraform"
- 返回值:用于部署证据收集基础设施的完整 IaC 模板
get_evidence_collection_code
生成用于以编程方式收集和存储 KSI 证据的业务逻辑代码(Python、C#、PowerShell、Java 或 TypeScript)。
- 参数:
ksi_id(字符串):关键安全指标标识符(例如,"KSI-IAM-01")
language(字符串):"python","csharp","powershell","java",或 "typescript"(也接受 "javascript")
- 返回值:包含身份验证、证据收集和存储的完整代码示例
get_evidence_automation_architecture
获取自动化证据收集系统的全面架构指南。
- 参数:
scope(字符串):架构范围 - "minimal","single-ksi","category",或 "all"
- 返回值:包含组件、数据流和实施指南的完整架构模式
可用提示
服务器提供 18 个用于 FedRAMP 合规性工作流的提示:
- 综合规划与评估提示:包括初始评估路线图、差距分析、供应商评估、从 Rev 5 迁移到 20x 的计划等。
- 实施与自动化提示:提供 KSI 实施优先级、Azure KSI 自动化、API 设计指南、授权边界审查等提示。
- 监控与合规提示:包括持续监控设置、季度审查清单、漏洞修复时间表等提示。
- 审计与文档提示:提供审计准备、ATO 包清单、文档生成器等提示。
- FRR 合规与代码审查提示:包括 FRR 代码审查、FRR 家族评估、FRR 实施路线图等提示。
综合 KSI + FRR 分析示例
通过多个示例展示了如何结合关键安全指标(KSI)和 FedRAMP 修订要求(FRR)进行综合分析,实现战术代码级发现和战略合规性覆盖的结合,提供了全面的安全评估和证据收集建议。
推荐工作流程
- 开发阶段:使用 KSI 分析器进行战术代码审查
factory.analyze(ksi_id, code, language, file_path) 进行特定的安全检查
analyze_frr_code(frr_id, code, language, file_path) 进行要求验证
- 预提交阶段:根据关键 FRR 家族进行分析
analyze_frr_family("VDR", code, language, file_path) 进行漏洞管理检查
analyze_frr_family("RSC", code, language, file_path) 进行安全配置检查
- CI/CD 管道:在部署前进行全面的合规性扫描
factory.analyze_all_ksis(code, language, file_path) 检查所有 KSI
analyze_all_frrs(code, language, file_path) 检查所有 FRR
- 季度审查:进行合规性跟踪和报告
get_ksi_implementation_status() 跟踪 KSI 进度
get_frr_implementation_status() 跟踪 FRR 合规性
- 为利益相关者生成综合合规性报告
🔧 技术细节
基于模式的分析架构
服务器使用统一的基于模式的架构进行所有 FedRAMP 20x 合规性分析:
- 架构概述:
- 381 个 YAML 模式:涵盖 23 个要求家族
- 单一分析引擎:
GenericPatternAnalyzer 取代 271 个传统分析器
- 支持 14 种语言:Python、C#、Java、TypeScript、JavaScript、Bicep、Terraform、GitHub Actions、Azure Pipelines、GitLab CI、YAML、JSON、Dockerfile、GitHub
- 基于 AST 的检测:使用 tree-sitter 进行准确检测,必要时使用正则表达式回退
- 声明式模式:易于维护和扩展
- 模式覆盖范围:
- 应用家族:涵盖 17 个家族,如 ADS、AFR、CCM 等
- 基础设施家族:涵盖 6 个家族,如 COMMON、FSI、ICP 等
- 完整的 KSI 和 FRR 映射:所有 72 个 KSI 和 199 个 FRR 都通过模式定义覆盖
- 工作原理:
- 模式加载:从
data/patterns/ 目录加载 YAML 模式
- 分析执行:使用 tree-sitter AST 解析和模式匹配分析代码
- 发现生成:模式生成具有严重性、描述和补救措施的发现
- 结果聚合:发现按要求家族分组并去重
- 优势:
- 一致性:所有语言使用相同的检测逻辑
- 可维护性:在 YAML 中更新模式,而不是 Python 代码
- 性能:模式编译和缓存优化分析速度
- 可扩展性:无需更改代码即可添加新模式
- 准确性:基于 AST 的检测减少误报
重要说明:OSCAL 格式
FedRAMP 20x 要求授权数据共享使用机器可读格式(JSON、XML 或结构化数据)。OSCAL 未在 FedRAMP 20x 要求中提及,它是一个 NIST 标准,可以作为一种潜在的实现方法。实际要求只是“机器可读”,您可以根据实现需求使用自定义 JSON/XML 或 OSCAL。
📄 许可证
本项目采用 MIT 许可证,请参阅 LICENSE 文件了解详细信息。
本项目是开源的,欢迎贡献!请参阅 CONTRIBUTING.md 获取指南。
FedRAMP 数据由美国总务管理局作为公共领域内容提供。
参考资料