chatgpt 连接 MCP服务器

336 阅读3分钟

MCP概念,本人表面理解

一个MCP工具,封装了AI能对一个实体进行什么操作、如何进行这些操作

实践过程(chatgpt连接一个MCP服务器)

第1步,准备 chatgpt 环境

在windows/mac上下载 chatgpt desktop,windows通过微软商店下载太慢,可直接下载安装github上已发布的:传送门

安装完成后,登陆自己的账号即可

第2步,准备 nodejs 环境

安装最新版即可:nodejs官网

第3步,安装一个MCP工具(以 server-filesystem 为例)

安装 server-filesystem:

npm i -g @modelcontextprotocol/server-filesystem

# 如报告错误没有 npm,检查环境变量是否配置正确,或直接找到npm的安装路径,在命令中使用全路径

安装完成后,运行以下命令无报错即可:

npx -y @modelcontextprotocol/server-filesystem {替换为任意路径}

第4步,安装 把 WebSocket 转成 stdio 的转接器

MCP 服务器启动后,默认是 stdio 模式

但是 chatgpt desktop 添加 MCP 服务器仅支持URL方式(websocket模式),不支持manifest文件方式(stdio模式)

所以需要在仅支持 stdio 模式的MCP服务器上,套一层转接器,使其支持 websocket 模式

python安装三方库:

pip3 install mcp-proxy -i https://pypi.tuna.tsinghua.edu.cn/simple

安装后,可以在命令行中使用无报错

mcp-proxy
# 或者 
python3 -m mcp-proxy

启动MCP服务器,并进行转接:

mcp-proxy --port={替换为开放的端口} -- npx -y @modelcontextprotocol/server-filesystem {替换为任意路径}

# 例子
mcp-proxy --port=3333 -- npx -y @modelcontextprotocol/server-filesystem /home/test

第5步,将提供的http服务暴露为https(因为chatgpt desktop仅支持https)

使用 ngrok 实现

官网下载安装:ngrok官网

获取authtoken(登陆之后才能获取到):传送门

执行命令:

ngrok config add-authtoken <你的_authtoken>

ngrok http http://127.0.0.1:3333

会看到两条转发地址,复制 HTTPS 这一条,例如:

Forwarding  https://abc1234.ngrok.app -> http://127.0.0.1:3333

第6步,chatgpt 添加MCP服务器

打开 chatgpt desktop,点击 头像 -> 设置 -> 应用与连接器 -> 高级设置 -> 开发人员模式 -> 打开

打开 chatgpt desktop,点击 头像 -> 设置 -> 应用与连接器 -> 创建

  • MCP服务器URL为第5步中复制的https地址+sse,如:https://abc1234.ngrok.app/sse
  • 身份验证选 无身份验证
  • 勾选 我信任此应用程序
  • 其他信息自行填写

!!!注意,MCP服务器URL 只能为https

添加完成后,能看到类似下图信息:

image.png

第7步,测试

首次使用的提示词很关键,建议明确提出使用什么连接器中的什么操作

如:

请使用连接器「local-file-system」的「write_file」工具,在第一个有权限的目录下,写一个大小为1kB的测试文本文件

在chatgpt的回复中,可以观察到创建的文件路径,观察到本地确实存在该文件即可。

未解决的问题:

  1. 在chagpt的连接器详情中,所有的操作都是“写入”,并没有类似”读取“的权限,为什么?
  2. 第5步也许可以使用nginx反向代理为https解决,或者需要一个公网ip/域名即可,不一定要https?
  3. 如何自定义一个MCP服务器,实操过后,对MCP肯定会有更深理解,参考:openai-MCP, fastmcp ,MCP-Chinese-Getting-Started-Guide
  4. 下一步学习如何在vscode中使用MCP

本次过程,chatgpt提供了很大帮助,这是 对话链接