wechat-mcp-publisher
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 |
| Bild-Text-Entwurf: akzeptiert HTML (oder |
| Bildnachrichten-Entwurf: reine Textbeschreibung + 1~20 Bilder (in Reihenfolge) |
| Entwürfe seitenweise abrufen |
| Entwurfsdetails (inkl. Inhalt) |
| 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_SECRETAnmeldedaten 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-publisherDie 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_publisherProjektweite 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 pytestAlle 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
48001zurü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 toolscreate_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)的图片保持不变。
| Name | Required | Description | Default |
|---|---|---|---|
| cover | Yes | ||
| title | Yes | ||
| author | No | ||
| digest | No | ||
| content | Yes | ||
| content_source_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
create_newspic_draftA
创建图片消息草稿(newspic),成功返回 {"media_id": ..., "title": ..., "image_count": ...}。
参数:
title: 消息标题(必填)
images: 1~20 张图片,按传入顺序展示;每项为本地文件路径或 http(s) URL
content: 图片下方的纯文字说明(可选,注意不是 HTML)
与图文消息不同:图片消息的 content 是纯文本,图片本体在 images 中,
全部经永久素材接口上传后按序组装。
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| images | Yes | ||
| content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
delete_draftA
删除指定草稿,成功返回 {"media_id": ..., "deleted": true}。
注意:删除草稿不会连带删除其占用的永久素材图片(微信行为)。
参数:
media_id: 草稿 ID
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_draftA
查询草稿详情(含 news_item 全部字段:标题、正文 HTML、封面等)。
参数:
media_id: 草稿 ID(由 create_news_draft / create_newspic_draft 返回,或从 list_drafts 获取)
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
list_draftsA
分页查询草稿箱列表,返回 {"total": 总数, "offset": 当前偏移, "items": [{media_id, title, update_time}]}。
参数:
offset: 起始位置(默认 0)
count: 每页数量(默认 20,最大 20)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
create_news_draft - First observed
create_newspic_draft - First observed
delete_draft - First observed
get_draft - First observed
list_drafts
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Turn finished agent work into a shareable, updatable web page that opens in WeChat. OAuth required.
Publish HTML or markdown from your agent as a shareable link, with password or work-email walls. No key needed to start: your agent can create the account and verify the email right from the chat, then publish.
Publish HTML to private, unguessable, replace-in-place URLs from any MCP-compatible AI agent.
Publish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables saving articles to WeChat Official Account drafts with support for rich text, automatic image upload, and Markdown rendering including Mermaid diagrams.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables management of WeChat Official Accounts by supporting draft creation, image uploads, and content publishing via the MCP protocol. It provides tools for interacting with the WeChat API, including secure token caching and draft list management.-
- AlicenseNot gradedqualityBmaintenanceBridges AI writing and content platforms by enabling AI agents to format Markdown and publish posts directly to WeChat Official Accounts with automatic image handling. It supports conversational theme management and streamlined drafting to eliminate the need for manual copy-pasting between editors.118 npm1,354Apache 2.0
- AlicenseAqualityFmaintenanceEnables AI agents to publish articles to WeChat Official Account (微信公众号). Supports image upload, draft creation, and publishing via standardized MCP protocol.51ISC