项目简介

本项目包含两个主要的示例应用,展示了如何使用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服务器或工具。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/Alesion30/mcp-playground.git
    cd mcp-playground
  2. 安装依赖:

    npm install
  3. 构建项目:

    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',需要指定构建后的入口文件路径。

基本使用方法

  1. 启动 'weather-server':

    打开一个新的终端窗口,进入 'mcp-playground' 目录,然后运行 'weather-server'。由于 'weather-server' 使用 Stdio 传输,直接运行其入口文件即可:

    node apps/weather-server/dist/main.cjs

    看到 'MCP Server running on stdio' 的输出,表示 'weather-server' 已经成功启动并监听 Stdio。

  2. 配置 '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。

  3. 运行 '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