@wenyan-md/mcp 1.0.6 → 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.
- package/README.md +86 -119
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -1,100 +1,73 @@
|
|
|
1
|
-
|
|
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
|
|
|
5
7
|
[](https://www.npmjs.com/package/@wenyan-md/mcp)
|
|
6
8
|
[](LICENSE)
|
|
7
9
|

|
|
10
|
+
[](https://hub.docker.com/r/caol64/wenyan-mcp)
|
|
8
11
|
[](https://github.com/caol64/wenyan-mcp)
|
|
9
12
|
|
|
10
|
-
|
|
13
|
+
## 简介
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
**文颜(Wenyan)** 是一款多平台 Markdown 排版与发布工具,支持将 Markdown 一键转换并发布至:
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* [嵌入版本](https://github.com/caol64/wenyan-core) - 将文颜的核心功能嵌入 Node 或者 Web 项目
|
|
17
|
+
- 微信公众号
|
|
18
|
+
- 知乎
|
|
19
|
+
- 今日头条
|
|
20
|
+
- 以及其它内容平台(持续扩展中)
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
文颜的目标是:**让写作者专注内容,而不是排版和平台适配**。
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
本仓库是 **文颜的 MCP Server 版本**,基于模型上下文协议(Model Context Protocol),旨在让 AI 助手(如 Claude Desktop)具备自动排版和发布公众号文章的能力。
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
## 文颜的不同版本
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
文颜目前提供多种形态,覆盖不同使用场景:
|
|
27
29
|
|
|
28
|
-
|
|
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 项目
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
- 使用内置主题对 Markdown 内容排版
|
|
32
|
-
- 发布文章到微信公众号草稿箱
|
|
33
|
-
- 自动上传本地或网络图片
|
|
36
|
+
## 功能特性
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
- 列出并选择支持的文章主题
|
|
39
|
+
- 使用内置主题对 Markdown 内容排版
|
|
40
|
+
- 自动处理并上传图片(本地 / 网络)
|
|
41
|
+
- 一键发布文章到微信公众号草稿箱
|
|
42
|
+
- **与 AI 深度集成**:让 AI 帮你管理公众号的排版和发布
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
文颜采用了多个开源的 Typora 主题,在此向各位作者表示感谢:
|
|
40
|
-
|
|
41
|
-
- [Orange Heart](https://github.com/evgo2017/typora-theme-orange-heart)
|
|
42
|
-
- [Rainbow](https://github.com/thezbm/typora-theme-rainbow)
|
|
43
|
-
- [Lapis](https://github.com/YiNNx/typora-theme-lapis)
|
|
44
|
-
- [Pie](https://github.com/kevinzhao2233/typora-theme-pie)
|
|
45
|
-
- [Maize](https://github.com/BEATREE/typora-maize-theme)
|
|
46
|
-
- [Purple](https://github.com/hliu202/typora-purple-theme)
|
|
47
|
-
- [物理猫-薄荷](https://github.com/sumruler/typora-theme-phycat)
|
|
48
|
-
|
|
49
|
-
## 使用方式
|
|
50
|
-
|
|
51
|
-
### 方式一:本地安装(推荐)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
npm install -g @wenyan-md/mcp
|
|
55
|
-
```
|
|
44
|
+
## 主题效果预览
|
|
56
45
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
在你的 MCP 配置文件中加入以下内容:
|
|
46
|
+
👉 [内置主题预览](https://yuzhi.tech/docs/wenyan/theme)
|
|
60
47
|
|
|
61
|
-
|
|
62
|
-
{
|
|
63
|
-
"mcpServers": {
|
|
64
|
-
"wenyan-mcp": {
|
|
65
|
-
"name": "公众号助手",
|
|
66
|
-
"command": "wenyan-mcp",
|
|
67
|
-
"env": {
|
|
68
|
-
"WECHAT_APP_ID": "your_app_id",
|
|
69
|
-
"WECHAT_APP_SECRET": "your_app_secret"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
48
|
+
文颜内置并适配了多个优秀的 Typora 主题,在此感谢原作者:
|
|
75
49
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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)
|
|
80
57
|
|
|
81
|
-
|
|
58
|
+
## 安装与集成
|
|
82
59
|
|
|
83
|
-
|
|
60
|
+
文颜 MCP Server 支持多种运行方式,请根据你的环境选择。
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
### 方式一:npm 安装(推荐)
|
|
86
63
|
|
|
87
|
-
|
|
64
|
+
直接安装到本地:
|
|
88
65
|
|
|
89
66
|
```bash
|
|
90
|
-
|
|
91
|
-
cd wenyan-mcp
|
|
92
|
-
|
|
93
|
-
npm install
|
|
94
|
-
npx tsc -b
|
|
67
|
+
npm install -g @wenyan-md/mcp
|
|
95
68
|
```
|
|
96
69
|
|
|
97
|
-
|
|
70
|
+
**配置 MCP Client(如 Claude Desktop):**
|
|
98
71
|
|
|
99
72
|
在你的 MCP 配置文件中加入以下内容:
|
|
100
73
|
|
|
@@ -103,10 +76,7 @@ npx tsc -b
|
|
|
103
76
|
"mcpServers": {
|
|
104
77
|
"wenyan-mcp": {
|
|
105
78
|
"name": "公众号助手",
|
|
106
|
-
"command": "
|
|
107
|
-
"args": [
|
|
108
|
-
"Your/path/to/wenyan-mcp/dist/index.js"
|
|
109
|
-
],
|
|
79
|
+
"command": "wenyan-mcp",
|
|
110
80
|
"env": {
|
|
111
81
|
"WECHAT_APP_ID": "your_app_id",
|
|
112
82
|
"WECHAT_APP_SECRET": "your_app_secret"
|
|
@@ -116,32 +86,17 @@ npx tsc -b
|
|
|
116
86
|
}
|
|
117
87
|
```
|
|
118
88
|
|
|
119
|
-
|
|
120
|
-
>
|
|
121
|
-
> * `WECHAT_APP_ID` 微信公众号平台的 App ID
|
|
122
|
-
> * `WECHAT_APP_SECRET` 微信平台的 App Secret
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
### 方式三:使用 Docker 运行(推荐)
|
|
89
|
+
### 方式二:Docker 运行(推荐)
|
|
127
90
|
|
|
128
|
-
|
|
91
|
+
适合部署到服务器环境,或希望环境隔离的用户。
|
|
129
92
|
|
|
130
|
-
|
|
93
|
+
**拉取镜像:**
|
|
131
94
|
|
|
132
95
|
```bash
|
|
133
|
-
docker
|
|
96
|
+
docker pull caol64/wenyan-mcp
|
|
134
97
|
```
|
|
135
98
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
docker build --build-arg NPM_REGISTRY=https://mirrors.cloud.tencent.com/npm/ -t wenyan-mcp .
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
#### 与 MCP Client 集成
|
|
143
|
-
|
|
144
|
-
在你的 MCP 配置文件中加入以下内容:
|
|
99
|
+
**配置 MCP Client:**
|
|
145
100
|
|
|
146
101
|
```json
|
|
147
102
|
{
|
|
@@ -153,53 +108,63 @@ docker build --build-arg NPM_REGISTRY=https://mirrors.cloud.tencent.com/npm/ -t
|
|
|
153
108
|
"run",
|
|
154
109
|
"--rm",
|
|
155
110
|
"-i",
|
|
156
|
-
"-v", "/your/host/
|
|
111
|
+
"-v", "/your/host/file/path:/mnt/host-downloads",
|
|
157
112
|
"-e", "WECHAT_APP_ID=your_app_id",
|
|
158
113
|
"-e", "WECHAT_APP_SECRET=your_app_secret",
|
|
159
|
-
"-e", "
|
|
160
|
-
"wenyan-mcp"
|
|
114
|
+
"-e", "HOST_FILE_PATH=/your/host/file/path",
|
|
115
|
+
"caol64/wenyan-mcp"
|
|
161
116
|
]
|
|
162
117
|
}
|
|
163
118
|
}
|
|
164
119
|
}
|
|
165
120
|
```
|
|
166
121
|
|
|
167
|
-
>
|
|
122
|
+
> **Docker 配置特别说明:**
|
|
168
123
|
>
|
|
169
|
-
> * `-v`
|
|
170
|
-
> *
|
|
171
|
-
> *
|
|
172
|
-
> * `WECHAT_APP_SECRET` 微信平台的 App Secret
|
|
173
|
-
> * `HOST_IMAGE_PATH` 宿主机图片目录
|
|
124
|
+
> * **挂载目录 (`-v`)**:必须将宿主机的文件/图片目录挂载到容器内的 `/mnt/host-downloads`。
|
|
125
|
+
> * **环境变量 (`HOST_FILE_PATH`)**:必须与宿主机挂载的文件/图片目录路径保持一致。
|
|
126
|
+
> * **原理**:你的 Markdown 文件/文章内所引用的本地图片应放置在该目录中,Docker 会自动将其映射,使容器能够读取并上传。
|
|
174
127
|
|
|
175
|
-
##
|
|
128
|
+
## 环境变量说明
|
|
129
|
+
|
|
130
|
+
无论使用哪种方式,都需要配置以下环境变量以连接微信公众号平台:
|
|
176
131
|
|
|
177
|
-
|
|
178
|
-
|
|
132
|
+
- `WECHAT_APP_ID`:微信公众号平台的 App ID
|
|
133
|
+
- `WECHAT_APP_SECRET`:微信公众号平台的 App Secret
|
|
179
134
|
|
|
180
|
-
##
|
|
135
|
+
## Markdown Frontmatter 说明(必读)
|
|
181
136
|
|
|
182
|
-
|
|
137
|
+
为了正确上传文章,每篇 Markdown 顶部需要包含 frontmatter:
|
|
183
138
|
|
|
184
139
|
```md
|
|
185
140
|
---
|
|
186
141
|
title: 在本地跑一个大语言模型(2) - 给模型提供外部知识库
|
|
187
|
-
cover: /Users/
|
|
142
|
+
cover: /Users/xxx/image.jpg
|
|
188
143
|
---
|
|
189
144
|
```
|
|
190
145
|
|
|
191
|
-
|
|
192
|
-
* `cover` 是文章封面,支持本地路径和网络图片:
|
|
146
|
+
字段说明:
|
|
193
147
|
|
|
194
|
-
|
|
195
|
-
|
|
148
|
+
- `title` 文章标题(必填)
|
|
149
|
+
- `cover` 文章封面
|
|
150
|
+
- 本地路径或网络图片
|
|
151
|
+
- 如果正文有至少一张图片,可省略,此时将使用其中一张作为封面
|
|
152
|
+
- 如果正文无图片,则必须提供 cover
|
|
196
153
|
|
|
197
154
|
## 关于图片自动上传
|
|
198
155
|
|
|
199
|
-
|
|
156
|
+
支持以下图片来源:
|
|
157
|
+
|
|
158
|
+
- 本地路径(如:`/Users/lei/Downloads/result_image.jpg`)
|
|
159
|
+
- 网络路径(如:`https://example.com/image.jpg`)
|
|
200
160
|
|
|
201
|
-
|
|
202
|
-
|
|
161
|
+
## 微信公众号 IP 白名单
|
|
162
|
+
|
|
163
|
+
> ⚠️ 重要
|
|
164
|
+
>
|
|
165
|
+
> 请确保运行文颜 MCP Server 的机器 IP 已加入微信公众号后台的 IP 白名单,否则上传接口将调用失败。
|
|
166
|
+
|
|
167
|
+
配置说明文档:[https://yuzhi.tech/docs/wenyan/upload](https://yuzhi.tech/docs/wenyan/upload)
|
|
203
168
|
|
|
204
169
|
## 示例文章格式
|
|
205
170
|
|
|
@@ -220,15 +185,15 @@ cover: /Users/lei/Downloads/result_image.jpg
|
|
|
220
185
|
|
|
221
186
|
## 如何调试
|
|
222
187
|
|
|
223
|
-
|
|
188
|
+
推荐使用官方 Inspector 进行调试:
|
|
224
189
|
|
|
225
|
-
```
|
|
226
|
-
npx @modelcontextprotocol/inspector
|
|
190
|
+
```bash
|
|
191
|
+
npx @modelcontextprotocol/inspector <command>
|
|
227
192
|
```
|
|
228
193
|
|
|
229
194
|
启动成功出现类似提示:
|
|
230
195
|
|
|
231
|
-
```
|
|
196
|
+
```bash
|
|
232
197
|
🔗 Open inspector with token pre-filled:
|
|
233
198
|
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=761c05058aa4f84ad02280e62d7a7e52ec0430d00c4c7a61492cca59f9eac299
|
|
234
199
|
(Auto-open is disabled when authentication is enabled)
|
|
@@ -248,7 +213,9 @@ npx @modelcontextprotocol/inspector
|
|
|
248
213
|
|
|
249
214
|
## 赞助
|
|
250
215
|
|
|
251
|
-
|
|
216
|
+
如果你觉得文颜对你有帮助,可以给我家猫咪买点罐头 ❤️
|
|
217
|
+
|
|
218
|
+
[https://yuzhi.tech/sponsor](https://yuzhi.tech/sponsor)
|
|
252
219
|
|
|
253
220
|
## License
|
|
254
221
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenyan-md/mcp",
|
|
3
|
-
"version": "1.0.
|
|
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.
|
|
34
|
+
"@wenyan-md/core": "^1.0.17"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/node": "^
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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
|
}
|