About Tencent Ima Copilot MCP
Tencent Ima Copilot MCP is an MCP server published by highkay in the Developer Tools category: tencent-ima-copilot-mcp.
The repository has 132 stars and 36 forks, with the last commit 8 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/highkay/tencent-ima-copilot-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Tencent Ima Copilot MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 6 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- !Dependencies pinnedNo lockfile. Installs can pull different code over time.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
IMA Copilot MCP 服务器
基于 FastMCP v2 框架的腾讯 IMA Copilot MCP (Model Context Protocol) 服务器,使用环境变量配置,简化项目结构,专注于 MCP 协议实现。
✨ 主要特性
- 🚀 极简配置: 仅需两个必需参数即可启动,开箱即用
- 🤖 MCP 协议支持: 完整实现 Model Context Protocol 规范 (基于 FastMCP 2.14.1)
- 🔧 环境变量配置: 通过
.env文件管理所有配置 - 📡 HTTP 传输: 支持 HTTP 传输协议,便于 MCP Inspector 连接
- 🛠️ 增强型 MCP 工具: 提供腾讯 IMA 知识库问答功能,返回结果包含回答文本和结构化参考资料
- 🔄 Token 自动刷新: 智能管理认证 token,自动刷新保持会话有效
- 💪 Tenacity-powered Retries: 集成 tenacity 库,优化重试机制,支持指数退避和针对性错误重试
- 🧯 Code=3 自愈: 对高并发瞬时
Code=3错误执行退避重试并自动恢复 - 🚦 并发限流: 默认串行问答(并发=1),降低请求突发导致的系统错误
- 📝 Loguru-enhanced Logging: 采用 Loguru 提升日志体验,提供更清晰、结构化的日志输出
- ⏱️ 超时保护: 内置请求超时机制,防止长时间阻塞 (已提升至 300 秒)
- 🎯 一键启动: 简化的启动流程,自动环境检查和配置验证
- 🐳 Docker 支持: 提供官方 Docker 镜像,开箱即用
🚀 最新进展 (2025-12-21)
- ✅ 服务器成功运行: 已验证基于 FastMCP 2.14.1 的 HTTP 传输模式正常工作。
- ✅ 修复启动报错: 解决了
AttributeError: 'FastMCP' object has no attribute 'on_shutdown'问题(通过在当前版本中禁用该钩子)。 - ✅ 全流程验证: 验证了从 Token 刷新、会话初始化到 SSE 流式响应解析的完整链路,支持长回复(35秒+响应已验证)。
快速开始
方式一:使用 Docker(推荐)
1. 使用 Docker Run
# 拉取镜像
docker pull highkay/tencent-ima-copilot-mcp:latest
# 运行容器(需要替换以下两个必需的环境变量)
docker run -d \
--name ima-copilot-mcp \
-p 8081:8081 \
-e IMA_X_IMA_COOKIE="your_x_ima_cookie_here" \
-e IMA_X_IMA_BKN="your_x_ima_bkn_here" \
-v $(pwd)/logs:/app/logs \
--restart unless-stopped \
highkay/tencent-ima-copilot-mcp:latest
# 查看日志
docker logs -f ima-copilot-mcp
2. 使用 Docker Compose(更便捷)
创建 .env 文件(或直接在 shell 中设置环境变量):
# .env 文件
IMA_X_IMA_COOKIE="your_x_ima_cookie_here"
IMA_X_IMA_BKN="your_x_ima_bkn_here"
启动服务:
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
方式二:本地安装
1. 安装依赖
# 安装 FastMCP、tenacity、Loguru 和所有依赖
pip install -r requirements.txt
2. 配置环境变量
# 复制配置文件模板
cp .env.example .env
# 编辑 .env 文件,填入从浏览器获取的 IMA 认证信息
nano .env # 或使用其他编辑器
必需配置项
以下环境变量必须正确配置才能使用服务:
IMA_X_IMA_COOKIE: X-Ima-Cookie 请求头值(包含平台信息、token 等)IMA_X_IMA_BKN: X-Ima-Bkn 请求头值(业务密钥)
3. 获取 IMA 认证信息
步骤 1: 访问 IMA Copilot
- 访问 https://ima.qq.com 并登录
- 按 F12 打开开发者工具
- 切换到 Network (网络) 标签页
步骤 2: 获取认证头信息
- 在 IMA 中发送一条消息
- 找到向
/cgi-bin/assistant/qa的 POST 请求 - 查看 Request Headers,复制以下字段:
x-ima-cookie→IMA_X_IMA_COOKIEx-ima-bkn→IMA_X_IMA_BKN
4. 启动服务器
方式一:使用启动脚本(推荐)
# Windows
start.bat
# 或使用 Python 脚本(跨平台)
python run.py
方式二:使用 fastmcp 命令
fastmcp run ima_server_simple.py:mcp --transport http --host 127.0.0.1 --port 8081
5. 使用 MCP Inspector
# 安装 MCP Inspector
npx @modelcontextprotocol/inspector
# 连接到服务器
# 在 Inspector 中输入: http://127.0.0.1:8081/mcp
服务端点
- MCP 协议端点:
http://127.0.0.1:8081/mcp(用于 MCP Inspector 或其他 MCP 客户端) - 日志文件:
logs/debug/ima_server_YYYYMMDD_HHMMSS.log(Loguru 自动生成和管理) - 原始 SSE 日志:
logs/debug/raw/sse_*.log(发生错误时自动保存)
可用的 MCP 工具
1. ask
向腾讯 IMA 知识库询问任何问题
参数:
question(必需): 要询问的问题
示例:
问题: "什么是机器学习?"
问题: "如何制作番茄炒蛋?"
特性:
- 自动管理会话,无需手动创建
- 智能 token 刷新,确保认证有效
- 内置并发限流(默认
IMA_ASK_CONCURRENCY_LIMIT=1) - 检测到
Code=3且无文本时自动指数退避重试(最多 2 次) - 300 秒超时保护,防止长时间等待
- 返回内容为
TextContent列表,包含回答文本和格式化后的参考资料
注意:当配置了多个知识库 ID 时,
ask会直接报错并提示改用ask_with_kb。
2. ask_with_kb
向指定知识库询问问题(多知识库模式)
参数:
question(必需): 要询问的问题knowledge_base_id(必需): 目标知识库 ID(必须在配置列表中)
示例:
问题: "总结这个知识库的核心内容"
knowledge_base_id: "7305806844290061"
可用的 MCP 资源
1. ima://config
获取当前配置信息(不包含敏感数据)
2. ima://help
获取帮助信息
配置选项
必需的环境变量
| 变量名 | 说明 | 获取方式 |
|---|---|---|
IMA_X_IMA_COOKIE |
X-Ima-Cookie 请求头 | 从浏览器开发者工具 Network 标签中复制 |
IMA_X_IMA_BKN |
X-Ima-Bkn 请求头 | 从浏览器开发者工具 Network 标签中复制 |
可选的环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
IMA_KNOWLEDGE_BASE_ID / knowledgeBaseId |
单知识库 ID(两者等价) | 无(必须显式配置) |
IMA_KNOWLEDGE_BASE_IDS / knowledgeBaseIds |
多知识库 ID 列表(逗号分隔) | 无 |
IMA_MCP_HOST |
MCP 服务器地址 | 127.0.0.1 |
IMA_MCP_PORT |
MCP 服务器端口 | 8081 |
IMA_MCP_LOG_LEVEL |
日志级别 (支持 DEBUG, INFO, WARNING, ERROR) |
INFO |
IMA_REQUEST_TIMEOUT |
IMA API 请求超时时间(秒) | 30 |
IMA_RETRY_COUNT |
网络/超时类异常重试次数 | 3 |
IMA_ASK_CONCURRENCY_LIMIT |
问答并发上限(建议 1-2) | 1 |
IMA_ROBOT_TYPE |
机器人类型 | 5 |
IMA_SCENE_TYPE |
场景类型 | 1 |
IMA_MODEL_TYPE |
模型类型 | 4 |
知识库配置模式
- 单知识库模式(兼容旧逻辑):配置
IMA_KNOWLEDGE_BASE_ID(或knowledgeBaseId),使用ask或ask_with_kb均可。 - 多知识库模式:配置
IMA_KNOWLEDGE_BASE_IDS(或knowledgeBaseIds,逗号分隔),必须使用ask_with_kb。 - 同时配置两者时:优先使用
IMA_KNOWLEDGE_BASE_ID(单知识库模式)。 - 启动强校验:若
IMA_KNOWLEDGE_BASE_ID与IMA_KNOWLEDGE_BASE_IDS都未配置,服务将直接退出。
从旧版本迁移
- 只用一个知识库:保持原有
IMA_KNOWLEDGE_BASE_ID=<id>即可,无需改调用方式。 - 需要多个知识库:新增
IMA_KNOWLEDGE_BASE_IDS=id1,id2,...,并把调用从ask(question)改为ask_with_kb(question, knowledge_base_id)。
故障排除
常见问题
Q: 认证失败(Token 验证失败)怎么办?
A:
- 检查
.env文件中的IMA_X_IMA_COOKIE和IMA_X_IMA_BKN是否正确 - 确认
IMA_X_IMA_COOKIE中包含IMA-REFRESH-TOKEN字段 - 重新从浏览器获取最新的认证信息
Q: 如何连接特定的知识库?
A:
在 .env 文件中设置 IMA_KNOWLEDGE_BASE_ID(或 knowledgeBaseId)即可。获取方法:
- 在 IMA 网页选择知识库
- 找到
init_session请求 - 查看 Payload 中的
knowledge_base_id
Q: 多知识库怎么配置和调用?
A:
- 在
.env中设置IMA_KNOWLEDGE_BASE_IDS=id1,id2,id3 - 调用工具时使用
ask_with_kb(question, knowledge_base_id) - 若调用
ask,会提示错误并给出可用knowledge_base_id列表
Q: 偶发出现 Code=3 且无文本怎么办?
A:
- 先保持默认并发(
IMA_ASK_CONCURRENCY_LIMIT=1) - 避免同一知识库短时间突发并发请求
- 服务已内置
Code=3退避重试;若仍频繁出现,可适当增加请求间隔
许可证
MIT License
README fetched from the repository 6 days ago. The original is authoritative.