项目简介
本项目是基于轻量级Web框架Hono实现的Model Context Protocol (MCP) 无状态服务器示例。它旨在展示如何在Serverless环境(如Cloudflare Workers)中构建一个兼容MCP协议的应用后端,为LLM客户端提供上下文和功能。
主要功能点
- MCP请求处理: 能够接收并处理符合MCP规范的JSON-RPC请求。
- Prompt模板: 注册并提供可供LLM客户端使用的Prompt模板(示例中包含一个简单的问候模板)。
- 外部工具调用: 注册并暴露外部功能作为工具,供LLM调用(示例中包含一个用于测试通知流的工具)。
- 资源访问: 提供托管资源的访问能力(示例中包含一个简单的文本资源)。
- 无状态设计: 设计为无状态,易于在Cloudflare Workers等Serverless平台进行横向扩展。
- HTTP传输: 使用Streamable HTTP作为与MCP客户端通信的传输协议。
安装步骤
- 克隆项目仓库:
git clone https://github.com/mhart/mcp-hono-stateless.git - 进入项目目录:
cd mcp-hono-stateless - 安装项目依赖:
npm install - (可选)如需部署到Cloudflare Workers,请确保已安装Wrangler CLI,并运行:
npm run deploy
服务器配置
该MCP服务器通过HTTP协议暴露服务,通常部署后会有一个可访问的URL端点。MCP客户端需要配置连接到此URL来与服务器通信。
根据项目代码,该服务器声明的名称为 '"stateless-streamable-http-server"'。
一个MCP客户端连接到此服务器时,主要的配置信息是服务器部署后的URL。例如,如果在本地运行(默认端口3000),URL可能是 'http://localhost:3000/mcp';如果部署到Cloudflare Workers,URL可能是 'https://your-worker-subdomain.workers.dev/mcp'。
注意:MCP协议支持多种传输方式(如Stdio, SSE, WebSocket)。本仓库实现了HTTP传输,适用于客户端通过网络URL连接。部分MCP客户端可能主要面向Stdio传输(通过启动本地命令与服务器交互),这种客户端配置方式(涉及'command'和'args')不适用于连接本HTTP服务器实现。请根据您使用的MCP客户端及其支持的传输协议进行相应配置。
基本使用方法
-
启动服务器: 在项目根目录运行:
npm start服务器将在本地启动并监听端口(默认为3000)。
-
使用MCP客户端连接: 使用任何兼容MCP Streamable HTTP传输协议的客户端连接到服务器地址(例如,如果MCP SDK提供了示例客户端):
node node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleStreamableHttp.js connect http://localhost:3000/mcp(请根据实际SDK路径和部署URL调整命令)
-
与服务器交互: 连接成功后,您可以在客户端命令行输入MCP命令,例如:
- 'list-prompts': 查看服务器注册的Prompt模板。
- 'list-tools': 查看服务器注册的工具。
- 'list-resources': 查看服务器注册的资源。
- 'call-tool start-notification-stream': 调用示例工具,开始接收通知。
- 'get-prompt greeting-template {"name": "Alice"}': 获取经过模板渲染的Prompt内容。
通过这些步骤,您可以验证服务器是否正常工作并体验其提供的MCP功能。
信息
分类
AI与计算