@wenyan-md/mcp 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +84 -120
  2. package/package.json +7 -6
package/README.md CHANGED
@@ -1,4 +1,6 @@
1
- ![logo](data/wenyan-mcp.png)
1
+ <div align="center">
2
+ <img alt = "logo" src="https://media.githubusercontent.com/media/caol64/wenyan-mcp/main/data/wenyan-mcp.png" />
3
+ </div>
2
4
 
3
5
  # 文颜 MCP Server
4
6
 
@@ -8,94 +10,64 @@
8
10
  [![Docker Pulls](https://img.shields.io/docker/pulls/caol64/wenyan-mcp)](https://hub.docker.com/r/caol64/wenyan-mcp)
9
11
  [![Stars](https://img.shields.io/github/stars/caol64/wenyan-mcp?style=social)](https://github.com/caol64/wenyan-mcp)
10
12
 
11
- 「文颜」是一款多平台排版美化工具,让你将 Markdown 一键发布至微信公众号、知乎、今日头条等主流写作平台。
13
+ ## 简介
12
14
 
13
- **文颜**现已推出多个版本:
15
+ **文颜(Wenyan)** 是一款多平台 Markdown 排版与发布工具,支持将 Markdown 一键转换并发布至:
14
16
 
15
- * [macOS App Store 版](https://github.com/caol64/wenyan) - MAC 桌面应用
16
- * [跨平台版本](https://github.com/caol64/wenyan-pc) - Windows/Linux 跨平台桌面应用
17
- * [CLI 版本](https://github.com/caol64/wenyan-cli) - CI/CD 或脚本自动化发布公众号文章
18
- * [MCP 版本](https://github.com/caol64/wenyan-mcp) - 让 AI 自动发布公众号文章
19
- * [嵌入版本](https://github.com/caol64/wenyan-core) - 将文颜的核心功能嵌入 Node 或者 Web 项目
17
+ - 微信公众号
18
+ - 知乎
19
+ - 今日头条
20
+ - 以及其它内容平台(持续扩展中)
20
21
 
21
- 文颜 MCP Server 是一个基于模型上下文协议(Model Context Protocol, MCP)的服务器组件,支持将 Markdown 格式的文章发布至微信公众号草稿箱,并使用与 [文颜](https://yuzhi.tech/wenyan) 相同的主题系统进行排版。
22
+ 文颜的目标是:**让写作者专注内容,而不是排版和平台适配**。
22
23
 
23
- https://github.com/user-attachments/assets/2c355f76-f313-48a7-9c31-f0f69e5ec207
24
+ 本仓库是 **文颜的 MCP Server 版本**,基于模型上下文协议(Model Context Protocol),旨在让 AI 助手(如 Claude Desktop)具备自动排版和发布公众号文章的能力。
24
25
 
25
- 使用场景:
26
+ ## 文颜的不同版本
26
27
 
27
- - [让AI帮你管理公众号的排版和发布](https://babyno.top/posts/2025/06/let-ai-help-you-manage-your-gzh-layout-and-publishing/)
28
+ 文颜目前提供多种形态,覆盖不同使用场景:
28
29
 
29
- ## 功能
30
+ - [macOS App Store 版](https://github.com/caol64/wenyan) - MAC 桌面应用
31
+ - [跨平台桌面版](https://github.com/caol64/wenyan-pc) - Windows/Linux
32
+ - [CLI 版本](https://github.com/caol64/wenyan-cli) - 命令行工具
33
+ - 👉 [MCP 版本](https://github.com/caol64/wenyan-mcp) - 本项目
34
+ - [核心库](https://github.com/caol64/wenyan-core) - 嵌入 Node / Web 项目
30
35
 
31
- - 列出并选择支持的文章主题
32
- - 使用内置主题对 Markdown 内容排版
33
- - 发布文章到微信公众号草稿箱
34
- - 自动上传本地或网络图片
36
+ ## 功能特性
35
37
 
36
- ## 主题效果
38
+ - 列出并选择支持的文章主题
39
+ - 使用内置主题对 Markdown 内容排版
40
+ - 自动处理并上传图片(本地 / 网络)
41
+ - 一键发布文章到微信公众号草稿箱
42
+ - **与 AI 深度集成**:让 AI 帮你管理公众号的排版和发布
37
43
 
38
- 👉 [内置主题预览](https://yuzhi.tech/docs/wenyan/theme)
39
-
40
- 文颜采用了多个开源的 Typora 主题,在此向各位作者表示感谢:
41
-
42
- - [Orange Heart](https://github.com/evgo2017/typora-theme-orange-heart)
43
- - [Rainbow](https://github.com/thezbm/typora-theme-rainbow)
44
- - [Lapis](https://github.com/YiNNx/typora-theme-lapis)
45
- - [Pie](https://github.com/kevinzhao2233/typora-theme-pie)
46
- - [Maize](https://github.com/BEATREE/typora-maize-theme)
47
- - [Purple](https://github.com/hliu202/typora-purple-theme)
48
- - [物理猫-薄荷](https://github.com/sumruler/typora-theme-phycat)
49
-
50
- ## 使用方式
51
-
52
- ### 方式一:本地安装(推荐)
53
-
54
- ```
55
- npm install -g @wenyan-md/mcp
56
- ```
44
+ ## 主题效果预览
57
45
 
58
- #### 与 MCP Client 集成
59
-
60
- 在你的 MCP 配置文件中加入以下内容:
46
+ 👉 [内置主题预览](https://yuzhi.tech/docs/wenyan/theme)
61
47
 
62
- ```json
63
- {
64
- "mcpServers": {
65
- "wenyan-mcp": {
66
- "name": "公众号助手",
67
- "command": "wenyan-mcp",
68
- "env": {
69
- "WECHAT_APP_ID": "your_app_id",
70
- "WECHAT_APP_SECRET": "your_app_secret"
71
- }
72
- }
73
- }
74
- }
75
- ```
48
+ 文颜内置并适配了多个优秀的 Typora 主题,在此感谢原作者:
76
49
 
77
- > 说明:
78
- >
79
- > * `WECHAT_APP_ID` 微信公众号平台的 App ID
80
- > * `WECHAT_APP_SECRET` 微信平台的 App Secret
50
+ - [Orange Heart](https://github.com/evgo2017/typora-theme-orange-heart)
51
+ - [Rainbow](https://github.com/thezbm/typora-theme-rainbow)
52
+ - [Lapis](https://github.com/YiNNx/typora-theme-lapis)
53
+ - [Pie](https://github.com/kevinzhao2233/typora-theme-pie)
54
+ - [Maize](https://github.com/BEATREE/typora-maize-theme)
55
+ - [Purple](https://github.com/hliu202/typora-purple-theme)
56
+ - [物理猫-薄荷](https://github.com/sumruler/typora-theme-phycat)
81
57
 
82
- ---
58
+ ## 安装与集成
83
59
 
84
- ### 方式二:编译运行
60
+ 文颜 MCP Server 支持多种运行方式,请根据你的环境选择。
85
61
 
86
- #### 编译
62
+ ### 方式一:npm 安装(推荐)
87
63
 
88
- 确保已安装 [Node.js](https://nodejs.org/) 环境:
64
+ 直接安装到本地:
89
65
 
90
66
  ```bash
91
- git clone https://github.com/caol64/wenyan-mcp.git
92
- cd wenyan-mcp
93
-
94
- npm install
95
- npx tsc -b
67
+ npm install -g @wenyan-md/mcp
96
68
  ```
97
69
 
98
- #### MCP Client 集成
70
+ **配置 MCP Client(如 Claude Desktop):**
99
71
 
100
72
  在你的 MCP 配置文件中加入以下内容:
101
73
 
@@ -104,10 +76,7 @@ npx tsc -b
104
76
  "mcpServers": {
105
77
  "wenyan-mcp": {
106
78
  "name": "公众号助手",
107
- "command": "node",
108
- "args": [
109
- "Your/path/to/wenyan-mcp/dist/index.js"
110
- ],
79
+ "command": "wenyan-mcp",
111
80
  "env": {
112
81
  "WECHAT_APP_ID": "your_app_id",
113
82
  "WECHAT_APP_SECRET": "your_app_secret"
@@ -117,34 +86,17 @@ npx tsc -b
117
86
  }
118
87
  ```
119
88
 
120
- > 说明:
121
- >
122
- > * `WECHAT_APP_ID` 微信公众号平台的 App ID
123
- > * `WECHAT_APP_SECRET` 微信平台的 App Secret
124
-
125
- ---
126
-
127
- ### 方式三:使用 Docker 运行(推荐)
89
+ ### 方式二:Docker 运行(推荐)
128
90
 
129
- 适合部署到服务器环境,或与本地 AI 工具链集成。
91
+ 适合部署到服务器环境,或希望环境隔离的用户。
130
92
 
131
- #### 你可以直接下载编译好的docker镜像
93
+ **拉取镜像:**
132
94
 
133
95
  ```bash
134
96
  docker pull caol64/wenyan-mcp
135
97
  ```
136
98
 
137
- #### 或者自己构建镜像
138
-
139
- ```bash
140
- docker build -t wenyan-mcp .
141
- # 国内用户可以指定`npm`镜像源。
142
- docker build --build-arg NPM_REGISTRY=https://mirrors.cloud.tencent.com/npm/ -t wenyan-mcp .
143
- ```
144
-
145
- #### 与 MCP Client 集成
146
-
147
- 在你的 MCP 配置文件中加入以下内容:
99
+ **配置 MCP Client:**
148
100
 
149
101
  ```json
150
102
  {
@@ -156,53 +108,63 @@ docker build --build-arg NPM_REGISTRY=https://mirrors.cloud.tencent.com/npm/ -t
156
108
  "run",
157
109
  "--rm",
158
110
  "-i",
159
- "-v", "/your/host/image/path:/mnt/host-downloads",
111
+ "-v", "/your/host/file/path:/mnt/host-downloads",
160
112
  "-e", "WECHAT_APP_ID=your_app_id",
161
113
  "-e", "WECHAT_APP_SECRET=your_app_secret",
162
- "-e", "HOST_IMAGE_PATH=/your/host/image/path",
163
- "wenyan-mcp"
114
+ "-e", "HOST_FILE_PATH=/your/host/file/path",
115
+ "caol64/wenyan-mcp"
164
116
  ]
165
117
  }
166
118
  }
167
119
  }
168
120
  ```
169
121
 
170
- > 说明:
122
+ > **Docker 配置特别说明:**
171
123
  >
172
- > * `-v` 挂载宿主机目录,使容器内部可以访问本地图片。与环境变量`HOST_IMAGE_PATH`保持一致。你的 `Markdown` 文章内的本地图片应该都放置在该目录中,docker会自动将它们映射到容器内。容器无法读取在该目录以外的图片。
173
- > * `-e` 注入docker容器的环境变量:
174
- > * `WECHAT_APP_ID` 微信公众号平台的 App ID
175
- > * `WECHAT_APP_SECRET` 微信平台的 App Secret
176
- > * `HOST_IMAGE_PATH` 宿主机图片目录
124
+ > * **挂载目录 (`-v`)**:必须将宿主机的文件/图片目录挂载到容器内的 `/mnt/host-downloads`。
125
+ > * **环境变量 (`HOST_FILE_PATH`)**:必须与宿主机挂载的文件/图片目录路径保持一致。
126
+ > * **原理**:你的 Markdown 文件/文章内所引用的本地图片应放置在该目录中,Docker 会自动将其映射,使容器能够读取并上传。
177
127
 
178
- ## 微信公众号 IP 白名单
128
+ ## 环境变量说明
129
+
130
+ 无论使用哪种方式,都需要配置以下环境变量以连接微信公众号平台:
179
131
 
180
- 请务必将服务器 IP 加入公众号平台的 IP 白名单,以确保上传接口调用成功。
181
- 详细配置说明请参考:[https://yuzhi.tech/docs/wenyan/upload](https://yuzhi.tech/docs/wenyan/upload)
132
+ - `WECHAT_APP_ID`:微信公众号平台的 App ID
133
+ - `WECHAT_APP_SECRET`:微信公众号平台的 App Secret
182
134
 
183
- ## 配置说明(Frontmatter
135
+ ## Markdown Frontmatter 说明(必读)
184
136
 
185
- 为了可以正确上传文章,需要在每一篇 Markdown 文章的开头添加一段`frontmatter`,提供`title`、`cover`两个字段:
137
+ 为了正确上传文章,每篇 Markdown 顶部需要包含 frontmatter
186
138
 
187
139
  ```md
188
140
  ---
189
141
  title: 在本地跑一个大语言模型(2) - 给模型提供外部知识库
190
- cover: /Users/lei/Downloads/result_image.jpg
142
+ cover: /Users/xxx/image.jpg
191
143
  ---
192
144
  ```
193
145
 
194
- * `title` 是文章标题,必填。
195
- * `cover` 是文章封面,支持本地路径和网络图片:
146
+ 字段说明:
196
147
 
197
- * 如果正文有至少一张图片,可省略,此时将使用其中一张作为封面;
198
- * 如果正文无图片,则必须提供 cover。
148
+ - `title` 文章标题(必填)
149
+ - `cover` 文章封面
150
+ - 本地路径或网络图片
151
+ - 如果正文有至少一张图片,可省略,此时将使用其中一张作为封面
152
+ - 如果正文无图片,则必须提供 cover
199
153
 
200
154
  ## 关于图片自动上传
201
155
 
202
- * 支持图片路径:
156
+ 支持以下图片来源:
157
+
158
+ - 本地路径(如:`/Users/lei/Downloads/result_image.jpg`)
159
+ - 网络路径(如:`https://example.com/image.jpg`)
203
160
 
204
- * 本地路径(如:`/Users/lei/Downloads/result_image.jpg`)
205
- * 网络路径(如:`https://example.com/image.jpg`)
161
+ ## 微信公众号 IP 白名单
162
+
163
+ > ⚠️ 重要
164
+ >
165
+ > 请确保运行文颜 MCP Server 的机器 IP 已加入微信公众号后台的 IP 白名单,否则上传接口将调用失败。
166
+
167
+ 配置说明文档:[https://yuzhi.tech/docs/wenyan/upload](https://yuzhi.tech/docs/wenyan/upload)
206
168
 
207
169
  ## 示例文章格式
208
170
 
@@ -223,15 +185,15 @@ cover: /Users/lei/Downloads/result_image.jpg
223
185
 
224
186
  ## 如何调试
225
187
 
226
- 使用 Inspector 进行简单调试:
188
+ 推荐使用官方 Inspector 进行调试:
227
189
 
228
- ```
229
- npx @modelcontextprotocol/inspector
190
+ ```bash
191
+ npx @modelcontextprotocol/inspector <command>
230
192
  ```
231
193
 
232
194
  启动成功出现类似提示:
233
195
 
234
- ```
196
+ ```bash
235
197
  🔗 Open inspector with token pre-filled:
236
198
  http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=761c05058aa4f84ad02280e62d7a7e52ec0430d00c4c7a61492cca59f9eac299
237
199
  (Auto-open is disabled when authentication is enabled)
@@ -251,7 +213,9 @@ npx @modelcontextprotocol/inspector
251
213
 
252
214
  ## 赞助
253
215
 
254
- 如果您觉得这个项目不错,可以给我家猫咪买点罐头吃。[喂猫❤️](https://yuzhi.tech/sponsor)
216
+ 如果你觉得文颜对你有帮助,可以给我家猫咪买点罐头 ❤️
217
+
218
+ [https://yuzhi.tech/sponsor](https://yuzhi.tech/sponsor)
255
219
 
256
220
  ## License
257
221
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenyan-md/mcp",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "MCP server for Wenyan, a Markdown formatting tool that allows AI assistants to apply elegant built-in themes and publish articles directly to 微信公众号.",
5
5
  "author": "Lei <caol64@gmail.com> (https://github.com/caol64)",
6
6
  "license": "Apache-2.0",
@@ -31,17 +31,18 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@modelcontextprotocol/sdk": "0.6.0",
34
- "@wenyan-md/core": "^1.0.14"
34
+ "@wenyan-md/core": "^1.0.17"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/node": "^20.11.24",
38
- "typescript": "^5.3.3",
39
- "vitest": "^3.2.3"
37
+ "@types/node": "^24.3.0",
38
+ "dotenv-cli": "^10.0.0",
39
+ "typescript": "^5.9.2",
40
+ "vitest": "^3.2.4"
40
41
  },
41
42
  "scripts": {
42
43
  "build": "tsc",
43
44
  "watch": "tsc --watch",
44
- "inspector": "pnpm build && node ./run-inspector.js",
45
+ "inspector": "pnpm build && pnpm dotenv -e .env.test -- node ./run-inspector.js",
45
46
  "test": "pnpx vitest run",
46
47
  "upgrade:core": "pnpm update @wenyan-md/core"
47
48
  }