项目简介
本项目包含两个主要的示例应用,展示了如何使用Model Context Protocol (MCP) 构建应用:
- weather-server: 一个实现了MCP协议的天气服务器,提供查询天气预报的工具。
- openai-mcp-host: 一个使用OpenAI模型作为核心的MCP客户端主机,可以连接到MCP服务器(如 'weather-server'),并利用OpenAI Function Calling能力,根据用户query调用MCP服务器提供的工具。
通过这两个示例,可以了解MCP服务器和客户端的基本工作原理,以及如何将MCP应用于实际场景中,例如让LLM能够安全地访问外部数据和服务。
主要功能点
- 天气预报工具: 'weather-server' 提供了 'get-forecast' 工具,允许客户端查询指定经纬度的天气预报。
- MCP协议实现: 两个应用都基于 '@modelcontextprotocol/sdk' 实现了MCP协议,包括请求处理、响应生成、工具注册和调用等核心功能。
- Stdio传输: 'weather-server' 使用 Stdio 作为默认的传输协议,方便本地测试和部署。
- OpenAI Function Calling 集成: 'openai-mcp-host' 演示了如何将MCP服务器提供的工具转换为 OpenAI Function Calling 所需的格式,从而利用 OpenAI 的自然语言理解和工具调用能力。
- 可扩展的架构: 项目结构清晰,易于扩展和添加新的MCP服务器或工具。
安装步骤
-
克隆仓库:
git clone https://github.com/Alesion30/mcp-playground.git cd mcp-playground -
安装依赖:
npm install -
构建项目:
npm run build
服务器配置
以下是 'weather-server' 的 MCP 服务器配置信息,用于配置 MCP 客户端(例如 'openai-mcp-host' 或其他 MCP 客户端)。
{ "serverName": "weather-server", // MCP 服务器的名称,用于客户端识别 "command": "node", // 启动 MCP 服务器的命令,这里使用 node 运行 JavaScript 文件 "args": [ // 传递给启动命令的参数 "apps/weather-server/dist/main.cjs" // weather-server 构建后的入口文件路径 ] }
参数注释:
- 'serverName': 服务器的名称,可以自定义,但需要与客户端配置中引用的名称一致。
- 'command': 运行服务器程序的可执行命令。对于 Node.js 服务器,通常是 'node'。
- 'args': 传递给 'command' 的参数列表。对于 'weather-server',需要指定构建后的入口文件路径。
基本使用方法
-
启动 'weather-server':
打开一个新的终端窗口,进入 'mcp-playground' 目录,然后运行 'weather-server'。由于 'weather-server' 使用 Stdio 传输,直接运行其入口文件即可:
node apps/weather-server/dist/main.cjs看到 'MCP Server running on stdio' 的输出,表示 'weather-server' 已经成功启动并监听 Stdio。
-
配置 'openai-mcp-host' 环境变量:
'openai-mcp-host' 需要 OpenAI API Key 才能工作。请确保你已经拥有 OpenAI API Key,并将其设置为环境变量 'OPENAI_API_KEY'。 你可以在项目根目录下创建 '.env' 文件,并添加以下内容:
OPENAI_API_KEY=YOUR_OPENAI_API_KEY将 'YOUR_OPENAI_API_KEY' 替换为你的实际 API Key。
-
运行 'openai-mcp-host':
在另一个终端窗口,同样进入 'mcp-playground' 目录,然后运行 'openai-mcp-host',并带上用户消息参数 '-m' 或 '--message':
node apps/openai-mcp-host/dist/main.cjs -m "What's the weather in New York?"或者
node apps/openai-mcp-host/dist/main.cjs --message "天气怎么样 上海"'openai-mcp-host' 将会:
- 连接到 'weather-server' (通过 Stdio,因为它们在本地运行)。
- 获取 'weather-server' 提供的工具列表 ('get-forecast')。
- 将工具信息传递给 OpenAI 模型。
- 根据用户消息,OpenAI 模型可能会决定调用 'get-forecast' 工具。
- 'openai-mcp-host' 调用 'weather-server' 的 'get-forecast' 工具,获取天气预报数据。
- 将天气预报数据返回给 OpenAI 模型。
- 最终,OpenAI 模型生成包含天气预报信息的回复,并输出到终端。
注意: 'weather-server' 的天气预报工具目前仅支持美国地区。对于非美国地区的经纬度,可能会返回错误或无法获取数据。
信息
分类
网页与API