@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.
- package/README.md +84 -120
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
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
|
|
|
@@ -8,94 +10,64 @@
|
|
|
8
10
|
[](https://hub.docker.com/r/caol64/wenyan-mcp)
|
|
9
11
|
[](https://github.com/caol64/wenyan-mcp)
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## 简介
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
**文颜(Wenyan)** 是一款多平台 Markdown 排版与发布工具,支持将 Markdown 一键转换并发布至:
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
* [嵌入版本](https://github.com/caol64/wenyan-core) - 将文颜的核心功能嵌入 Node 或者 Web 项目
|
|
17
|
+
- 微信公众号
|
|
18
|
+
- 知乎
|
|
19
|
+
- 今日头条
|
|
20
|
+
- 以及其它内容平台(持续扩展中)
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
文颜的目标是:**让写作者专注内容,而不是排版和平台适配**。
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
本仓库是 **文颜的 MCP Server 版本**,基于模型上下文协议(Model Context Protocol),旨在让 AI 助手(如 Claude Desktop)具备自动排版和发布公众号文章的能力。
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
## 文颜的不同版本
|
|
26
27
|
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
在你的 MCP 配置文件中加入以下内容:
|
|
46
|
+
👉 [内置主题预览](https://yuzhi.tech/docs/wenyan/theme)
|
|
61
47
|
|
|
62
|
-
|
|
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
|
-
|
|
80
|
-
|
|
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
|
-
|
|
64
|
+
直接安装到本地:
|
|
89
65
|
|
|
90
66
|
```bash
|
|
91
|
-
|
|
92
|
-
cd wenyan-mcp
|
|
93
|
-
|
|
94
|
-
npm install
|
|
95
|
-
npx tsc -b
|
|
67
|
+
npm install -g @wenyan-md/mcp
|
|
96
68
|
```
|
|
97
69
|
|
|
98
|
-
|
|
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": "
|
|
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
|
-
|
|
91
|
+
适合部署到服务器环境,或希望环境隔离的用户。
|
|
130
92
|
|
|
131
|
-
|
|
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/
|
|
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", "
|
|
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`
|
|
173
|
-
> *
|
|
174
|
-
> *
|
|
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
|
-
##
|
|
128
|
+
## 环境变量说明
|
|
129
|
+
|
|
130
|
+
无论使用哪种方式,都需要配置以下环境变量以连接微信公众号平台:
|
|
179
131
|
|
|
180
|
-
|
|
181
|
-
|
|
132
|
+
- `WECHAT_APP_ID`:微信公众号平台的 App ID
|
|
133
|
+
- `WECHAT_APP_SECRET`:微信公众号平台的 App Secret
|
|
182
134
|
|
|
183
|
-
##
|
|
135
|
+
## Markdown Frontmatter 说明(必读)
|
|
184
136
|
|
|
185
|
-
|
|
137
|
+
为了正确上传文章,每篇 Markdown 顶部需要包含 frontmatter:
|
|
186
138
|
|
|
187
139
|
```md
|
|
188
140
|
---
|
|
189
141
|
title: 在本地跑一个大语言模型(2) - 给模型提供外部知识库
|
|
190
|
-
cover: /Users/
|
|
142
|
+
cover: /Users/xxx/image.jpg
|
|
191
143
|
---
|
|
192
144
|
```
|
|
193
145
|
|
|
194
|
-
|
|
195
|
-
* `cover` 是文章封面,支持本地路径和网络图片:
|
|
146
|
+
字段说明:
|
|
196
147
|
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
205
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
}
|