AppKit MCP 服务器
使用说明(Markdown 格式)
-
项目简介 AppKit 在其后端组件中实现了基于模型上下文协议(MCP)的服务器能力,核心目标是提供统一的资源(Resources)访问、工具(Tools)注册与执行,以及 Prompt 模板的渲染与管理。通过 JSON-RPC 风格的通信与多传输协议(如 SSE/HTTP 流、STDIO 等)支持,面向 LLM 客户端提供安全、可扩展的上下文服务框架,同时具备会话管理和能力声明能力。
-
主要功能点
- 资源与数据访问:后端托管和管理资源,供 LLM 客户端查询和使用。
- 工具注册与执行:支持注册外部工具并在 MCP 会话中调用,以扩展 LLM 的能力。
- Prompt 渲染与模板:定义和渲染 Prompt 模板,方便自定义的 LLM 交互模式。
- JSON-RPC 风格通信:通过 MCP 标准的请求/响应模式进行交互,保证跨组件的一致性。
- 会话与能力声明:服务器端维护会话状态、能力声明,以及对客户端能力的整合与治理。
- 多传输协议支持:实现对 SSE、WebSocket、流式传输等多种传输协议的适配,提升交互实时性和兼容性。
- 服务器部署结构:在同一个代码库内提供多个 MCP 服务器实例(如用户服务、图表服务、图像生成等),并提供启动、路由、以及生命周期管理。
-
安装步骤
- 克隆仓库并进入项目目录。
- 安装依赖(通常使用 uv 工具链管理工作区依赖)。
- 运行数据库迁移(如有需要,按仓库提供的迁移脚本执行)。
- 启动开发服务器(在本地启动 Reflex/FASTAPI 集成环境,或按项目文档提供的启动命令)。
- 访问 MCP 服务路由(例如通过 /mcp 路径对外暴露的 MCP 应用)。
-
服务器配置(JSON 配置示例,供 MCP 客户端连接 MCP 服务器时参考) 配置说明:JSON 配置用于描述要运行并暴露 MCP 服务的服务器集合;每个服务器包含名称、启动命令及参数等信息。客户端连接 MCP 服务器时需读取此配置中的 server_name、command、args 等字段来建立连接;注意以下信息仅用于客户端参考,实际 MCP 客户端不需要此配置文件。
{ "servers": [ { "name": "user", "command": "uvicorn", "args": ["appkit_assistant.backend.mcp_user_server:app", "--port", "3001"] }, { "name": "charts", "command": "uvicorn", "args": ["appkit_assistant.backend.mcp_charts_server:app", "--port", "3002"] }, { "name": "bpmn", "command": "uvicorn", "args": ["appkit_mcp_bpmn.server:create_app", "--port", "3003"] }, { "name": "image", "command": "uvicorn", "args": ["appkit_mcp_image.server:app", "--port", "3004"] } ] }
配置要点说明(注释性描述,不作为代码实现):
- name:MCP 服务器的唯一标识名称,便于在客户端或运维端区分不同服务。
- command:启动服务器所用的命令(示例中为常见的 Python 服务启动工具)。
- args:启动命令的参数,包含暴露端口、暴露应用入口等信息,以便客户端连接相应的 MCP 服务路由。
-
基本使用方法
- 启动 MCP 服务器集合:按配置将每个 MCP 服务器用相应的命令启动,确保各自监听不同端口并对外暴露 MCP 路由。
- 客户端连接:MCP 客户端通过 MCP 服务器的地址与端口发起请求(通常包含资源读取、工具调用、提示获取等能力)。
- 利用能力:通过服务端声明的能力(模型、工具、提示、会话等)来实现 LLM 的上下文管理和功能扩展。
- 安全与扩展:服务器端实现了会话管理、凭证管理和加密等安全措施,同时支持横向扩展以应对更高并发需求。
-
备注
- 仓库内已有多处 MCP 相关实现与集成点,包含用于 MCP 的路由、会话和服务器生命周期管理的代码,以及对 MCP 服务多路复用的设计思路。
- 具体的部署与接入需结合实际运行环境(容器、云服务、网络策略等)制定细化的配置与运维流程。