把 IDE 里的 AI(Copilot/Cursor/Windsurf)变成 ChatGPT + OpenAI API。一次对话,无限调用
MCP Chat
把 IDE 里的 AI 变成 ChatGPT + OpenAI API
一个 MCP Server,让你的 IDE AI 拥有 Web 聊天界面和标准 API
English · 中文
快速开始 · IDE 配置 · API 调用 · 使用场景 · 架构
截图
Web UI
QQ 机器人对接(NapCat + OpenAI API)
通过 NapCat 接入 QQ,调用 MCP Chat 的 OpenAI 兼容 API,实现 QQ 机器人与 IDE AI 对话。
它能干什么
你的 IDE (Windsurf / Cursor / Copilot / Claude Code)
↕ MCP 协议
┌────────────────┐
│ server.py │──> Web UI (多会话聊天界面)
│ (MCP 网关) │──> OpenAI 兼容 API (/v1/chat/completions)
│ │──> WebSocket 实时推送
└────────────────┘
↕
QQ 机器人 / 飞书Bot / Continue 插件 / 自动化脚本 / ...
核心原理:一次对话,无限调用
MCP Chat 通过 MCP 协议让 IDE 里的 AI 进入一个 chat() 循环 — 本质上是一次永不结束的对话。在这个对话内,外部可以通过 Web UI 或 API 无限次与 AI 交互。
各 IDE 的计费方式不同,利用 MCP Chat 的效果也不同:
| IDE | 计费方式 | 配合 MCP Chat 的效果 | |-----|---------|---------------------| | GitHub Copilot | 按请求次数(Agent 模式无限) | ✅ Agent 模式下 完全无限,每次交互消耗 1 次请求,但无上限 | | Cursor Pro | 有月度额度(快/慢请求) | ✅ 超额后会降速但不会停止,对话内可一直工作 | | Windsurf Pro | 有 credits 额度 | ⚠️ 消耗 credits,用完需等额度刷新 | | Claude Code | 按 API token 计费 | ⚠️ 每次交互消耗 token,按量付费 |
💡 最佳搭配:GitHub Copilot(无限请求)+ MCP Chat = 免费无限 AI API 服务
功能特性
- Web UI — 浏览器里和 IDE AI 聊天,支持 Markdown 渲染、代码高亮、图片上传、多会话管理
- OpenAI 兼容 API — 标准
/v1/chat/completions接口,支持流式响应,任何 OpenAI SDK 兼容工具可直接对接 - 多 IDE 支持 — Windsurf、Cursor、GitHub Copilot、Claude Code / Desktop 同时连接,各自独立会话
- 零配置启动 — Web UI 已预构建,安装依赖后直接运行
- 单文件后端 — 整个服务端只有一个
server.py,无框架依赖,易于理解和二次开发
快速开始
安装
git clone https://github.com/maile456/mcp-chat.git
cd mcp-chat
# 安装 Python 依赖
pip install mcp[cli] websockets
# 启动服务
python server.py
Web UI 已预构建在
web-ui/dist/中,无需 Node.js 环境。 如需修改前端:cd web-ui && npm install && npm run build
启动成功
[MCP Chat] API endpoint: http://127.0.0.1:8080/v1/chat/completions
[MCP Chat] Models endpoint: http://127.0.0.1:8080/v1/models
INFO Application startup complete.
| 地址 | 说明 | |------|------| | http://127.0.0.1:8080 | Web UI 聊天界面 | | http://127.0.0.1:8080/mcp | MCP 端点(IDE 连这个) | | http://127.0.0.1:8080/v1/chat/completions | OpenAI 兼容 API | | ws://127.0.0.1:8081 | WebSocket 实时推送 |
IDE 配置
复制下面的 JSON,粘贴到对应配置文件即可。
Windsurf
文件:~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"mcp-chat": {
"serverUrl": "http://127.0.0.1:8080/mcp"
}
}
}
Cursor
文件:~/.cursor/mcp.json
{
"mcpServers": {
"mcp-chat": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}
VS Code (GitHub Copilot)
文件:~/.vscode/mcp.json
{
"servers": {
"mcp-chat": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp"
}
}
}
Copilot 推荐设置
在项目 .vscode/settings.json 中添加:
{
"chat.tools.global.autoApprove": true,
"chat.tools.terminal.autoApprove": { ".*": true },
"github.copilot.chat.agent.maxRequests": 99999
}
Claude Code
claude mcp add mcp-chat --transport http http://127.0.0.1:8080/mcp
Claude Desktop
文件:%APPDATA%\Claude\claude_desktop_config.json (Windows) / ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
方式一:HTTP 传输(推荐,需先启动 server.py)
{
"mcpServers": {
"mcp-chat": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}
方式二:Stdio 传输(自动启动)
{
"mcpServers": {
"mcp-chat": {
"command": "python",
"args": ["/path/to/mcp-chat/server.py"],
"env": {}
}
}
}
使用方法
配置好 IDE 后,在 AI 对话中输入:
调用 get_prompt 获取工作流程,然后调用 chat 工具与我对话
AI 会自动进入循环:发消息到 Web UI → 等你回复 → 执行任务 → 再发消息 → ...
浏览器打开 http://127.0.0.1:8080 即可开始聊天。
OpenAI 兼容 API
IDE 中的 AI 进入 chat() 循环后,你可以通过标准 OpenAI API 与它交互。
curl
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"cascade","messages":[{"role":"user","content":"你好"}]}'
Python
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8080/v1", api_key="no-key")
# 普通请求
r = client.chat.completions.create(
model="cascade",
messages=[{"role": "user", "content": "你好"}]
)
print(r.choices[0].message.content)
# 流式请求
stream = client.chat.completions.create(
model="cascade",
messages=[{"role": "user", "content": "写一个快排"}],
stream=True
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
API 认证(可选)
# 设置环境变量启用 API Key
MCP_API_KEY=your-secret-key python server.py
client = OpenAI(base_url="http://127.0.0.1:8080/v1", api_key="your-secret-key")
使用场景
| 场景 | 说明 | |------|------| | 个人 AI 助手 | 在浏览器中与 IDE AI 对话,不受 IDE 界面限制 | | QQ 机器人 | 通过 NapCat + OpenAI API 接入 QQ,实现 AI 聊天机器人 | | VS Code + Continue | 同事在 VS Code 中通过 Continue 插件接入你的 API,获得 Copilot 级体验 | | 自动化脚本 | CI/CD 代码审查、批量文档生成等 |
架构
mcp-chat/
├── server.py # 核心服务 (MCP + HTTP + WebSocket + API)
├── web-ui/ # Vue 3 + TailwindCSS 前端
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ ├── composables/ # 组合式函数
│ │ └── App.vue
│ ├── dist/ # 预构建产物 (开箱即用)
│ └── package.json
└── README.md
技术栈
| 层 | 技术 | |----|------| | 后端 | Python · FastMCP · Starlette · WebSocket | | 前端 | Vue 3 · TailwindCSS · Markdown-it · Highlight.js · Lucide Icons | | 协议 | MCP (Streamable HTTP) · WebSocket · SSE | | API | OpenAI Chat Completions 兼容 |
MCP 工具
| 工具 | 参数 | 说明 |
|------|------|------|
| get_prompt | — | 返回 Chat 工作流规则 |
| chat | ai_message (必填), model, source, project | 发送消息到 Web UI 并等待用户回复 |
API 端点
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /v1/chat/completions | OpenAI 兼容 Chat API |
| GET | /v1/models | 模型列表 |
| POST | /mcp | MCP Streamable HTTP 端点 |
| GET | /poll | 长轮询状态更新 |
| POST | /submit | 提交用户回复 |
| GET | /history | 获取会话历史 |
常见问题 & 原理
它是怎么工作的?
MCP Chat 注册了一个 chat() 工具。IDE 的 AI 调用这个工具后,server.py 会把 AI 发来的消息推送到 Web UI,然后阻塞等待用户回复。用户回复后,工具返回结果给 AI,AI 处理后再次调用 chat() — 形成一个无限循环。
AI 调用 chat("你好") → server 推送到 Web UI → 用户回复 "帮我写代码"
→ chat() 返回用户的回复 → AI 处理并再次调用 chat("这是代码...") → ...
整个过程对 IDE 来说只是「一次对话中反复调用同一个工具」,所以只消耗一次对话额度。
为什么 Copilot 可以无限用?
GitHub Copilot Agent 模式允许 AI 在一次对话中无限次调用工具(maxRequests 可设为 99999)。MCP Chat 的 chat() 工具每次调用算 1 次请求,但 Agent 模式不设上限,所以可以无限循环。
其他 IDE 也能用,但各有限制:Cursor 超额降速、Windsurf 消耗 credits、Claude Code 按 token 计费。
OpenAI API 是怎么实现的?
server.py 内置了一个 /v1/chat/completions 端点。收到 API 请求后,server 会把消息注入到当前 chat() 循环中,等 AI 回复后再以 OpenAI 格式返回。支持流式(SSE)和非流式响应。
本质上是:外部 API 请求 → server 转发给 IDE AI → AI 回复 → server 包装成 OpenAI 格式返回。
必须打开 IDE 才能用吗?
Web UI 随时可用(查看历史、管理会话等)。但要让 AI 回复,需要 IDE 中有 AI 在 chat() 循环中运行。API 同理 — 没有 AI 在线时请求会超时。
支持哪些模型?
取决于你的 IDE 订阅。MCP Chat 本身不限制模型 — IDE 用什么模型,MCP Chat 就用什么模型。例如 Copilot 支持 GPT-4o、Claude Sonnet、Gemini 等;Cursor 支持 Claude、GPT 系列。
多个用户能同时用吗?
Web UI 支持多会话,每个用户可以独立聊天。但每个 IDE 连接同时只能处理一个 chat() 循环。如果需要多人并发,可以开多个 IDE 实例,每个跑一个 server。
Contributing
欢迎提交 Issue 和 Pull Request!
# 开发前端
cd web-ui && npm install && npm run dev
# 后端
python server.py
⭐ Star
如果这个项目对你有帮助,请给个 Star ⭐ 支持一下!