Skip to main content

MCP server for ZhipuAI GLM — chat, text embeddings, translation, vision, and OCR

Project description

glm-mcp

MCP server for ZhipuAI GLM — exposes chat, text embeddings, translation, vision, and OCR to Claude Code (and any MCP-compatible client) via the OpenAI-compatible API.

Tools

Tool Description
glm_chat Text completion — default model glm-4-flash, pass model= to use any GLM chat model (e.g. glm-5). Supports single-turn and multi-turn (messages= parameter). Sampling: temperature=0.7, top_p=0.95 (pass top_p=None to omit). Auto-fallback on transient errors (429/503/timeout/connection) via auto_fallback=True (default). Use avoid_peak_hours=True to pre-emptively switch during peak hours (UTC+8 14:00–18:00).
glm_embed Text embeddings — default model embedding-3, pass model= to override
glm_usage_summary Query token usage from ~/.glm-mcp/usage.jsonl. Parameters: days (default 7), model (optional filter). Returns period, total tokens, by_tool, by_model.
glm_translate Pure single-language translation — default model glm-4.7. Parameters: text, target_lang ("ja", "zh", "en"), source_lang (default "auto"), style ("formal" or "casual", default "formal"). Sampling: temperature=1.0, top_p=0.8 (GLM-4.7 Plan B: top_p as primary control; pass top_p=None to omit). Outputs ONLY the target language, solving the mixed Chinese–Japanese output problem common with general LLMs.
glm_vision Multimodal image analysis — default model glm-4.6v. Parameters: image_url (HTTP/HTTPS URL or Base64 string), prompt, detail ("auto", "low", "high"), max_tokens (default 2048). Sampling: temperature=0.2, top_p=0.9 (focused stable analysis; pass top_p=None to omit). Auto-fallback to glm-4.6v-flash on 429/503/timeout. Bare Base64 strings are automatically prefixed with data:image/png;base64,.
glm_ocr Document and image OCR — default model glm-ocr. Parameters: file (HTTP/HTTPS URL, Base64 string, data: URI, or local file path), model, start_page_id, end_page_id. Returns extracted text as Markdown. Local files are auto-encoded as Base64; bare Base64 strings are prefixed with data:application/pdf;base64,.

Quick Start

Install via uvx (recommended)

uvx glm-mcp

Add to Claude Code

Add to ~/.claude.json:

{
  "mcpServers": {
    "glm-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["glm-mcp"],
      "env": {
        "GLM_API_KEY": "your_api_key_here"
      }
    }
  }
}

Get your API key at https://open.bigmodel.cn/.

Run from source

git clone https://github.com/sky-zhang01/glm-mcp
cd glm-mcp
uv sync
GLM_API_KEY=your_key uv run glm-mcp

Environment Variables

Variable Required Default Description
GLM_API_KEY Yes ZhipuAI API key
GLM_BASE_URL No https://open.bigmodel.cn/api/paas/v4/ API endpoint override
GLM_MCP_LOG_DIR No ~/.glm-mcp/ Directory for usage.jsonl token log

Token Usage Logging

Each tool call appends a JSON line to ~/.glm-mcp/usage.jsonl:

{"timestamp": "...", "tool": "glm_chat", "model": "glm-4-flash", "input_tokens": 13, "output_tokens": 15, "fallback_used": false, "original_model": null, "fallback_reason": null}

When fallback is triggered:

{"timestamp": "...", "tool": "glm_chat", "model": "glm-4.7", "input_tokens": 13, "output_tokens": 15, "fallback_used": true, "original_model": "GLM-5", "fallback_reason": "429"}

Development

uv sync --dev
uv run pytest --cov=glm_mcp --cov-report=term-missing

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glm_mcp-0.8.1.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glm_mcp-0.8.1-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file glm_mcp-0.8.1.tar.gz.

File metadata

  • Download URL: glm_mcp-0.8.1.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for glm_mcp-0.8.1.tar.gz
Algorithm Hash digest
SHA256 f03f56cf21cc31997d9a1ac0c3ca4b222335fca31bcd545612a6489f55735be3
MD5 3764eeb7121e507b0d234a747ea70344
BLAKE2b-256 d4037c0debc299ba05f3d5a2ed4254dd60ee9bbbc6c11db6909236105dd72ff3

See more details on using hashes here.

File details

Details for the file glm_mcp-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: glm_mcp-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 15.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for glm_mcp-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e015d4a4fc2dad568e6a35f5a847b6e6ba4bbc7e7affd3be30e6e146f574f8b8
MD5 c02fe25b3d7284ee782395323e952bce
BLAKE2b-256 d725a7d252e96e454db82ee2058320c844096e5c143052690dcb7de5c72a51e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page