A stdio MCP proxy adding ergonomic transforms for WeCom robot-doc backend, enabling document and smartsheet CRUD operations.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag — we're steadily working through the catalog.
💡 Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Wecom Docs MCP Server.
⚠️ Archived 2026-08-18 — read this first
Unmaintained, and never published to PyPI. The
pip install wecom-docs-mcp-serverline further down does not work and never did — install from source if you still want to run it.Why it's archived
This server is a stdio proxy over WeCom's robot-doc MCP backend. Tencent's investment has visibly moved to a different surface: the official
WecomTeam/wecom-cli(Rust; rewritten for v1.1.0 on 2026-08-17, 14 service domains) plus the officialWecomTeam/wecom-unifiedagent skill. The robot-doc MCP backend has had no public update since 2026-04-22.What the official CLI now covers
Verified against
@wecom/cliv1.1.0 on 2026-08-18:
This project's selling point Status in v1.1.0 stdio transport Obsolete — the CLI is a local process. Any agent that can run a shell needs no MCP layer at all. ms-epoch → ISO 8601 Obsolete — the CLI returns 2026-08-17 12:17:25directly.Chinese error hints Obsolete — the CLI returns help_message+help_instruction, including a clickable authorization-repair link.Schema passthrough Obsolete — every subcommand accepts --schema(full JSON Schema with field descriptions) and--doc.Smartsheet cell unwrap Still unsolved. v1.1.0 still returns values[field] = [{"type":"text","text":...}], and long rich-text cells fragment into dozens of segments.If you came here to give an agent access to WeCom documents
Use the official CLI, not this:
The one part still worth copying
wecom_doc_mcp/transforms.py— the cell-unwrap transform. ~120 lines, no MCP dependency. Lift it as a post-processing filter on CLI output rather than running this server.Two empirical findings worth keeping
Observed 2026-07 against the robot-doc backend:
get_doc_contentandsmartsheet_get_*use independent permission scopes. The same bot can read a smartsheet viasmartsheet_get_records(errcode 0) and still get851003 no authorityfromget_doc_contenton that same document. Route reads by document type; one working scope proves nothing about the other.- Pass the full document
urlincluding?scode=rather than reconstructingdocid. The backend resolves the URL; stripping prefixes by hand yields301085 invalid docid.
An ergonomic stdio MCP facade over WeCom's official robot-doc MCP backend. It proxies all 25 backend tools verbatim and adds a transform layer that makes the raw output usable by LLM agents:
values[field] = [{"type":"text","text":...}] cells become plain scalars (in a _rows view).create_time, update_time) convert to ISO 8601.errcode 851003 etc. get _error_summary + _error_hint so the agent learns the fix, not just the code.Relationship to the backend: This server requires the official robot-doc MCP backend (an apikey from WeCom admin → 智能文档机器人 → API). It is a thin proxy + ergonomics layer, not a replacement.
The official robot-doc backend is an HTTP (StreamableHttp) MCP server. Two friction points: (1) many MCP clients and dev workflows prefer stdio; (2) its raw output is agent-hostile — nested cell format, ms-epoch strings, opaque error codes. This server bridges both:
| official robot-doc | this server | |
|---|---|---|
| Transport | HTTP (StreamableHttp) | stdio |
| Tool schema | raw 25 tools | same 25, passthrough |
| Cell format | [{"type":"text",...}] | unwrapped scalars (_rows) |
| Timestamps | ms-epoch strings | ISO 8601 |
| Error codes | 851003 only | + Chinese summary + fix hint |
| apikey | required | required (proxied) |
⚠️ Never published to PyPI.
pip install wecom-docs-mcp-serverreturns 404. Source install is the only path.
Clone + editable:
| Variable | Required | Description |
|---|---|---|
WECOM_MCP_APIKEY | yes | robot-doc apikey |
WECOM_MCP_BASE_URL | no | override backend URL (default https://qyapi.weixin.qq.com/mcp/robot-doc) |
claude_desktop_config.json)All 25 backend tools are exposed verbatim (fetched live at startup). By domain:
| Domain | Read | Write |
|---|---|---|
| doc | get_doc_content | create_doc, edit_doc_content, upload_doc_image, upload_doc_file |
| smartsheet (智能表) | get_sheet, get_fields, get_records | add/update/delete × sheet/fields/records |
| sheet (电子表格) | get_info | add_sub, delete_sub, update_range_data, append_data |
| smartpage (智能页面) | get_export_result | create, export_task |
Permission model (empirically observed 2026-07):
get_doc_contentandsmartsheet_get_*use independent permission scopes. A bot may read a smartsheet viasmartsheet_get_records(errcode 0) yet get851003 no authorityfromget_doc_contenton the same doc. Route reads by doc type.
Applied automatically on every tools/call response:
_rows on smartsheet_get_records — a flattened view where cells are unwrapped to scalars and top-level record fields (record_id, create_time, …) are preserved. The original records array is kept intact.q979lj) are untouched._error_summary + _error_hint on any non-zero errcode — Chinese explanation + concrete fix.Read a smartsheet end-to-end:
Pass the full
url(with?scode=) rather than guessingdocid— the backend resolves it. Manually extracting docid by stripping prefixes is error-prone (empirically:301085 invalid docid).
| errcode | meaning | fix |
|---|---|---|
| 851000 | 文档链接有误 | check url + scode, or use docid |
| 851002 | 文档类型与工具不兼容 | smartsheet → use smartsheet_get_* |
| 851003 | 无文档权限 | smartsheet 用 smartsheet_get_*;普通文档查后台权限 |
| 851008 | 缺文档内容读取权限 | 企微后台 → 机器人 → API 权限 |
| 301085 | 无效 docid | 用完整 url 含 scode |
| 40058 | 参数缺失 | smartsheet 需 sheet_id(先 get_sheet) |
| Project | Focus |
|---|---|
| official robot-doc MCP | backend (HTTP, ≥10 人企业) |
| wecom-bot-mcp-server | bot messaging via webhook |
| this server | robot-doc stdio proxy + ergonomics |
25 unit tests cover SSE/JSON parsing, ms-timestamp normalization, cell unwrap, error humanizing, and server routing/post-processing — all offline (httpx mocked).
MIT
Factual signals from GitHub, npm, and our automated checks — not a rating.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/beltran12138-wecom-docs-mcp-server)<a href="https://allmcps.com/mcp/beltran12138-wecom-docs-mcp-server"><img src="https://allmcps.com/api/badge/beltran12138-wecom-docs-mcp-server?style=directory" alt="Wecom Docs MCP Server on AllMCPs" /></a>