关于 Unichat MCP Server in Python
Unichat MCP Server 是一个 Python 编写的 MCP 服务,可通过 MCP 协议向 OpenAI、Anthropic 以及兼容 OpenAI 接口的服务商发送请求。它面向需要在 MCP 客户端中调用多家 LLM 的用户,并支持通过 UNICHAT_BASE_URL 指定自定义端点。
主要功能
- 01通过 unichat 工具发送请求并返回响应
- 02提供 code_review、document_code 等预设提示词
- 03支持 OpenAI 兼容服务商的自定义端点
- 04可通过 uvx 直接发布安装
适用场景
- 01在 Claude Desktop 中调用 OpenAI 或 Anthropic 模型
- 02使用预设提示词对代码进行审查或补充注释
- 03通过兼容接口接入 DeepSeek、xAI 等服务商
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 unichat 工具和四个代码相关的提示词,由服务端转发请求至所配置的 LLM 服务商。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Python 版 Unichat MCP 服务
另有 TypeScript 版
通过 MCP 协议,使用工具或预定义提示词向 OpenAI、Anthropic 和兼容 OpenAI 的服务商发送请求。对于 MistralAI、xAI、Google AI、DeepSeek、Alibaba 或 Inception 等兼容 OpenAI 的服务商,请将 UNICHAT_BASE_URL 设置为服务商兼容的 API 端点。
需要服务商 API 密钥
工具
该服务实现了一个工具:
unichat:向 unichat 发送请求- 将 "messages" 作为必需的字符串参数
- 返回响应
提示词
code_review- 按照最佳实践审查代码,查找潜在问题并提出改进建议
- 参数:
code(字符串,必需):要审查的代码"
document_code- 为代码生成文档,包括文档字符串和注释
- 参数:
code(字符串,必需):要添加注释的代码"
explain_code- 详细说明一段代码的工作原理
- 参数:
code(字符串,必需):要解释的代码"
code_rework- 按要求修改提供的代码
- 参数:
changes(字符串,可选):要应用的更改"code(字符串,必需):要重做的代码"
快速入门
安装
Claude Desktop
MacOS:~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
支持的模型:
可在此处查看当前支持的模型列表,以供
"SELECTED_UNICHAT_MODEL"使用。请务必添加相应服务商的 API 密钥作为"YOUR_UNICHAT_API_KEY"
示例:
"env": {
"UNICHAT_MODEL": "gpt-5.4-mini",
"UNICHAT_API_KEY": "YOUR_OPENAI_API_KEY"
}
对于使用自定义端点的兼容 OpenAI 的服务商:
"env": {
"UNICHAT_MODEL": "PROVIDER_MODEL",
"UNICHAT_API_KEY": "YOUR_PROVIDER_API_KEY",
"UNICHAT_BASE_URL": "https://provider.example.com/v1"
}
设置 UNICHAT_BASE_URL 后,服务将接受配置的 UNICHAT_MODEL,而不再将其与 Unichat 内置的模型列表进行比对。
开发版/未发布服务配置
"mcpServers": {
"unichat-mcp-server": {
"command": "uv",
"args": [
"--directory",
"{{your source code local directory}}/unichat-mcp-server",
"run",
"--locked",
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}
已发布服务配置
"mcpServers": {
"unichat-mcp-server": {
"command": "uvx",
"args": [
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装 Unichat:
npx -y @smithery/cli install unichat-mcp-server --client claude
开发
从源码全新安装
前置条件:Git、Python 3.11 或更高版本(如 pyproject.toml 中所声明),以及已加入 PATH 的 uv。只有使用下方可选的 MCP Inspector 时才需要 Node.js/npm。Shell 示例使用 Bash/Zsh 语法。
克隆仓库并还原锁定的依赖:
git clone https://github.com/amidabuddha/unichat-mcp-server.git
cd unichat-mcp-server
uv sync --locked
uv sync --locked 会创建项目本地的 .venv/,以可编辑模式安装项目,并从 uv.lock 还原依赖。如果锁文件需要更新,该命令会失败,而不会悄悄修改它。使用 uv run 时,无需激活虚拟环境或全局安装 Python 依赖。
设置与 Claude Desktop 示例中相同的环境变量,并将占位符替换为你的提供方的值:
export UNICHAT_MODEL="SELECTED_UNICHAT_MODEL"
export UNICHAT_API_KEY="YOUR_UNICHAT_API_KEY"
# Optional, for an OpenAI-compatible provider with a custom endpoint:
# export UNICHAT_BASE_URL="https://provider.example.com/v1"
服务会读取环境变量;它不会自行加载 .env 文件。对于 Claude Desktop,请将这些值放在上方所示的服务 env 配置中。
运行本地服务:
uv run --locked unichat-mcp-server
这是一个 stdio MCP 服务:通过 Claude Desktop 或下方的 Inspector 连接并与其交互。它不会启动网页或交互式聊天提示。可编辑安装足以运行该服务;如果还要使用已配置的 Hatchling 后端创建源码和 wheel 分发包:
uv build
软件包会写入 dist/。uv build 会在隔离环境中提供构建后端;无需全局安装 build 前端。运行时依赖由 uv.lock 锁定,但 pyproject.toml 中的 hatchling 构建要求未固定版本。
日常开发
编辑 src/ 下的文件后,重启服务或在 MCP 客户端中重新连接:
uv run --locked unichat-mcp-server
可编辑安装会使用当前源码。普通源码更改无需删除 .venv/、重新安装依赖或重建分发包。只有在需要更新软件包构件时才再次运行 uv build。拉取依赖清单和锁文件的更改后,运行 uv sync --locked,使环境与之保持一致。
此仓库未配置自动化测试套件或监视命令。使用下方的 Inspector 手动测试工具和提示词,并在更改后重启服务。
清理并重建现有检出副本
停止正在运行的服务,并在仓库根目录(即包含 pyproject.toml 和 uv.lock 的目录)运行这些命令。这些路径假设使用 uv 默认的项目本地环境:.venv/ 包含已安装的依赖和可编辑项目,dist/ 包含生成的源码/wheel 压缩包。
rm -rf .venv dist
uv sync --locked
uv build
这会重新创建环境和分发包。请保留 uv.lock、源码、配置、.env 文件和用户数据。build/ 和 wheels/ 等其他被忽略的名称并非此项目构建工作流的既定输出,因此不属于清理目标。可以继续使用全局 uv 缓存和 Python 安装。再次运行时,保留或重新设置上述环境变量,并使用 uv run --locked unichat-mcp-server。
有意更新依赖
依赖更新与还原是分开的。在有意更改 pyproject.toml 中的要求时,运行 uv lock 并检查生成的 uv.lock 更改,然后运行 uv sync --locked。例如,要在已声明的约束范围内有意升级现有依赖:
uv lock --upgrade-package unichat
uv sync --locked
检查锁文件更改,并在接受更新前检查服务行为。常规安装和重建应使用现有锁文件。
发布
发布是维护者单独执行的操作,不属于本地安装或重建流程。按照上述清理重建流程准备新的分发包,并在上传到 PyPI 前确认 dist/ 中仅包含预期的发行版本:
uv publish --token "YOUR_PYPI_API_TOKEN"
仓库还在 .github/workflows/publish.yml 中配置了发布工作流;当 main 上的 pyproject.toml 发生更改时会触发,也可手动触发。
调试
由于 MCP 服务通过 stdio 运行,调试可能颇具挑战。为了获得最佳调试体验,我们强烈建议使用 MCP Inspector。
你可以通过 npm 运行以下命令启动 MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory "/path/to/unichat-mcp-server" run --locked unichat-mcp-server
启动后,Inspector 会显示一个 URL,你可以在浏览器中访问该 URL 并开始调试。
托管部署
可在 Fronteir AI 使用托管部署。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。