Skip to main content
Glama
wechat-mcp-publisher

wechat-mcp-publisher

by weinh

wechat-mcp-publisher

Lokales MCP-Tool zum Veröffentlichen von Entwürfen für 微信-Official-Accounts. Es macht aus „fertiges HTML → Entwurfsordner des 微信-Official-Accounts“ einen einzigen LLM-Werkzeugaufruf: Bild-Upload, Austausch eingebetteter Bilder im Text durch 微信-URLs, Cover-Material und Entwurfserstellung – alles automatisch.

Basiert auf dem offiziellen mcp SDK (2.x MCPServer), stdio-Transport, Einzelkonto; Abhängigkeiten werden über uv verwaltet.

Werkzeuge (5)

Werkzeug

Zweck

create_news_draft

Bild-Text-Entwurf: akzeptiert HTML (oder .html-Dateipfad) + Titelbild; eingebettete <img>-Tags werden automatisch hochgeladen und durch 微信-URLs ersetzt

create_newspic_draft

Bildnachrichten-Entwurf: reine Textbeschreibung + 1~20 Bilder (in Reihenfolge)

list_drafts

Entwürfe seitenweise abrufen

get_draft

Entwurfsdetails (inkl. Inhalt)

delete_draft

Entwurf löschen (ohne zugehörige Materialien zu löschen)

access_token wird intern abgerufen, gecacht und bei Ablauf selbstheilend erneuert (stable_token + automatisches Aktualisieren und einmaliger Wiederholversuch bei 40001/42001); es wird nicht als Werkzeug bereitgestellt. Fehler werden einheitlich in chinesische Meldungen mit Hinweisen zur Fehlerbehebung umgewandelt (z. B. 40164 weist auf das Hinzufügen zur IP-Whitelist hin, 48001 auf ein verifiziertes Konto) und enthalten keine Anmeldedaten.

Related MCP server: WeChat Official Account MCP Server

Installation

uv sync
cp .env.example .env   # 填入 WECHAT_APP_ID / WECHAT_APP_SECRET

Anmeldedaten abrufen: mp.weixin.qq.com → Einstellungen und Entwicklung → Grundkonfiguration. Auf derselben Seite muss die öffentliche IP des lokalen Rechners in die IP-Whitelist eingetragen werden, sonst meldet der Token-Abruf 40164.

Nach der Veröffentlichung auf PyPI lässt es sich auch ohne Klonen direkt ausführen (in einem Verzeichnis, das .env enthält):

uvx wechat-mcp-publisher
# 或 pip install wechat-mcp-publisher && wechat-mcp-publisher

Die MCP-Client-Konfiguration kann dann auf "command": "uvx", "args": ["wechat-mcp-publisher"] vereinfacht werden.

Einbindung in MCP-Clients

Claude Code (empfohlen, ein Befehl):

claude mcp add wechat-mcp-publisher -- uv run --directory /你的路径/wechat-mcp-publisher python -m wechat_mcp_publisher

Projektweite Konfiguration (dieses Repository enthält bereits .mcp.json; Claude Code aktiviert sie beim Öffnen im Repository-Verzeichnis; beim ersten Mal muss die Vertrauensbestätigung unter /mcp erfolgen): kein manuelles Hinzufügen nötig.

Claude Desktop / andere Clients: Fügen Sie den Ausschnitt aus examples/mcp-client-config.example.json in die entsprechende Konfigurationsdatei ein.

Verwendungsbeispiele

Anweisung an das LLM:

Hilf mir, /path/article.html als Bild-Text-Entwurf für den 微信-Official-Account zu veröffentlichen, mit /path/cover.jpg als Titelbild.

Oder für eine Bildnachricht:

Veröffentliche diese drei Bilder /a.jpg /b.jpg /c.jpg als Bildnachrichten-Entwurf, Beschreibungstext: Wochenend-Fotos.

Eine Demonstration der echten API-Kette finden Sie in examples/simple_usage.py (Token → Upload → Entwurfserstellung; dient zugleich als Smoke-Test gegen die echte API).

Tests

uv run pytest

Alle API-Endpunkte sind über responses gemockt und lassen sich ohne echtes Konto ausführen.

Umfang und bekannte Einschränkungen

  • Keine Markdown→HTML-Konvertierung: Der Haupttext wird als HTML entgegengenommen; für die Konvertierung nutzen Sie bitte Ihr vorhandenes md→html-Werkzeug.

  • Keine Veröffentlichung (freepublish): Derzeit reicht es nur bis zum Entwurf; die Veröffentlichung bleibt einer Erweiterung nach der Konto-Verifizierung vorbehalten.

  • Persönliches unverifiziertes Abo-Konto: Die Material-/Entwurfs-Endpunkte geben 48001 zurück; für die Validierung in der echten Umgebung wird ein verifiziertes Konto benötigt (Entwicklung und Tests sind nicht betroffen).

  • HTML-微信-Kompatibilität: Der 微信-Editor erkennt nur eine Teilmenge von HTML mit Inline-Stilen; die Layout-Anpassung übernimmt das vorgelagerte Konvertierungswerkzeug. Dieses Tool prüft und repariert nicht.

  • Materialanhäufung: Das Löschen eines Entwurfs löscht nicht die permanenten Materialbilder, die er belegt. Bei längerer Nutzung sollte gelegentlich im Backend des 微信-Official-Accounts aufgeräumt werden.

  • Einzelkonto: Die Anmeldedaten stammen aus .env; ein Wechsel zwischen mehreren Konten wird nicht angeboten.

Available Tools

5 tools
create_news_draftA

创建图文草稿(news),成功返回 {"media_id": ..., "title": ..., "cover_url": ...}。

参数:
  title: 文章标题(必填)
  content: 正文。支持两种形态——HTML 字符串,或本地 .html 文件路径
           (若该路径存在则自动读取文件,否则按 HTML 内容处理)
  cover: 封面图片(必填):本地文件路径或 http(s) URL,自动上传为封面素材
  author: 作者名(可选)
  digest: 摘要(可选,留空时微信自动截取正文)
  content_source_url: 原文链接(可选)

正文 HTML 中的 <img> 会自动上传到微信并替换 src 为微信托管的 URL;
已指向微信域名(mmbiz.qpic.cn / mp.weixin.qq.com)的图片保持不变。
NameRequiredDescriptionDefault
coverYes
titleYes
authorNo
digestNo
contentYes
content_source_urlNo

Output Schema

NameRequiredDescription

No output parameters

create_newspic_draftA

创建图片消息草稿(newspic),成功返回 {"media_id": ..., "title": ..., "image_count": ...}。

参数:
  title: 消息标题(必填)
  images: 1~20 张图片,按传入顺序展示;每项为本地文件路径或 http(s) URL
  content: 图片下方的纯文字说明(可选,注意不是 HTML)

与图文消息不同:图片消息的 content 是纯文本,图片本体在 images 中,
全部经永久素材接口上传后按序组装。
NameRequiredDescriptionDefault
titleYes
imagesYes
contentNo

Output Schema

NameRequiredDescription

No output parameters

delete_draftA

删除指定草稿,成功返回 {"media_id": ..., "deleted": true}。

注意:删除草稿不会连带删除其占用的永久素材图片(微信行为)。
参数:
  media_id: 草稿 ID
NameRequiredDescriptionDefault
media_idYes

Output Schema

NameRequiredDescription

No output parameters

get_draftA

查询草稿详情(含 news_item 全部字段:标题、正文 HTML、封面等)。

参数:
  media_id: 草稿 ID(由 create_news_draft / create_newspic_draft 返回,或从 list_drafts 获取)
NameRequiredDescriptionDefault
media_idYes

Output Schema

NameRequiredDescription

No output parameters

list_draftsA

分页查询草稿箱列表,返回 {"total": 总数, "offset": 当前偏移, "items": [{media_id, title, update_time}]}。

参数:
  offset: 起始位置(默认 0)
  count: 每页数量(默认 20,最大 20)
NameRequiredDescriptionDefault
countNo
offsetNo

Output Schema

NameRequiredDescription

No output parameters

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedcreate_news_draft
    • First observedcreate_newspic_draft
    • First observeddelete_draft
    • First observedget_draft
    • First observedlist_drafts

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation5/5

The two create tools are clearly separated by draft type (newspic vs news) with distinct parameter semantics, while list, get, and delete have unambiguous scopes. No two tools appear to overlap in purpose.

Naming Consistency4/5

Most tools follow a verb_noun snake_case pattern such as list_drafts, get_draft, and delete_draft. The create tools also align with verb+type+draft, though 'newspic' vs 'news' is a slightly non-parallel naming choice.

Tool Count5/5

Five tools is well-scoped for a draft-management server: two creation variants plus standard list, get, and delete operations. Each tool earns its place without unnecessary overlap or bloat.

Completeness3/5

The set covers create, read/list, and delete for drafts, but lacks an update_draft operation, forcing agents to delete and recreate to modify content. Additionally, despite the 'publisher' name, there is no publish/send tool, leaving a notable gap in the apparent domain.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers