MCPToolKit - 生产就绪的 MCP 服务器框架
我们解决的问题
1. 在生产环境中扩展 MCP 服务器
标准的 FastMCP 框架在生产环境中面临着重大挑战:
状态管理:传统的 FastMCP 服务器在内存中维护状态,导致水平扩展困难
无服务器限制:无服务器环境需要无状态架构,而 FastMCP 的设计初衷并非如此
多租户支持:在同一服务器上运行多个租户需要复杂的会话管理
2. 委托 OAuth 支持
管理 MCP 服务器的身份验证非常复杂:
工具级身份验证:用户仅应在工具需要时进行身份验证
第三方集成:支持 Notion、Slack 等服务的 OAuth 需要复杂的令牌管理
安全性:在保持安全性的同时管理多个身份验证流程是一项挑战
Related MCP server: Vercel MCP
我们的解决方案
MCPToolKit 提供了一个生产就绪的框架,解决了这些问题,同时保持与 FastMCP 完全兼容。其工作原理如下:
此架构图说明了 MCPToolKit 如何实现生产就绪的 MCP 服务器:
LLM 客户端(例如 Claude、ChatGPT、Cursor)向 MCP 服务器发起请求。这些客户端可以是任何需要与 MCP 工具交互的应用程序。
负载均衡器将传入的请求分布在多个 MCP 服务器实例之间,从而实现水平扩展和高可用性。
MCP 服务器实例(1 至 N)负责处理工具执行和资源访问。每个实例:
维护自己的 Redis 状态以实现会话持久性
可以独立处理请求
共享相同的代码库和配置
可以根据需求水平扩展
Redis作为中央状态存储,提供:
服务器重启后会话状态仍然保持
OAuth 令牌存储和管理
服务器实例之间的共享状态
启用无状态服务器实例
MCP 授权服务器(以粉色突出显示)管理所有与 OAuth 相关的操作:
使用 PKCE 实现 OAuth 2.1 以实现安全身份验证
处理令牌发行和刷新
管理同意流程
集中所有服务器实例的 OAuth 逻辑
OAuth 提供商(例如 Notion、Slack)是用户可以进行身份验证的第三方服务。授权服务器安全地管理这些连接。
此架构可实现:
通过无状态服务器实例实现真正的水平扩展
集中式 OAuth 管理
通过多个服务器实例实现高可用性
安全令牌管理
跨会话的一致用户体验
从 FastMCP 迁移
从 FastMCP 迁移到 MCPToolKit 非常简单。以下是如何更新您现有的 FastMCP 服务器:
迁移仅需要进行一些简单的更改:
更改导入语句
设置
REDIS_URL环境变量(生产环境必需)就是这样!您现有的所有工具、资源和提示都将像以前一样继续使用
对于本地开发,您可以设置环境变量:
对于无服务器部署,您还需要更新部署配置:
主要特点:
Redis 支持的状态:会话状态在服务器重启和函数调用时持续存在
无服务器就绪:专为 Vercel、AWS Lambda 和其他无服务器平台设计
水平扩展:状态持久性可实现真正的水平扩展
多租户支持:多个用户可以通过隔离会话连接到同一端点
2. 委托 OAuth 支持
主要特点:
惰性身份验证:用户仅在工具需要时才进行身份验证
提供商支持:内置对常见提供商的支持(Notion、Slack 等)
令牌管理:自动令牌刷新和存储
安全性:安全的令牌存储和传输
粒度范围:对 OAuth 权限的细粒度控制
同意管理:具有逻辑权限分组的用户友好型同意屏幕
人机循环:高风险行动的可选批准要求
OAuth 流程
MCPToolKit 使用 PKCE 实现安全的 OAuth 2.1 流程:
LLM 客户端向 MCP 服务器发起请求
服务器响应 401 未授权并重定向链接
用户登录 OAuth 提供商并授予请求的范围
服务器向客户端返回授权码
客户端交换访问+刷新令牌的代码
令牌用于后续请求
MCP服务器调用第三方服务
授权服务器架构
MCPToolKit 支持两种授权服务器部署模型:
嵌入式授权服务器
MCP 服务器同时充当身份提供者和依赖方
直接处理登录、同意和令牌发放
管理令牌生命周期、刷新逻辑和撤销
最适合独立应用程序
外部授权服务器
MCP 服务器作为依赖方
将 OAuth 流程委托给外部服务(例如 Stytch)
专注于工具级访问控制
最适合与现有身份基础设施集成
两种型号均支持:
带有 PKCE 的 OAuth 2.1
动态客户端注册
授权服务器元数据(RFC 8414)
基于资源/操作的自定义范围
最终用户同意管理
每个提供商的细粒度范围定义
组织级可见性和控制
隐含权限(用户只能授予他们拥有的权限)
同意和访问管理
MCPToolKit 提供全面的同意和访问管理:
组织级可见性:查看整个组织授权的所有连接应用程序
细粒度权限:查看哪些成员已授予访问权限以及他们授权的范围
访问管理:随时撤销特定用户或应用程序的访问权限
用户友好的同意:以逻辑分组呈现 RBAC 权限
默示权限:用户只能授予应用程序与其拥有的权限相同的权限
人机循环:高风险行动需要人工批准
高风险行动保护
建筑学
部署选项
Kubernetes
无服务器(Vercel)
快速入门
安装 MCPToolKit:
创建您的服务器:
部署到您首选的平台(Kubernetes、Vercel 等)
要求
Python 3.9+
Redis 实例(用于会话状态持久化)
OAuth 提供商凭证(如果使用委托身份验证)
执照
与 MCP Python SDK 相同。