使用说明

项目简介

Ask ChatGPT MCP Server 是一个实现了 Model Context Protocol (MCP) 的服务器,它将 OpenAI 的 ChatGPT 模型作为一个工具暴露出来,允许其他 LLM 应用(如 LangGraph 助手)通过 MCP 协议调用 ChatGPT 的能力。该服务器使用标准输入/输出 (stdio) 作为传输协议,易于集成和部署。

主要功能点

  • 工具注册与调用: 服务器注册了一个名为 'ask_chatgpt' 的工具,LLM 客户端可以调用此工具将文本内容发送给 ChatGPT 模型进行处理,例如进行高级推理、文本摘要、内容分析、选项比较等。
  • 基于 Stdio 的 MCP 服务器: 使用标准输入/输出进行通信,简化了部署和集成过程,尤其是在容器化环境中。
  • 易于配置: 通过环境变量 'OPENAI_API_KEY' 配置 OpenAI API 密钥,支持 Docker 部署和手动运行。
  • 单次请求模式: 支持 '--oneshot' 参数,用于快速测试和单次请求处理。
  • LangGraph 集成: 提供了 LangGraph 框架的集成示例,方便用户将此 MCP 服务器集成到 LangGraph 驱动的 LLM 应用中。

安装步骤

  1. 准备 OpenAI API 密钥: 您需要拥有 OpenAI 的 API 密钥。

  2. Docker 部署 (推荐):

    • 克隆仓库或下载 Dockerfile。
    • 构建 Docker 镜像:
      docker build -t ask-chatgpt-mcp .
    • 运行 Docker 容器,并设置 'OPENAI_API_KEY' 环境变量:
      docker run -e OPENAI_API_KEY=YOUR_OPENAI_KEY -i ask-chatgpt-mcp
    • 将 'YOUR_OPENAI_KEY' 替换为您的实际 OpenAI API 密钥。
  3. 手动运行 (Python 环境):

    • 确保已安装 Python 3 和 'openai', 'requests', 'python-dotenv' 库 (通常 Docker 镜像已包含)。
    • 设置 'OPENAI_API_KEY' 环境变量。可以通过以下两种方式设置:
      • 创建 '.env' 文件,内容为 'OPENAI_API_KEY=YOUR_OPENAI_KEY'
      • 或者在终端中导出环境变量:'export OPENAI_API_KEY=YOUR_OPENAI_KEY'
    • 运行服务器脚本:
      python3 server.py

服务器配置

对于 MCP 客户端,您需要配置 MCP 服务器的启动命令和参数。以下是一个 JSON 格式的 MCP 服务器配置示例,适用于 'chatGPT_MCP':

{
  "mcpServers": {
    "chatgpt": {
      "command": "python3",  // 启动命令,使用 python3 解释器
      "args": [
        "server.py"         // 启动参数,运行 server.py 脚本
      ],
      "env": {
        "OPENAI_API_KEY": "<YOUR_OPENAI_API_KEY>" // 环境变量,用于传递 OpenAI API 密钥,请替换为您的密钥
      }
    }
  }
}

配置说明:

  • '"chatgpt"': 服务器名称,可以自定义。
  • '"command"': 指定启动服务器的命令,这里是 'python3',假设您的环境中 'python3' 命令可以执行 Python 3 解释器。
  • '"args"': 启动命令的参数,这里是 'server.py',表示要运行的 Python 脚本文件名。
  • '"env"': 环境变量配置,'OPENAI_API_KEY' 用于传递 OpenAI 的 API 密钥。请务必将 '<YOUR_OPENAI_API_KEY>' 替换为您自己的 OpenAI API 密钥。 MCP 客户端在启动服务器时会自动设置这些环境变量。

基本使用方法

启动服务器后,MCP 客户端可以向服务器发送符合 MCP 协议的 JSON-RPC 请求。

发现工具 (tools/discover)

客户端可以发送 'tools/discover' 方法来查询服务器提供的工具信息。服务器会返回 'ask_chatgpt' 工具的描述和参数定义。

调用工具 (tools/call)

客户端可以使用 'tools/call' 方法调用 'ask_chatgpt' 工具,并传递 'content' 参数作为要发送给 ChatGPT 的文本内容。例如,发送以下 JSON 数据到服务器的标准输入:

{"method":"tools/call","params":{"name":"ask_chatgpt","arguments":{"content":"请总结一下这篇文章的内容:[文章内容]"}}}

服务器会将请求发送给 ChatGPT,并将 ChatGPT 的响应结果通过标准输出返回给客户端。

单次测试

您可以使用 'oneshot' 模式进行快速测试,例如:

echo '{"method":"tools/call","params":{"name":"ask_chatgpt","arguments":{"content":"Summarize this config..."}}}' | OPENAI_API_KEY=YOUR_OPENAI_KEY python3 server.py --oneshot

请将 'YOUR_OPENAI_KEY' 替换为您的 OpenAI API 密钥。

信息

分类

AI与计算