MCP服务器工作流
这是一个模型上下文协议(MCP)服务器,通过一个简单的API为城市提供天气信息。
特性
- 此服务器将工作流公开为代理可以使用的工具。在这种情况下,天气工作流作为一组工具公开:
- 暴露a get-weather 获取任何城市天气数据的工具 - 提供 check-weather 提示模板,便于与LLM集成 - 使用HTTP/SSE传输与客户端通信
工作流体系结构
时中 get-weather 工具被调用时,它会触发一个工作流,该工作流:
- 将城市名称作为输入
- 查询OpenWeatherMap服务以获取该位置的当前天气数据
- 将原始天气数据传递给LLM进行解释
- 返回当前天气状况的友好、自然语言描述
这种架构允许准确的天气数据检索和智能处理,以更对话和易于理解的格式提供天气信息。
关于当前实施情况的说明
由于MCP协议实现的一些技术挑战,我们提供了两种方法:
- 原始MCP服务器 -TypeScript在
src目录,可能与当前SDK版本存在一些兼容性问题。
- 简化的直接API -根目录中的普通JavaScript实现(
direct-server.js和direct-client.js)它提供了一个简单的RESTful端点,而不使用MCP协议。
对于即时功能,我们建议使用简化的直接API方法。
先决条件
- Node.js 18或更高版本
- npm或纱线
安装
- 克隆此存储库
- 安装依赖项:
npm install用法-简化的API方法
- 启动服务器:
node direct-server.js- 服务器将在端口3000上启动,并提供:
- 天气API: http://localhost:3000/api/weather?city=New%20York - 健康检查: http://localhost:3000/health
- 运行客户端示例:
node direct-client.js用法-MCP方法
这种方法需要构建TypeScript代码,可能存在一些兼容性问题:
- 构建项目:
npm run build- 启动服务器:
npm start- 服务器将在端口3000上启动:
- SSE 端点 : http://localhost:3000/sse - 消息端点: http://localhost:3000/messages?connectionId=YOUR_CONNECTION_ID - 健康检查: http://localhost:3000/health
了解连接ID
连接ID是连接到SSE端点时分配给每个客户端会话的唯一标识符。它是保持双向沟通的关键机制:
- 当客户端连接到
/sse端点,服务器生成一个唯一的连接ID - 此ID在初始SSE响应中返回给客户端
- 客户端必须将此ID作为查询参数包含在对的所有后续请求中
/messages端点 - 这允许服务器将响应路由回正确的客户端的SSE连接
例如,如果您的连接ID为 1742761520489,您可以调用工具:
http://localhost:3000/messages?connectionId=1742761520489api参考
直接API
GET /api/weather
获取指定城市的天气信息。
参数:
city(string):获取天气的城市名称。
退货:
- 带有天气信息的JSON响应。
MCP工具
get-weather
获取指定城市的天气信息。
参数:
city(string):获取天气的城市名称。
退货:
- 天气信息以文本形式呈现。
MCP提示
check-weather
要求LLM检查和总结天气信息的提示模板。
参数:
city(string):要查看天气的城市名称。
许可证
麻省理工学院

