mcpField
U
Unichat MCP Server in Python

Unichat MCP Server in Python

本地服务
github.com/amidabuddhaAI 与智能体406 天前更新

关于 Unichat MCP Server in Python

Unichat MCP Server 是一个 Python 编写的 MCP 服务,可通过 MCP 协议向 OpenAI、Anthropic 以及兼容 OpenAI 接口的服务商发送请求。它面向需要在 MCP 客户端中调用多家 LLM 的用户,并支持通过 UNICHAT_BASE_URL 指定自定义端点。

主要功能

  1. 01通过 unichat 工具发送请求并返回响应
  2. 02提供 code_review、document_code 等预设提示词
  3. 03支持 OpenAI 兼容服务商的自定义端点
  4. 04可通过 uvx 直接发布安装

适用场景

  1. 01在 Claude Desktop 中调用 OpenAI 或 Anthropic 模型
  2. 02使用预设提示词对代码进行审查或补充注释
  3. 03通过兼容接口接入 DeepSeek、xAI 等服务商

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 unichat 工具和四个代码相关的提示词,由服务端转发请求至所配置的 LLM 服务商。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"unichat": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Python 版 Unichat MCP 服务

另有 TypeScript 版

MseeP.ai 安全评估徽章
基于 MIT 许可证发布。 信任评分 Smithery 服务安装量
托管于 MCPHub

通过 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 使用托管部署。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。