Skip to main content
Glama

mcp-cogview

基于 TypeScript / Node.js 的 Streamable HTTP + SSE MCP 服务,对接智谱 CogView 文生图模型,同时内置 live 存活接口用于健康探针。

快速开始

# 1. 安装依赖
npm install

# 2. 配置 API Key(任选其一填到 .env)
#    也可以直接在 .env 里填 ZHIPU_API_KEY=sk-xxxx
cp .env.example .env
# Windows CMD:        notepad .env
# Windows PowerShell: code .env   (或任意编辑器)

# 3. 启动
npm start            # 加载 .env,启动 http://127.0.0.1:3000
npm run start:mock   # 强制 mock 模式(即使填了 Key 也不调用真实 API)
npm run start:real   # 强制真实模式(缺 Key 时返回 401 而不是 mock)
npm run verify       # 端到端验证(自身强制 mock,29 项断言)
npm run typecheck    # 类型检查
npm run dev          # 热重载开发

Windows 用户:所有命令都通过 npm 触发,已用 cross-env + Node 内置 --env-file=.env 实现跨平台,无需手动 set / $env:。把 API Key 直接写到 .env 文件即可。

未设置 API Key 时自动进入 mock 模式:调用 generate_image 会返回基于 prompt 派生的 placehold.co 占位图,便于本地/无密钥环境跑通端到端验证。

Related MCP server: universal-image-mcp

目录结构

src/
├── framework/                # 与业务无关的框架层(沿用 starter)
│   ├── types.ts              # McpModule / ModuleContext / ServerConfig 等契约
│   ├── logger.ts             # JSON 行结构化日志
│   ├── event-store.ts        # 内存事件存储(Last-Event-ID 断线续传)
│   ├── app.ts                # 核心:模块注册表 + 会话管理 + 传输层装配
│   └── http.ts               # Express 路由:MCP 端点 + live/ready 探针 + CORS
├── modules/
│   ├── live.ts               # live 健康检查模块(tool + resource + prompt)
│   ├── cogview-client.ts     # 智谱 CogView 文生图 API 客户端(fetch + 异步轮询)
│   └── cogview.ts            # CogView MCP 模块:generate_image 工具 + 模型清单资源
├── config.ts                 # 服务配置 + CogView 模块配置
├── server.ts                 # 组装与启动
└── index.ts                  # 进程入口 + 信号处理
scripts/verify.ts             # 端到端验证脚本(mock 模式自动启用)

HTTP 接口

方法

路径

说明

POST

/mcp

Streamable HTTP 请求入口(JSON-RPC)

GET

/mcp

独立 SSE 通知流,支持 Last-Event-ID 续传

DELETE

/mcp

终止会话

GET

/sse

旧版 HTTP+SSE 传输(2024-11-05,兼容用)

POST

/messages

旧版传输的消息回传通道

GET

/live

存活探针(k8s livenessProbe)

GET

/ready

就绪探针(k8s readinessProbe)

GET

/

服务元信息

GET /live 返回:

{
  "status": "live",
  "service": "mcp-cogview",
  "version": "0.1.0",
  "protocol": "streamable-http",
  "uptimeMs": 16048,
  "startedAt": "2026-08-05T01:43:00.213Z",
  "pid": 8780,
  "sessions": { "active": 0, "created": 1 },
  "requestsTotal": 7,
  "toolCalls": 2,
  "memory": { "rssMB": 79.1, "heapUsedMB": 22.4, "heapTotalMB": 24 },
  "modules": [
    { "name": "live", "version": "1.0.0" },
    { "name": "cogview", "version": "1.0.0" }
  ],
  "endpoints": { "mcp": "/mcp", "live": "/live", "...": "..." }
}

MCP 能力

类型

名称

说明

tool

live

返回完整运行期状态(带 outputSchema 结构化输出)

tool

live_ping

最轻量连通性探测,回显 + 服务端时间戳

tool

live_watch

持续推送心跳(日志 + 进度通知),验证 SSE 下行流

tool

generate_image

同步文生图:调用 CogView,返回图片 URL 或 base64

tool

generate_image_async

异步文生图:提交任务并轮询,期间通过 SSE 推送进度

resource

live://status

以 JSON 资源形式暴露服务状态

resource

cogview://models

模型清单与尺寸白名单

prompt

live_diagnose

健康诊断提示词模板

prompt

cogview_prompt_polish

把用户需求改写为 CogView 文生图 prompt 的提示词

CogView 文生图

generate_image 输入:

参数

类型

默认

说明

prompt

string

必填

文本提示词(≤ 1000 字符,中英文均可)

model

enum

cogview-3-plus

cogview-3 / cogview-3-plus

size

enum

1024x1024

1024x1024 / 768x1344 / 864x1152 / 1344x768 / 1152x864

userId

string

业务侧用户标识

responseFormat

enum

url

url 返回可访问链接;b64_json 返回 base64

同步调用返回:

{
  "created": 1754361600,
  "model": "cogview-3-plus",
  "size": "1024x1024",
  "images": [
    { "url": "https://...", "b64Bytes": null, "mimeType": "image/png" }
  ],
  "usage": { "promptTokens": 12, "completionTokens": null, "totalTokens": null },
  "mock": false
}

generate_image_async 的额外行为:

  • 提交任务后立即返回 request_id 并不阻塞(异步版本)。

  • 内部按 COGVIEW_POLL_INTERVAL_MS 轮询,直到任务 SUCCESSFAILURE,或超过 COGVIEW_POLL_TIMEOUT_MS

  • 轮询过程通过 SSE 推送 notifications/progressnotifications/message,客户端可在 UI 展示进度。

  • 最终结构化输出包含 requestId / elapsedMs / polls / taskStatus / images

配置(环境变量)

变量

默认值

说明

PORT

3000

监听端口

HOST

127.0.0.1

监听地址

MCP_NAME / MCP_VERSION

mcp-cogview / 0.1.0

initialize 中上报的服务标识

MCP_PATH

/mcp

Streamable HTTP 端点

MCP_LIVE_PATH

/live

存活探针路径

MCP_STATELESS

false

无状态模式(每请求独立 server)

MCP_SESSION_IDLE_MS

600000

会话空闲回收阈值,0 表示不回收

MCP_ALLOWED_ORIGINS

逗号分隔白名单,配置后开启 DNS 重绑定防护

LOG_LEVEL

info

debug / info / warn / error

ZHIPU_API_KEY

智谱 API Key(也接受 GLM_API_KEY / COGVIEW_API_KEY

COGVIEW_ENDPOINT

https://open.bigmodel.cn/api/paas/v4/images/generations

文生图 API 端点

COGVIEW_MODEL

cogview-3-plus

默认模型

COGVIEW_SIZE

1024x1024

默认尺寸

COGVIEW_RESPONSE_FORMAT

url

默认返回格式

COGVIEW_POLL_INTERVAL_MS

2000

异步任务轮询间隔

COGVIEW_POLL_TIMEOUT_MS

120000

异步任务最大等待时间

COGVIEW_REQUEST_TIMEOUT_MS

60000

单次 HTTP 请求超时

COGVIEW_MOCK

未设置 API Key 时自动为 true

启用后调用不会访问智谱 API,返回占位响应

在 Claude Code 中接入

claude mcp add --transport http cogview http://127.0.0.1:3000/mcp

仓库根目录的 .mcp.json 已声明 cogview 入口,Claude Code 启动即可自动发现。

curl 手动验证

# 0. 启动服务(写入 .env 后,无需手动 set/export)
#    .env 里有 ZHIPU_API_KEY=sk-xxxxxxxx
npm start &

# 1. 存活探针
curl -s http://127.0.0.1:3000/live | jq

# 2. initialize(从响应头取 Mcp-Session-Id)
SID=$(curl -s -D - -X POST http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' \
  | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}' | tr -d '\r')

curl -s -X POST http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

# 3. 列出可用模型
curl -s -X POST http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"resources/read","params":{"uri":"cogview://models"}}'

# 4. 文生图
curl -s -X POST http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -H "Mcp-Session-Id: $SID" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"generate_image","arguments":{"prompt":"赛博朋克少女,霓虹背景","size":"1024x1024"}}}'

Windows CMD/PowerShell 下 SID=$(...) 不工作,可以改用:

# PowerShell
$sid = (curl -s -D - -X POST http://127.0.0.1:3000/mcp `
  -H 'Content-Type: application/json' `
  -H 'Accept: application/json, text/event-stream' `
  -d '{...}' `
  | Select-String -Pattern '(?im)^Mcp-Session-Id:\s*(\S+)' `
  | ForEach-Object { $_.Matches[0].Groups[1].Value })
$env:SID = $sid

也可以直接用项目自带的 npm run verify 做端到端验证,无需手动 curl。

扩展新模块

框架以「模块」为扩展单元。每个新会话都会用一个全新的 McpServer 实例回调一次 register

// src/modules/echo.ts
import { z } from 'zod';
import type { McpModule } from '../framework/types.js';

export const echoModule: McpModule = {
    name: 'echo',
    version: '1.0.0',
    register(server, ctx) {
        server.registerTool(
            'echo',
            { description: '回显输入', inputSchema: { text: z.string() } },
            async ({ text }) => {
                ctx.markToolCall();
                return { content: [{ type: 'text', text }] };
            }
        );
    }
};

src/server.tsapp.use(echoModule) 即可生效。

生产化清单

  • InMemoryEventStore → Redis / 持久化实现(多实例部署必需)

  • 会话状态外置,或在网关层做会话粘性

  • 接入 OAuth(SDK 提供 server/auth 模块)

  • 结构化日志接入采集链路,/live /ready 挂到 k8s 探针

  • 智谱 API Key 通过密钥管理服务注入,避免明文落盘

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Superlittlemy/image_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server