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
添加完成后,能看到类似下图信息:
第7步,测试
首次使用的提示词很关键,建议明确提出使用什么连接器中的什么操作
如:
请使用连接器「local-file-system」的「write_file」工具,在第一个有权限的目录下,写一个大小为1kB的测试文本文件
在chatgpt的回复中,可以观察到创建的文件路径,观察到本地确实存在该文件即可。
未解决的问题:
- 在chagpt的连接器详情中,所有的操作都是“写入”,并没有类似”读取“的权限,为什么?
- 第5步也许可以使用nginx反向代理为https解决,或者需要一个公网ip/域名即可,不一定要https?
- 如何自定义一个MCP服务器,实操过后,对MCP肯定会有更深理解,参考:openai-MCP, fastmcp ,MCP-Chinese-Getting-Started-Guide
- 下一步学习如何在vscode中使用MCP