remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Supports serverless deployment to AWS Lambda with state persistence across function invocations.
Supports deployment as a scalable application with multiple replicas for high availability and load balancing.
Enables authorized access to Notion databases and pages with capabilities for searching, reading, writing, and deleting content with granular permission scopes.
MCPToolKit - 生产就绪的 MCP 服务器框架
我们解决的问题
1. 在生产环境中扩展 MCP 服务器
标准的 FastMCP 框架在生产环境中面临着重大挑战:
- 状态管理:传统的 FastMCP 服务器在内存中维护状态,导致水平扩展困难
- 无服务器限制:无服务器环境需要无状态架构,而 FastMCP 的设计初衷并非如此
- 多租户支持:在同一服务器上运行多个租户需要复杂的会话管理
2. 委托 OAuth 支持
管理 MCP 服务器的身份验证非常复杂:
- 工具级身份验证:用户仅应在工具需要时进行身份验证
- 第三方集成:支持 Notion、Slack 等服务的 OAuth 需要复杂的令牌管理
- 安全性:在保持安全性的同时管理多个身份验证流程是一项挑战
我们的解决方案
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 相同。
This server cannot be installed
MCP 服务器的无服务器、多租户实现,在 Vercel 上以流体计算模式运行,允许多个用户连接到同一个端点,同时通过 Redis 保持会话状态。