SuperAPI AI 工具集

mcp_plexus

MCP Plexus 是一个安全的多租户 MCP(Model Context Protocol)服务器框架,基于 Python 构建,底层使用 FastMCP 2.7 库。它旨在帮助开发者轻松部署可扩展、安全的多租户 MCP 服务器,通过 OAuth 2.1 与外部服务无缝集成,并支持工具的 API 密钥管理。该框架允许定义相互隔离的租户环境,每个租户可向大语言模型和 AI 智能体暴露定制化的工具、资源和提示词。核心特性包括:健壮的多租户支持(单次部署托管多个客户或组织,各自拥有独立数据和工具访问权限)、简化的外部服务集成(安全连接 GitHub、Google API 等 OAuth 2.1 保护的服务)、用户级持久访问(持久存储外部 OAuth 令牌,减少重复认证)、工具 API 密钥管理(安全存储并注入密钥),以及基于 FastMCP 的标准化可扩展能力。

访问官网

工具介绍

用途

MCP Plexus 是一个面向现代 AI 应用的安全、多租户 MCP 服务器框架。它基于 Python 构建,底层采用 jlowin/fastmcp(FastMCP 2.7)库,用于帮助开发者部署多租户 MCP 服务器,使其能够通过 OAuth 2.1 与外部服务集成,并管理工具的 API 密钥访问。

MCP Plexus 扩展了 FastMCP 2.7 的能力,提供结构化环境来创建复杂、多租户的 AI 后端系统。它允许定义相互隔离的环境(租户),每个租户可向大语言模型(LLM)和 AI 智能体暴露定制化的工具、资源和提示词集合。

主要能力

  • 健壮的多租户支持:在单次部署中托管多个客户或组织,每个租户拥有独立的数据和工具访问权限。租户通过 URL 路径识别(如 /{entity_id}/mcp/),并支持租户级 MCP 会话管理(当前默认使用 Redis)。租户级工具可见性和提供方配置为规划中功能。
  • 简化的外部服务集成:通过内置流程管理,安全地将 MCP 工具连接到受 OAuth 2.1 保护的外部服务(如 GitHub、Google API 等)。
  • 用户级持久访问:宿主应用可通过安全端点(/{entity_id}/plexus-auth/register-user)向 Plexus 注册其用户,获取 plexus_user_auth_token,将宿主应用用户与 Plexus 内的持久身份关联,从而持久存储外部 OAuth 令牌和 API 密钥,减少重复认证。
  • 工具 API 密钥管理:通过 @requires_api_key(provider_name, key_name_display, instructions) 装饰器,在密钥未存储时通过结构化 MCP 错误提示用户提交 API 密钥;密钥使用 PLEXUS_ENCRYPTION_KEY 加密存储,并在运行时解密注入工具函数。用户可通过端点 /{entity_id}/plexus-services/api-keys 提交密钥。
  • 标准 MCP 服务器能力:完整支持使用 FastMCP 的 Pythonic 装饰器和类定义 MCP 工具、资源和提示词(如 PLEXUS_SERVER_INSTANCE.tool());原生 Streamable HTTP 传输;在工具/资源/提示词中可访问 PlexusContext(扩展自 fastmcp.Context),用于日志、会话数据以及访问已认证客户端或 API 密钥。
  • 可配置存储:默认使用 SQLite 持久存储 Plexus 用户认证令牌、用户级外部 OAuth 令牌、API 密钥、外部 OAuth 提供方配置、租户配置和用户提交的 API 密钥。MCP 会话管理当前需要 Redis(计划增强 SQLite 会话存储)。
  • (进行中)内部 OAuth 2.1 提供方:包含使 MCP Plexus 自身作为 OAuth 2.1 授权服务器的基础元素和桩端点;完整实现(动态客户端注册、内部客户端用户同意、完整令牌管理)为未来目标。

使用方式

环境要求

  • Redis(当前 MCP 会话管理必需)
  • 命令行/终端访问权限

安装与设置

  1. 克隆仓库:
    git clone https://github.com/Super-I-Tech/mcp_plexus mcp-plexus
    cd mcp-plexus
    
  2. 创建并激活虚拟环境:
    python -m venv venv
    
    Windows:.\venv\Scripts\activate macOS/Linux:source venv/bin/activate
  3. 安装依赖:
    pip install -r requirements.txt
    
  4. 配置环境变量(.env 文件):在项目根目录创建 mcp-plexus/.env,可参考 .env.example。关键变量包括:
    • HOST_APP_REGISTRATION_SECRET:关键项。宿主应用注册用户时必须提供的强唯一密钥(通过 X-Host-App-Secret 头)。生产或共享部署中务必更改默认值。
    • PLEXUS_ENCRYPTION_KEY:关键项。用于加密 API 密钥和外部 OAuth 令牌等敏感数据的 Fernet 密钥。生成方式:
      python -c "from mcp_plexus.utils import generate_fernet_key; print(generate_fernet_key())"
      
      将输出放入 .env,妥善保管并备份;丢失将无法访问加密数据。
    • STORAGE_BACKEND:设为 "sqlite"(默认)或 "redis",用于大多数持久存储。注意:MCP 会话管理当前必须使用 Redis,无论此设置如何。
    • SQLITE_DB_PATH:SQLite 数据库文件路径(如 ./mcp_plexus_data.sqlite3)。
    • REDIS_HOST、REDIS_PORT、REDIS_DB、REDIS_PASSWORD(可选)、REDIS_SSL(可选):Redis 连接信息(MCP 会话必需)。
    • DEBUG_MODE:开发时设为 True(更详细日志、Uvicorn 重载)。
    • PLEXUS_FASTMCP_LOG_LEVEL:FastMCP 组件日志级别(如 DEBUG、INFO)。
    • ADMIN_API_KEY:访问管理端点(如管理租户、外部 OAuth 提供方)的密钥,需设置强值。

架构概览

MCP Plexus 作为 ASGI 应用(通常用 Uvicorn 运行),充当 MCP 客户端与底层 FastMCP 服务器实例之间的中间层。

  • FastAPI:用于主 Web 应用路由、处理 HTTP 请求和提供管理 API 端点。
  • FastMCP(jlowin/fastmcp):共享的 FastMCP 实例作为核心引擎,通过 Streamable HTTP 处理 MCP 协议消息(工具、资源、提示词)。
  • Plexus 核心:
    • 租户管理:从 URL 路径识别租户,确保租户配置被遵守(完整配置进行中,当前为数据库支持的验证)。
    • 会话管理(PlexusSessionManager):管理 MCP 会话数据(如 Mcp-Session-Id),当前使用 Redis 存储会话状态,将会话与 entity_id 及可用的 persistent_user_id 关联。
    • Plexus 用户认证:处理宿主应用用户注册,管理 plexus_user_auth_token 以关联持久用户 ID。
    • OAuth 流程编排:管理需要访问外部服务的工具的 OAuth 2.1 授权码流程,包括安全令牌存储和刷新(刷新进行中)。
    • API 密钥服务:管理用户提供的工具 API 密钥的安全存储与检索。
    • PlexusContext:注入 MCP 工具的增强上下文对象,提供 entity_id、persistent_user_id、会话数据以及获取已认证 HTTP 客户端或 API 密钥的辅助方法。
  • 存储:
    • Redis(会话必需):当前用于临时 MCP 会话数据。
    • SQLite(持久数据默认):用于存储 Plexus 用户认证令牌、用户级外部 OAuth 令牌、API 密钥、外部 OAuth 提供方配置和租户元数据。

适用场景

  • 需要为多个客户或组织提供隔离 AI 工具环境的 SaaS 平台。
  • 需要将 LLM 或 AI 智能体安全连接到 GitHub、Google API 等 OAuth 保护服务的应用。
  • 需要持久存储用户外部服务令牌、减少重复登录的宿主应用。
  • 需要为工具安全管理和注入 API 密钥的 MCP 服务器部署。

限制

  • MCP 会话管理当前必须使用 Redis,SQLite 会话存储为计划增强。
  • 租户级工具可见性和提供方配置为规划中功能。
  • 内部 OAuth 2.1 提供方为进行中状态,完整实现(动态客户端注册、用户同意、完整令牌管理)为未来目标。
  • OAuth 令牌刷新为进行中状态。
  • 其他未在资料中明确说明的功能、收费、价格、平台或效果暂未提供。