关于 Glm Mcp
Glm Mcp 是 MCP 服务,可让 Claude Code、Copilot、Codex 等客户端将编码任务委派给 GLM。它提供仓库编辑、模型路由、变更预览和用量追踪工具。
主要功能
- 01GLM 仓库编码 Agent
- 02按高峰时段路由模型
- 03差异预览与 Git 撤销支持
- 04用量账本与运行统计
- 05Claude Code、Copilot 和 Codex 安装器
适用场景
- 01由主 Agent 委派代码修改
- 02应用变更前预览差异
- 03追踪 GLM 令牌用量和估算费用
MCP 相关
服务提供 `glm_agent`、`glm_delegate`、`glm_recommend` 和 `glm_status` 四个 MCP 工具,分别支持任务委派、路由建议以及用量和配置检查。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
glm-mcp — 为你的 AI 编码 Agent 提供低成本的 GLM 委派
GLM(智谱 / Z.ai)可作为你的 AI 编码 Agent 的成本约低 10 倍的委派对象。昂贵的主模型——Claude Opus、Copilot 的默认模型或 Codex——负责协调和审核;GLM 负责实际工作,按低价 GLM Token 计费。GLM 提供兼容 Anthropic 的 /v1/messages 端点,因此可接入任何已支持 Anthropic 的工具。本仓库将其封装为一个包含四种工具的 MCP 服务,并提供一键安装程序,适用于 Claude Code、GitHub Copilot 和 Codex。所有版本都由同一个服务提供支持。
工作原理
flowchart TD
You["You"]
Main["Main agent (Claude Opus / Copilot / Codex)<br/>orchestrates + reviews"]
Srv["glm MCP server (stdio)<br/>4 tools"]
Rt["Router<br/>peak-aware model pick + cost bias"]
Zai[/"Z.ai Anthropic endpoint<br/>POST /v1/messages"/]
Loop["glm_agent tool loop<br/>read_file / write_file / edit_file<br/>list_dir / run_bash — on your repo"]
Led[("usage.jsonl<br/>every GLM call: model + tokens")]
Repo[("your repo")]
You --> Main -->|"glm_agent(task, workdir)"| Srv
Srv --> Rt --> Zai
Zai -->|"tool calls"| Loop
Loop -->|"tool results"| Zai
Loop -->|"reads / writes / runs"| Repo
Zai --> Led
Srv -->|"summary + GLM STATS<br/>(model, tokens, est. cost)"| Main
Main -->|"review · diff · revert"| You
通俗说明:
- 你向主 Agent 提出工作请求。
- 主 Agent 通过
glm_agent委派任务——它会传入目标和绝对路径形式的workdir。 - 服务端的路由器会选择一个 GLM 模型(考虑峰值负载),并调用 Z.ai 的
/v1/messages端点;成本偏好会让 GLM 始终成为默认选项。 - GLM 会直接在你的代码库中运行自己的 Agent 循环(
read_file/write_file/edit_file/list_dir/run_bash),然后停止并给出摘要。 - 服务端会向主 Agent 返回简明摘要 +
GLM STATS区块(模型、Token 数、预估成本)。 - 主 Agent 负责审核;每次 GLM 调用也会追加到
usage.jsonl账本中。
Token 成本。委派的工作按 GLM Token 计费(成本约低 10 倍)。主模型只需承担协调和审核的费用。要实现接近 100% 的 GLM 占比,需要使用完整 GLM 启动器
(claude/glm-code.mjs),因为混合模式的主 Agent 每轮都会携带会话上下文——这部分上下文构成了主模型 Token 占比的最低限度。
四个工具
| 工具 | 费用 | 功能 |
|---|---|---|
glm_agent | GLM 令牌 | 在你的代码库中将 GLM 用作真正的编码 Agent(读取/写入/编辑/运行)。dry_run: true 会预览差异且不写入任何内容;实际运行后会打印一条 git 检查点还原命令。 |
glm_delegate | GLM 令牌(选择启用) | 纯文本生成——输入文本,输出文本。默认隐藏(glm_agent 也能处理纯文本任务);设置 GLM_DELEGATE=on 即可启用。 |
glm_recommend | 免费(本地) | 提供 GLM 与主模型之间的选择建议:使用哪个引擎、哪个 GLM 模型、置信度及原因。不调用 GLM。 |
glm_status | 免费(本地) | 峰值使用时段、当前模型、使用账本总计(GLM 费用的凭证)及配置健康状况。不调用 GLM。 |
实时进度。 glm_agent 运行时会通过 MCP 进度通知持续发送进度——
当前迭代、令牌数量和 tok/s——这些信息会在 Claude Code 中实时显示,并映射为
VS Code Copilot 中的 tool.execution_progress。此心跳机制也能让那些在收到进度时会重置超时的客户端保持长时间调用,
取消运行则会及时停止 GLM(会显示部分更改,并且可以还原)。max_tokens 默认为 auto
(不限量/宽裕;编排 Agent 可传入数字来限制调用)。服务使用空闲/停滞超时
(GLM_STALL_TIMEOUT_MS,2 分钟),因此不会中断正在持续流式传输的轮次。如果客户端的
工具调用超时仍取消了超长运行,请调高 MCP_TOOL_TIMEOUT / CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT。
安装
(a) Claude Code
npx glm-mcp-claude --key YOUR_ZAI_KEY
默认全局安装(用户级):MCP 服务、完整工具型 glm 子 Agent、
PreToolUse 自动路由钩子,以及可选的 glm-code 完整 GLM 启动器。重启
Claude Code,然后运行 glm_status,确认 api_key_loaded: true。
详细信息:claude/README.md。
(b) GitHub Copilot / VS Code
npx glm-mcp-copilot --key YOUR_ZAI_KEY # current workspace
npx glm-mcp-copilot --global --key YOUR_ZAI_KEY # every workspace
以Agent 模式安装 MCP 服务、GLM 自定义 Agent(子 Agent)、PreToolUse
自动路由钩子以及委托指令文件。重新加载 VS Code 窗口,在 Agent 模式下打开
Copilot Chat,并启动 glm 服务。
详细信息:copilot/README.md。
(c) Codex
安装已发布的 Codex 软件包:
npx glm-mcp-codex --key YOUR_ZAI_KEY
安装 Codex MCP 注册项、glm 自定义 Agent、glm-delegate 技能,以及建议性的
UserPromptSubmit/PreToolUse 钩子。配置为 GLM 工具设置了 30 分钟超时,并在执行修改操作前提示确认。重启 Codex,通过 /hooks 检查钩子,然后运行 glm_status。
详细信息:codex/README.md。
(d) 任意 MCP 客户端 / Glama / Docker
独立的 glm-mcp 软件包——Cursor、Windsurf、Claude Desktop、Glama 等均无需安装器:
{
"mcpServers": {
"glm": {
"command": "npx",
"args": ["-y", "glm-mcp"],
"env": { "GLM_API_KEY": "YOUR_ZAI_KEY" }
}
}
}
对于容器,仓库根目录中的 Dockerfile 会运行同一个服务:
docker build -t glm-mcp .
docker run --rm -i -e GLM_API_KEY=YOUR_ZAI_KEY glm-mcp
服务无需密钥即可启动并响应 MCP 自省请求——只有在实际调用 GLM 时才需要设置 GLM_API_KEY。
各版本一览
Claude Code -> claude/ | GitHub Copilot(VS Code)-> copilot/ | Codex -> codex/ | |
|---|---|---|---|
| npm 包 | glm-mcp-claude | glm-mcp-copilot | glm-mcp-codex |
| 安装 | npx glm-mcp-claude --key ... | npx glm-mcp-copilot --key ...(加上 --global) | npx glm-mcp-codex --key ... |
| MCP 服务 | 用户范围(claude mcp add glm -s user) | VS Code Agent 模式(mcp.json) | ~/.codex/config.toml(或受信任的项目配置) |
| 子 Agent | glm 子 Agent(~/.claude/agents/glm.md) | GLM 自定义 Agent(glm.agent.md) | glm 自定义 Agent(~/.codex/agents/glm.toml) |
| 自动路由钩子 | PreToolUse,Task 匹配器(glm_subagent_router.mjs) | PreToolUse,对所有调用触发(glm_router_hook.mjs) | UserPromptSubmit + PreToolUse,仅供参考 |
| 委派策略 | 追加到 ~/.claude/CLAUDE.md | .instructions.md 文件 | glm-delegate 技能 + 可选的 AGENTS.md 片段 |
| 全 GLM 启动器 | glm-code.mjs(仅限 Claude) | — | |
| 文档 | claude/README.md | copilot/README.md | codex/README.md |
一致性。 三个版本都提供相同的四个工具和一个子 Agent,并使用相同的底层服务。Codex 使用其原生的自定义 Agent、技能和钩子接口;其钩子仅供参考,且必须由用户信任。只有 Claude 提供独立的**glm-code** 全 GLM 启动器。
配置
所有配置项都位于 .env(已在 git 中忽略)。各版本的位置:Claude
~/.claude/glm-mcp/.env(安装时设置);Copilot ~/.glm-mcp/glm-mcp/.env;Codex
~/.codex/glm-mcp/.env。Codex 将 tool_timeout_sec = 1800,因为其 MCP 工具默认超时时间为
60 秒。包含注释的完整参考: claude/glm-mcp/.env.example。
| 变量 | 默认值 | 含义 |
|---|---|---|
GLM_API_KEY | — | 你的 Z.ai / Zhipu GLM Coding Plan 密钥。调用 GLM 时必需。 |
GLM_BASE_URL | https://api.z.ai/api/anthropic | 兼容 Anthropic 的端点(/v1/messages)。 |
GLM_USE_HAIKU | off | off 表示直接调用 GLM,因此所有 token 都留在 GLM 上;on 表示允许由 Haiku 编排的子 Agent(会消耗一些 Claude token)。 |
GLM_COST_BIAS | 7 | 倾向于使用 GLM 的程度。7 ≈ 将 98–100% 的符合条件的任务交给 GLM。调低(例如 1.5)可将更多困难任务交给主模型;0 = 仅考虑能力。 |
GLM_MAX_CONCURRENT | 1 | GLM 对进行中的请求数设有限制(约为 1);除非你的套餐允许更多,否则保持为 1。 |
GLM_CAP | off | off = 宽松(最高可达 GLM_MAX_TOKENS_CEILING);on 表示强制执行 GLM_MAX_TOKENS。 |
GLM_MAX_TOKENS | 32768 | 每次调用的硬性上限,仅在 GLM_CAP=on 时应用。 |
GLM_MAX_TOKENS_CEILING | 131072 | 上限关闭时使用的宽松默认值。 |
GLM_MAX_RETRIES | 4 | 遇到 429 / 并发限制 / 5xx 时,采用指数退避进行重试。 |
GLM_TIMEOUT_MS | 300000 | 每个 GLM HTTP 请求的超时时间(5 分钟)。 |
GLM_AGENT_MAX_ITERS | 30 | glm_agent 停止前工具循环的最大轮数。 |
GLM_AGENT_BASH_TIMEOUT_MS | 120000 | glm_agent 中每条 run_bash 命令的超时时间。 |
GLM_OFFPEAK_MODEL | glm-5.2 | auto 在非高峰时段使用的候选模型。允许使用逗号分隔的列表;路由器会自动选择。 |
GLM_PEAK_MODEL | glm-5.2 | auto 在高峰时段使用的候选模型。允许使用逗号分隔的列表;可加入无附加费用的模型(例如 glm-4.7),以避开高峰附加费。 |
GLM_CHEAP_MODEL | glm-4.5-air | 廉价模型(用于全 GLM 启动器的 Haiku 插槽)。 |
GLM_PEAK_START_CN | 14 | 高峰时段开始时间,中国时间(UTC+8)。 |
GLM_PEAK_END_CN | 18 | 高峰时段结束时间(不含),中国时间(UTC+8)。 |
峰值时段感知路由与成本
中国峰值时段为 14:00–18:00(UTC+8)。glm-5.x 系列在峰值时段会收取附加费用(峰值时段约 3 倍/非峰值时段约 2 倍),因此当 auto 在峰值时段选中 glm-5.x 模型时,路由器会将较少的工作路由到 GLM;如果你列出一个不收取附加费用的模型(例如 GLM_PEAK_MODEL=glm-5.2,glm-4.7),路由器会在峰值时段优先选择它,使用 GLM 也依然划算。无论如何,成本倾向都让 GLM 保持默认选择——即使在峰值时段,它也比主模型便宜。
仍由主模型处理的内容: 敏感/机密代码、视觉输入、并行扇出、超过 128K 的上下文、对延迟要求严格的循环,以及繁重的依赖型工具循环(路由器的硬性覆盖规则)。
GLM 确实在运行的证明
usage.jsonl记录文件 — 每次 GLM 调用都会追加写入磁盘,包含model、input_tokens和output_tokens。Claude:~/.claude/glm-mcp/usage.jsonl;Copilot:~/.glm-mcp/glm-mcp/usage.jsonl。此记录独立于 Z.ai 控制面板。glm_status— 打印累计记录总量(调用次数、令牌数、各模型的调用次数)。=== GLM STATS ===区块 — 每次glm_agent运行后都会打印:模型、委派的令牌数、迭代次数、变更文件数,以及相较 Opus 的预估成本。
如果记录文件为空,说明从未调用 GLM——工作由主模型完成。
监督与安全
glm_agent上的dry_run: true— GLM 提出完整差异,但不会写入任何内容;应用前可先审批。- Git 检查点还原命令 — 每次实际运行
glm_agent后都会打印(当工作目录是 git 仓库时),因此你可以用一条命令撤销更改。 - 密钥隔离 —
GLM_API_KEY仅存放在被 git 忽略的.env中;绝不会打包进 npm 包(scripts/publish-server.mjs会扫描每个包中的.env、usage.jsonl和node_modules,发现问题时会明确报错)。 - 数据驻留 — GLM 流量会发送到 Z.ai 在中国的服务器。请让主模型处理机密和受监管代码;路由器的
sensitive标志会强制将其路由到主模型。
开发 / CI
CI(参见 .github/workflows/ci.yml)会运行:对服务端以及每个安装程序/钩子/脚本进行语法检查;无密钥 stdio 冒烟测试(scripts/smoke-stdio.mjs),确保在磁盘上没有密钥的情况下完成四工具 MCP 握手;Docker 内省测试(将 initialize 输入到构建好的镜像中);以及 npm 包机密扫描(scripts/publish-server.mjs)。欢迎提交 PR——请参阅 CONTRIBUTING.md。
许可证
MIT © djerok · 规范仓库:https://github.com/djerok/glm-mcp
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。