Open MCP App 服务器实现
使用说明
- 项目简介
- 该仓库实现了一个 MCP Apps 兼容的服务器端框架,核心功能包括:管理 UI 资源、注册并执行工具、渲染与返回资源内容,以及与客户端通过 MCP 协议进行通信。还提供了对实验性特性、WebSocket 实时通信与跨主机场景的支持与测试用例。
- 主要功能点
- 资源与工具管理:可以注册 UI 资源、绑定工具并配置输入结构、显示模式和 UI 关联。资源和工具的元数据支持跨平台对齐(文本、MIME 类型、UI 关联等)。
- MCP 协议实现与路由:实现初始化、工具调用、资源读取等核心 MCP 请求/响应,遵循 ext-apps 规范的接口风格,并提供工具/资源的元数据以供客户端渲染。
- 跨主机支持与实验性扩展:区分 MCP Apps 端和客户端(ChatGPT 等)的差异,提供 exp 命名空间的实验性 API,支持 KV、Blob、文件 I/O 等在 Creature 主机上的扩展能力(在受支持环境下通过 RPC 与主机交互)。
- 测试与合规性:包含 MCP Apps 合规性测试用例,覆盖资源与工具的列出、读取、调用等行为,辅助验证实现的规范兼容性。
- 运行时服务器与传输:内置对普通 HTTP 传输的支持,并具备对 WebSocket/多传输的扩展能力,方便在需要实时通信的 UI 场景中使用。
- 安装步骤
-
- 在支持的 Node.js 环境中安装依赖
-
- 根据应用需求创建具体的 MCP App 实例(在代码中 using open-mcp-app/server 提供的 createApp / AppAPI)
-
- 启动 MCP 服务端(通常通过调用 App.start(),并在外部包裹成可执行的服务进程)
-
- 客户端(MCP 客户端,如 Creature/Claude/ChatGPT 等)按照 MCP Apps 规范配置连接参数并启动与服务端的通信
-
- 服务器配置(MCP 客户端需要的启动信息,示例为 JSON 格式)
- serverName: open-mcp-app
- command: node
- args: ["dist/server/index.js", "--port", "3000"]
- 注释:serverName 指定服务器标识,用于客户端识别与协商;command/args 指定启动服务器的命令及参数,客户端据此启动并连接到 MCP 服务。具体可执行形式取决于打包/部署方式,示例给出常见的 Node.js 部署场景。MCP 客户端本身并不需要理解内部实现细节,只需要知道启动命令和服务器地址即可。
- 基本使用方法
- 启动服务后,客户端通过 MCP 协议发送初始化请求,服务器返回协议版本、服务器信息和能力声明。
- 通过注册资源与工具,将 UI、交互与数据能力暴露给客户端,工具调用可返回文本用于 AI 上下文、结构化内容用于 UI 渲染。
- 如需本地开发测试,可使用仓库提供的示例工具和测试用例进行对接与断言,确保行为符合 MCP Apps 规范。