SMCP-安全MCP平台(POC)
   
Cloudflare基础设施上安全、可扩展的模型上下文协议(MCP)服务器托管的概念验证
目录
概述
该POC侧重于为MCP服务器构建一个安全的、基于Cloudflare的托管环境,作为未来安全MCP(SMCP)平台的基础。成熟的平台将包括一个经过审查的市场、学习资源和强大的数据基础设施,但该POC专门验证了核心托管功能。
*有关适合利益相关者和潜在贡献者的全面概述,请参阅 执行摘要。有关快速参考和利益相关者讨论,请参阅 POC摘要.*
项目目标
- 目标1: 为MCP服务器创建安全的、基于Cloudflare的托管环境
- 目标2: 展示托管基础架构的高可用性和可扩展性
- 目标3: 为托管第三方MCP服务器建立安全模式和最佳实践
主要功能(计划中)
- MCP服务器托管: 使用流式HTTP传输在Cloudflare Workers上部署和运行MCP服务器
- 多租户隔离: 使用V8隔离在不同MCP服务器实例之间进行安全隔离
- 五层安全模型: 具有网络、应用程序、运行时、数据和AI生成代码保护的全面安全
- 双重身份验证: 用于人工用户的OAuth 2.1和用于服务到服务通信的API密钥
- 自动缩放: 基于需求和使用模式的自动扩展
- 健康监测: 对托管服务器进行实时监控和健康检查
- 全局边缘部署: 通过Cloudflare的边缘网络进行全球分发
技术栈
- 基础设施: Cloudflare Workers、Cloudflare KV、Cloudflare R2、Cloudflare DNS
- 运行时间: Cloudflare Workers运行时上的JavaScript/TypeScript
- 协议: 具有流式HTTP传输的模型上下文协议(MCP)2025-03-26
- 安全: OAuth 2.1、API密钥认证、AES-256-GCM加密、JWT验证
- 开发工具: TypeScript、Node.js、Wrangler CLI、Zod(验证)、JOSE(JWT)、Git
项目状态
当前阶段: 基础设施开发(第3-4周) 时间线: 8周POC开发周期
已完成的任务✅
- SMCP-001-01 -MCP协议规范研究
- ✅ 分析了MCP服务器运行时需求 - ✅ 记录的协议通信模式 - ✅ 已确定Cloudflare Workers兼容性限制 - ✅ 将流式HTTP确立为最佳传输机制
- SMCP-001-02 -Cloudflare服务研究
- ✅ 评估了Cloudflare Workers的功能和限制 - ✅ 研究了Cloudflare KV、R2和DNS集成选项 - ✅ 记录服务限制和定价考虑因素 - ✅ 经过验证的成本效益和技术兼容性
- SMCP-001-03 -建筑设计
- ✅ 设计了基于V8隔离的多租户托管架构 - ✅ 定义了具有租户范围访问控制的5层安全隔离模式 - ✅ 计划使用Cloudflare的本地功能进行自动扩展和负载平衡 - ✅ 创建了全面的系统架构图和数据流模式
- SMCP-001-04 -安全策略定义(扩展)
- ✅ 定义了全面的5层安全模型(网络、应用程序、运行时、数据、人工智能生成的代码) - ✅ 通过V8隔离隔离建立了多租户隔离要求 - ✅ 设计了符合MCP协议的OAuth 2.1+neneneba API密钥认证策略 - ✅ 使用Cloudflare加密环境变量进行计划秘密管理 - ✅ 创建了具有实现模式的详细安全文档 - ✅ 扩展:研究了人工智能辅助编码的安全漏洞和威胁 - ✅ 扩展:增强到5层安全模型,包括AI生成的代码安全 - ✅ 扩展:制定了全面的AI编码安全缓解策略
- SMCP-001-05 -开发环境设置
- ✅ 为Cloudflare Workers开发安装并配置了Wrangler CLI v4.16.1 - ✅ 设置具有严格模式和全面类型检查的TypeScript项目 - ✅ 根据既定的架构模式创建了多租户项目结构 - ✅ 使用TypeScript集成配置ESLint、Prettier和Jest测试框架 - ✅ 实现了具有5层安全模型结构的基本Worker模板 - ✅ 为有状态的MCP服务器管理创建了持久对象(McpServerInstance) - ✅ 设置开发脚本、环境配置和机密管理模板 - ✅ 使用成功的Wrangler开发服务器验证功能性本地开发环境
当前任务🔄
- SMCP-002-01 -Cloudflare Workers基本设置(下)
项目阶段
- 第一阶段:探索与规划 (第1-2周)-✅ *完成*
- 第二阶段:基础设施建设 (第3-4周)- *当前*
- 第三阶段:高级功能 (第5-6周)
- 第4阶段:测试与验证 (第7-8周)
建筑
高级体系结构
┌─────────────────┐ Streamable HTTP ┌──────────────────┐
│ MCP Client │ ─────────────────► │ Cloudflare Worker│
│ (Claude, etc) │ POST: JSON-RPC │ MCP Server │
│ │ GET: SSE Stream │ (Single Endpoint)│
└─────────────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ Cloudflare │
│ Services │
│ (KV, R2, D1) │
└──────────────────┘传输协议
- 主要运输: 可流式HTTP(MCP 2025-03-26)
- 沟通: 通过单个HTTP端点实现双向
- 身份验证: OAuth 2.1承载令牌或API密钥身份验证
- 会话管理:
Mcp-Session-Idheaders+Cloudflare KV,具有租户隔离功能 - 实时: 用于流式传输的服务器发送事件(SSE)
- 可恢复性: 用于连接恢复的事件ID
安全架构
- 五层安全模型: 网络(DDoS、SSL、WAF)→ 应用程序(OAuth 2.1,验证)→ 运行时(V8隔离)→ 数据(加密、命名空间)→ 人工智能生成的代码(验证、监控)
- 多租户隔离: 具有V8隔离分隔和存储命名空间的专用Worker实例
- 身份验证方法: OAuth 2.1,带针对人类用户的PKCE,针对服务到服务的API密钥
- 秘密管理: 加密环境变量和KV存储,具有自动密钥轮换功能
有关包括多租户隔离、安全模式和自动扩展策略在内的详细架构设计,请参阅: docs/architecture-design.md
研究成果
✅ MCP与Cloudflare Workers的兼容性
关键发现: MCP使用Streamable HTTP传输与Cloudflare Workers完全兼容。
兼容功能
- HTTP传输: 原生支持HTTP请求/响应
- JSON-RPC 2.0: 内置JSON处理功能
- 服务器发送的事件: 实时流媒体支持
- 会话管理: 通过集管和KV存储
- 全球优势: 自动全球部署
约束与适应
- stdio传输: 不兼容(不支持子流程)
- 本地文件: 必须使用Cloudflare存储服务(KV、R2、DNS)
- 内存限制: 每个Worker实例128 MB
- CPU时间: 默认30秒,最多可配置5分钟
有关MCP研究的详细结果,请参阅: docs/mcp-protocol-research.md
✅ Cloudflare服务生态系统
关键发现: Cloudflare为MCP托管提供了一个全面、经济高效的基础设施堆栈。
服务能力
- 工人: 128MB内存,5分钟CPU时间,全局边缘部署
- KV: 用于会话管理的低延迟键值存储
- R2: S3兼容对象存储,零出口费用
- DNS: 具有自动证书管理的自定义域
成本分析
- POC等级: 10台并发MCP服务器每月约6美元
- 生产规模: 100台并发MCP服务器每月约34美元
- 免费等级: 适用于开发和测试的慷慨限制
实施策略
- 使用Workers进行HTTP传输的MCP服务器托管
- 通过KV实现会话管理
Mcp-Session-Id标头 - 利用R2满足更大的数据存储需求
- 使用自定义域作为干净的MCP服务器端点
- 在Worker和存储级别实施多租户隔离
有关Cloudflare的详细研究结果,请参阅: docs/cloudflare-services-research.md
✅ 多租户建筑设计
关键发现: 基于V8隔离的架构为多租户MCP托管提供了强大的安全性和可扩展性。
建筑亮点
- 多租户隔离: V8隔离与存储命名空间隔离
- 五层安全: 网络、应用程序、运行时、数据和AI生成的代码安全层
- 自动缩放策略: Cloudflare的本地扩展与地理分布
- 性能优化: 冷启动缓解和智能缓存
实现模式
- 每个MCP服务器具有专用实例的工人级租户隔离
- 基于KV的会话管理,具有租户范围的访问控制
- 使用桶级或基于前缀的隔离进行R2存储分离
- 具有自动故障转移和延迟优化的全局负载平衡
有关详细的架构设计和实现模式,请参阅: docs/architecture-design.md
✅ 综合安全战略
关键发现: 5层安全模型为多租户MCP托管提供企业级保护。
安全亮点
- OAuth 2.1合规性: 完全符合PKCE的MCP协议,动态客户端注册,元数据发现
- 双重身份验证: 用于人工用户的OAuth 2.1,用于服务到服务通信的API密钥
- 多租户隔离: 使用V8隔离、存储命名空间和租户范围的访问控制实现完全分离
- 秘密管理: 加密环境变量,带AES-256-GCM的KV存储,自动密钥轮换
- AI生成的代码安全: 人工智能辅助开发的验证、监控和安全提示实践
实施策略
- 使用Cloudflare Workers实现OAuth 2.1授权服务器
- 使用具有格式的租户范围的API密钥
smcp__ - 利用Zod进行输入验证,利用JOSE进行JWT处理
- 实施全面的审计日志记录,保留30天
- 对管理员、MCP用户和只读角色使用基于角色的访问控制
有关详细的安全策略和实施模式,请参阅: docs/security-strategy.md
发展
先决条件
- Node.js 18+(用于开发工具)-✅ *使用Node.js v22.14.0进行测试*
- Cloudflare帐户(用于部署)
- Wrangler CLI(Cloudflare Workers开发)-✅ *已安装v4.16.1*
- Git(版本控制)
注: 此项目与兼容 asdf Node.js的版本管理器。当前的设置既适用于直接Node.js安装,也适用于asdf托管版本。
开发设置
# Clone the repository
git clone https://github.com/Ryan-Spooner/POC-SMCP.git
cd POC-SMCP
# Install dependencies
npm install
# Build the project
npm run build
# Run tests (20/20 passing)
npm test
# Start local development server (runs on http://127.0.0.1:8787)
npm run dev
# Deploy to Cloudflare (requires authentication)
npm run deploy当前开发环境状况
✅ 全功能开发环境
- 启用严格模式的TypeScript编译
- ESLint和Prettier已配置并正常工作
- 通过20/20测试的Jest测试框架
- Wrangler CLI v4.16.1已配置为本地开发
- 具有路由和CORS支持的基本Worker模板
- MCP服务器实例的持久对象实现
- MCP协议和安全的全面类型定义
可用脚本
开发脚本
npm run build-将TypeScript编译为JavaScriptnpm run dev-启动Wrangler开发服务器npm run deploy-部署到Cloudflare Workersnpm run clean-删除已编译的输出目录
测试脚本
npm test-运行Jest测试套件(包括类型检查)npm run test:watch-在监视模式下运行测试npm run test:coverage-使用覆盖率报告运行测试
代码质量脚本
npm run lint-在TypeScript文件上运行ESLintnpm run lint:fix-自动修复ESLint问题npm run format-使用Prettier格式化代码npm run format:check-检查代码格式而不进行更改npm run type-check-无需编译即可运行TypeScript类型检查
自动脚本(自动运行)
npm run prebuild-在构建之前运行(清理dist目录)npm run pretest-测试前运行(类型检查)
项目结构
POC-SMCP/
├── docs/ # Project documentation
│ ├── mcp-protocol-research.md
│ ├── cloudflare-services-research.md
│ ├── architecture-design.md
│ ├── security-strategy.md
│ ├── ai-assisted-coding-security.md
│ └── executive-summary.md
├── memory-bank/ # AI assistant context files
│ ├── activeContext.md
│ ├── decisionLog.md
│ ├── dependencies.md
│ ├── productContext.md
│ ├── product-backlog.md
│ ├── progress.md
│ └── systemPatterns.md
├── src/ # TypeScript source code
│ ├── workers/ # Cloudflare Workers
│ │ ├── mcp-host-worker.ts
│ │ └── mcp-server-instance.ts
│ ├── types/ # TypeScript type definitions
│ │ └── mcp-types.ts
│ ├── utils/ # Utility functions
│ │ ├── crypto-utils.ts
│ │ ├── response-utils.ts
│ │ └── audit-logger.ts
│ ├── middleware/ # Request middleware
│ │ ├── auth-middleware.ts
│ │ └── validation-middleware.ts
│ ├── auth/ # Authentication logic (planned)
│ ├── storage/ # Storage abstractions (planned)
│ └── monitoring/ # Monitoring and logging (planned)
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ │ └── crypto-utils.test.ts
│ ├── integration/ # Integration tests (planned)
│ ├── e2e/ # End-to-end tests (planned)
│ └── setup.ts # Test configuration
├── config/ # Configuration files (planned)
├── scripts/ # Build and deployment scripts (planned)
├── dist/ # Compiled JavaScript (generated)
├── .augment-guidelines # AI assistant rules
├── package.json # Node.js dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── wrangler.toml # Cloudflare Workers configuration
├── jest.config.js # Jest testing configuration
├── eslint.config.js # ESLint configuration
├── .prettierrc # Prettier configuration
├── .env.example # Environment variables template
├── projectBrief.md # Detailed project requirements
└── README.md # This file开发工作流程
- 研究与规划 (第一阶段)✅ 完成
- 基础设施开发 (第2阶段)-当前阶段
- 高级功能 (第3阶段)-自动扩展、监控、部署
- 测试与验证 (第4阶段)——安全测试、性能验证
贡献
这是一个目前正在积极开发的概念验证项目。一旦初步实施完成,将欢迎捐款。
发展现状
- 第一阶段: 研究与规划(✅ 已完成–5/5项任务已完成)
- 第二阶段: 基础设施开发(进行中——开发环境准备就绪)
- 贡献: 尚未接受外部捐款
- 时间线: 第二阶段完成后欢迎捐款
未来贡献领域
- MCP服务器实现
- 增强的安全性
- 性能优化
- 文档改进
- 测试和验证
许可证
该项目根据MIT许可证获得许可——请参阅 许可证 文件以获取详细信息。
文档
- 执行摘要:
docs/executive-summary.md-利益相关者和潜在贡献者的全面概述 - POC摘要:
docs/poc-summary.md-简明的项目概述,便于快速参考和利益相关者讨论 - 项目简介:
projectBrief.md-详细的项目要求和范围 - MCP研究:
docs/mcp-protocol-research.md-方案分析和结果 - Cloudflare研究:
docs/cloudflare-services-research.md-基础设施分析和成本建模 - 建筑设计:
docs/architecture-design.md-多租户托管架构和安全模式 - 安全策略:
docs/security-strategy.md-全面的安全模型和实施模式 - AI编码安全:
docs/ai-assisted-coding-security.md-人工智能辅助编码漏洞和缓解策略 - 任务积压:
memory-bank/product-backlog.md-计划开发任务
支持与联系
- 项目负责人: 雷内·奎罗斯
- 项目负责人: Ryan Spooner
- 电子邮件: support@ischyolabs.com
- 存储库:
致谢
- 模型上下文协议: Anthropic 以及MCP社区
- Cloudflare员工: Cloudflare 的 用于边缘计算平台
- AI助理: 用于发展援助和文件编制的增强代理
