项目简介
此仓库不仅是一个交互式AI聊天应用的前端,它还包含一个基于Model Context Protocol (MCP) 构建的独立服务器实现。该MCP服务器的核心功能是向LLM客户端提供一个名为 'fetch-weather' 的工具,允许LLM通过标准化的JSON-RPC协议查询全球任意城市的实时天气信息。这使得AI应用能够轻松集成外部实时数据,增强其功能。
主要功能点
- 实时天气查询工具: 服务器提供 'fetch-weather' 工具,LLM客户端可以调用它来获取指定城市的当前天气,包括温度、降水、云量和风速等。
- 遵循MCP协议: 服务器严格遵循Model Context Protocol (MCP) 标准,通过JSON-RPC协议与客户端通信,确保互操作性和可扩展性。
- 能力声明: 服务器会向连接的LLM客户端声明其提供的工具,包括工具名称、描述及其所需的参数(如城市名称)。
- 稳健的数据处理: 内部使用Zod库进行API响应验证,并包含错误处理机制,以确保天气数据查询的可靠性。
- 独立运行: MCP服务器可以作为一个独立的进程运行,通过标准输入/输出 (Stdio) 与MCP客户端进行通信。
安装步骤
要运行此MCP服务器,您需要安装Node.js环境。
-
克隆仓库:
git clone https://github.com/MmmarRTha/echobot-ai-app.git cd echobot-ai-app -
安装依赖:
npm install -
启动MCP服务器: MCP服务器代码位于 'src/mcp-server.ts'。您可以使用 'ts-node' 直接运行它。
npx ts-node src/mcp-server.ts(请确保您的环境中安装了 'ts-node',如果没有,可以通过 'npm install -g ts-node' 进行全局安装,或通过 'npm install --save-dev ts-node' 作为开发依赖安装。)
服务器启动后,它将监听标准输入/输出 (Stdio) 以接收MCP客户端的请求。
服务器配置 (针对MCP客户端)
MCP客户端需要以下JSON格式的配置信息来连接并使用此MCP服务器。这份配置描述了服务器的启动方式及其提供的能力。
{ "name": "MCP Server", "command": "npx", "args": ["ts-node", "src/mcp-server.ts"], "description": "提供实时天气查询功能的MCP服务器,可供LLM客户端调用以获取指定城市的天气信息。", "capabilities": { "tools": [ { "name": "fetch-weather", "description": "获取给定城市的当前天气信息", "parameters": { "type": "object", "properties": { "city": { "type": "string", "description": "要查询天气的城市名称" } }, "required": ["city"] } } ] } }
- 'name': MCP服务器的标识名称,此处为 "MCP Server"。
- 'command': 启动MCP服务器的可执行命令,此处为 'npx'。
- 'args': 传递给 'command' 的参数列表,用于指定启动 'src/mcp-server.ts'。
- 'description': 对MCP服务器功能用途的简要描述。
- 'capabilities': 声明服务器提供的各项功能。
- 'tools': 列出服务器支持的工具。
- 'name': 工具的唯一名称,LLM客户端通过此名称调用。
- 'description': 工具的具体用途。
- 'parameters': 定义工具所需参数的JSON Schema。这里,'fetch-weather' 工具需要一个名为 'city' 的字符串类型参数。
- 'tools': 列出服务器支持的工具。
基本使用方法 (作为MCP客户端用户)
一旦MCP客户端成功连接到此服务器并获取了其能力声明,LLM即可通过调用 'fetch-weather' 工具来查询天气。
例如,一个LLM可能会生成如下的JSON-RPC请求来调用此工具:
{ "jsonrpc": "2.0", "method": "tool_code", "params": { "call_id": "unique_call_id_123", "tool_name": "fetch-weather", "args": { "city": "London" } } }
服务器接收并处理此请求后,会通过JSON-RPC响应返回查询结果,例如:
{ "jsonrpc": "2.0", "method": "tool_result", "params": { "call_id": "unique_call_id_123", "result": { "content": [ { "type": "text", "text": "Weather for London:\n- Temperature: 50.18°F\n- Day/Night: Day\n- Precipitation: 0mm\n- Rain: 0mm\n- Cloud Cover: 0%\n- Wind Speed: 11.2 km/h" } ] } } }
LLM客户端将解析此响应,获取天气信息并用于进一步的交互或展示。
信息
分类
AI与计算