@zhin.js/mcp 1.0.0
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/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +321 -0
- package/lib/handlers.d.ts +51 -0
- package/lib/handlers.d.ts.map +1 -0
- package/lib/handlers.js +374 -0
- package/lib/handlers.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +88 -0
- package/lib/index.js.map +1 -0
- package/lib/prompts.d.ts +6 -0
- package/lib/prompts.d.ts.map +1 -0
- package/lib/prompts.js +57 -0
- package/lib/prompts.js.map +1 -0
- package/lib/resources.d.ts +50 -0
- package/lib/resources.d.ts.map +1 -0
- package/lib/resources.js +237 -0
- package/lib/resources.js.map +1 -0
- package/lib/tools.d.ts +6 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +92 -0
- package/lib/tools.js.map +1 -0
- package/package.json +51 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @zhin.js/mcp
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- 🎉 初始版本
|
|
8
|
+
- 🤖 提供 MCP Server 支持,让 AI 助手能够理解和生成 Zhin 插件
|
|
9
|
+
- 🌐 使用 StreamableHTTPServerTransport 提供 HTTP Stream 传输
|
|
10
|
+
- 📦 使用最新的 @modelcontextprotocol/sdk (v1.22.0)
|
|
11
|
+
- 🚀 **使用 McpServer 高级 API**,提供更简洁的开发体验
|
|
12
|
+
- 🛠️ 内置丰富的开发工具:插件生成、命令生成、组件生成等
|
|
13
|
+
- 📚 提供完整的 Zhin 框架文档和最佳实践
|
|
14
|
+
- 🔍 支持查询现有插件、命令、组件结构
|
|
15
|
+
- 💡 提供代码模板和示例
|
|
16
|
+
- ✅ 使用 Zod Schema 进行参数验证
|
|
17
|
+
- 📁 模块化代码结构,易于维护和扩展
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 凉菜
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# @zhin.js/mcp
|
|
2
|
+
|
|
3
|
+
> Zhin MCP Server - 让 AI 助手能够理解和生成 Zhin 插件
|
|
4
|
+
|
|
5
|
+
这是一个基于 [Model Context Protocol (MCP)](https://modelcontextprotocol.io) 的服务插件,为 AI 助手(如 Claude、ChatGPT 等)提供 Zhin 框架的深度集成能力,让开发者能够通过 AI 对话更高效地开发 Zhin 插件。
|
|
6
|
+
|
|
7
|
+
## ✨ 特性
|
|
8
|
+
|
|
9
|
+
- 🤖 **完整的 MCP 支持**: 实现 Tools、Resources、Prompts 三大核心能力
|
|
10
|
+
- 🌐 **HTTP Stream 传输**: 基于 StreamableHTTPServerTransport 的现代化传输方式
|
|
11
|
+
- 🛠️ **丰富的开发工具**: 插件生成、命令生成、组件生成、适配器生成等
|
|
12
|
+
- 📚 **内置文档资源**: 提供 Zhin 架构、最佳实践、开发指南等文档
|
|
13
|
+
- 💡 **智能提示词**: 预设开发工作流、调试指南等提示词
|
|
14
|
+
- 🔍 **实时查询**: 查询当前应用的插件、命令、组件信息
|
|
15
|
+
- 🎯 **代码生成**: 自动生成符合 Zhin 规范的代码
|
|
16
|
+
|
|
17
|
+
## 📦 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @zhin.js/mcp
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 🚀 快速开始
|
|
24
|
+
|
|
25
|
+
### 1. 启用插件
|
|
26
|
+
|
|
27
|
+
在 `zhin.config.ts` 中添加 MCP 插件:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { defineConfig } from 'zhin.js'
|
|
31
|
+
|
|
32
|
+
export default defineConfig({
|
|
33
|
+
plugins: [
|
|
34
|
+
'http', // MCP 依赖 HTTP 插件
|
|
35
|
+
'mcp', // 启用 MCP Server
|
|
36
|
+
],
|
|
37
|
+
mcp: {
|
|
38
|
+
enabled: true, // 启用 MCP
|
|
39
|
+
path: '/mcp', // HTTP Stream 端点路径
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. 配置 AI 助手
|
|
45
|
+
|
|
46
|
+
#### Claude Desktop
|
|
47
|
+
|
|
48
|
+
编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"mcpServers": {
|
|
53
|
+
"zhin": {
|
|
54
|
+
"command": "curl",
|
|
55
|
+
"args": [
|
|
56
|
+
"-N",
|
|
57
|
+
"http://localhost:8086/mcp"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
确保你的 Zhin 应用正在运行,且 HTTP 插件已启用(默认端口 8086)。
|
|
65
|
+
|
|
66
|
+
#### Cursor/VSCode
|
|
67
|
+
|
|
68
|
+
安装 MCP 扩展,然后在设置中配置服务器。
|
|
69
|
+
|
|
70
|
+
### 3. 开始使用
|
|
71
|
+
|
|
72
|
+
重启 AI 助手,然后就可以通过对话开发 Zhin 插件了!
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
你: 帮我创建一个名为 welcome 的插件,当用户发送 hello 时回复欢迎消息
|
|
76
|
+
|
|
77
|
+
AI: 好的!我会使用 create_plugin 工具为你创建插件...
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 🛠️ 可用工具 (Tools)
|
|
81
|
+
|
|
82
|
+
### 1. create_plugin
|
|
83
|
+
创建一个新的 Zhin 插件文件。
|
|
84
|
+
|
|
85
|
+
**参数:**
|
|
86
|
+
- `name` (必需): 插件名称
|
|
87
|
+
- `description` (必需): 插件描述
|
|
88
|
+
- `features`: 功能列表 `['command', 'middleware', 'component', 'context', 'database']`
|
|
89
|
+
- `directory`: 保存目录,默认 `src/plugins`
|
|
90
|
+
|
|
91
|
+
**示例:**
|
|
92
|
+
```
|
|
93
|
+
创建一个名为 greeting 的插件,包含命令和中间件功能
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 2. create_command
|
|
97
|
+
生成命令代码片段。
|
|
98
|
+
|
|
99
|
+
**参数:**
|
|
100
|
+
- `pattern` (必需): 命令模式,如 `hello <name:text>`
|
|
101
|
+
- `description` (必需): 命令描述
|
|
102
|
+
- `hasPermission`: 是否需要权限检查
|
|
103
|
+
|
|
104
|
+
**示例:**
|
|
105
|
+
```
|
|
106
|
+
生成一个 greet <name:text> [age:number] 命令的代码
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 3. create_component
|
|
110
|
+
生成消息组件代码。
|
|
111
|
+
|
|
112
|
+
**参数:**
|
|
113
|
+
- `name` (必需): 组件名称
|
|
114
|
+
- `props` (必需): 组件属性定义
|
|
115
|
+
- `usesJsx`: 是否使用 JSX
|
|
116
|
+
|
|
117
|
+
**示例:**
|
|
118
|
+
```
|
|
119
|
+
创建一个名为 UserCard 的组件,包含 name 和 avatar 属性
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 4. create_adapter
|
|
123
|
+
生成平台适配器代码。
|
|
124
|
+
|
|
125
|
+
**参数:**
|
|
126
|
+
- `name` (必需): 适配器名称
|
|
127
|
+
- `description` (必需): 适配器描述
|
|
128
|
+
- `hasWebhook`: 是否需要 Webhook 支持
|
|
129
|
+
|
|
130
|
+
**示例:**
|
|
131
|
+
```
|
|
132
|
+
创建一个 Telegram 适配器,需要 Webhook 支持
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 5. create_model
|
|
136
|
+
生成数据库模型定义。
|
|
137
|
+
|
|
138
|
+
**参数:**
|
|
139
|
+
- `name` (必需): 模型名称
|
|
140
|
+
- `fields` (必需): 字段定义
|
|
141
|
+
|
|
142
|
+
**示例:**
|
|
143
|
+
```
|
|
144
|
+
创建一个 users 模型,包含 name, email, created_at 字段
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 6. query_plugin
|
|
148
|
+
查询现有插件的详细信息。
|
|
149
|
+
|
|
150
|
+
**参数:**
|
|
151
|
+
- `pluginName` (必需): 插件名称
|
|
152
|
+
|
|
153
|
+
**示例:**
|
|
154
|
+
```
|
|
155
|
+
查询 http 插件的信息
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 7. list_plugins
|
|
159
|
+
列出所有已加载的插件。
|
|
160
|
+
|
|
161
|
+
**示例:**
|
|
162
|
+
```
|
|
163
|
+
列出所有插件
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## 📚 可用资源 (Resources)
|
|
167
|
+
|
|
168
|
+
MCP Server 提供以下文档资源:
|
|
169
|
+
|
|
170
|
+
- `zhin://docs/architecture` - Zhin 架构设计文档
|
|
171
|
+
- `zhin://docs/plugin-development` - 插件开发指南
|
|
172
|
+
- `zhin://docs/best-practices` - 开发最佳实践
|
|
173
|
+
- `zhin://docs/command-system` - 命令系统文档
|
|
174
|
+
- `zhin://docs/component-system` - 组件系统文档
|
|
175
|
+
- `zhin://docs/context-system` - Context 系统文档
|
|
176
|
+
- `zhin://examples/basic-plugin` - 基础插件示例
|
|
177
|
+
- `zhin://examples/command-plugin` - 命令插件示例
|
|
178
|
+
- `zhin://examples/adapter` - 适配器示例
|
|
179
|
+
|
|
180
|
+
AI 助手可以随时访问这些资源来了解 Zhin 的开发规范。
|
|
181
|
+
|
|
182
|
+
## 💡 可用提示词 (Prompts)
|
|
183
|
+
|
|
184
|
+
### create-plugin-workflow
|
|
185
|
+
创建插件的完整工作流程指导。
|
|
186
|
+
|
|
187
|
+
**参数:**
|
|
188
|
+
- `feature_type`: 插件功能类型 (command/middleware/component/adapter)
|
|
189
|
+
|
|
190
|
+
### debug-plugin
|
|
191
|
+
调试插件的步骤和技巧。
|
|
192
|
+
|
|
193
|
+
**参数:**
|
|
194
|
+
- `error_message`: 错误消息(可选)
|
|
195
|
+
|
|
196
|
+
### best-practices
|
|
197
|
+
Zhin 开发的最佳实践建议。
|
|
198
|
+
|
|
199
|
+
## 🎯 使用场景
|
|
200
|
+
|
|
201
|
+
### 场景 1: 快速创建插件
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
你: 我需要一个插件来记录用户签到,使用 /签到 命令
|
|
205
|
+
|
|
206
|
+
AI: 好的!我会创建一个签到插件,包含以下功能:
|
|
207
|
+
1. 命令:/签到
|
|
208
|
+
2. 数据库模型:存储签到记录
|
|
209
|
+
3. 返回签到成功信息
|
|
210
|
+
|
|
211
|
+
[使用 create_plugin 工具创建...]
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### 场景 2: 学习最佳实践
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
你: Zhin 开发中如何正确管理资源清理?
|
|
218
|
+
|
|
219
|
+
AI: [读取 zhin://docs/best-practices 资源]
|
|
220
|
+
根据 Zhin 最佳实践,资源清理应该...
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### 场景 3: 调试现有插件
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
你: 我的插件报错 "Context not found"
|
|
227
|
+
|
|
228
|
+
AI: [使用 query_plugin 查询插件信息]
|
|
229
|
+
让我检查一下你的插件配置...
|
|
230
|
+
这个错误通常是因为...
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 场景 4: 生成适配器
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
你: 帮我创建一个 WhatsApp 适配器
|
|
237
|
+
|
|
238
|
+
AI: [使用 create_adapter 工具]
|
|
239
|
+
我已经为你生成了 WhatsApp 适配器的基础代码...
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## ⚙️ 配置选项
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
interface MCPConfig {
|
|
246
|
+
// 是否启用 MCP Server
|
|
247
|
+
enabled: boolean; // 默认: true
|
|
248
|
+
|
|
249
|
+
// HTTP Stream 端点路径
|
|
250
|
+
path: string; // 默认: '/mcp'
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### 配置示例
|
|
255
|
+
|
|
256
|
+
#### 基础配置
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
export default defineConfig({
|
|
260
|
+
mcp: {
|
|
261
|
+
enabled: true,
|
|
262
|
+
path: '/mcp', // 自定义端点路径
|
|
263
|
+
}
|
|
264
|
+
})
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### 完整配置
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
export default defineConfig({
|
|
271
|
+
plugins: [
|
|
272
|
+
'http', // 必需:MCP 依赖 HTTP 插件
|
|
273
|
+
'mcp',
|
|
274
|
+
],
|
|
275
|
+
http: {
|
|
276
|
+
port: 8086, // HTTP 服务器端口
|
|
277
|
+
},
|
|
278
|
+
mcp: {
|
|
279
|
+
enabled: true,
|
|
280
|
+
path: '/api/mcp', // MCP 端点路径
|
|
281
|
+
}
|
|
282
|
+
})
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
访问 `http://localhost:8086/api/mcp` 即可连接 MCP Server。
|
|
286
|
+
|
|
287
|
+
## 🔧 开发
|
|
288
|
+
|
|
289
|
+
### 构建
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
pnpm build
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 测试
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# 测试 MCP Server
|
|
299
|
+
node lib/index.js
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## 📖 相关文档
|
|
303
|
+
|
|
304
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
305
|
+
- [Zhin 框架文档](https://zhin.js.org)
|
|
306
|
+
- [插件开发指南](../../docs/plugin/development.md)
|
|
307
|
+
|
|
308
|
+
## 🤝 贡献
|
|
309
|
+
|
|
310
|
+
欢迎提交 Issue 和 Pull Request!
|
|
311
|
+
|
|
312
|
+
## 📄 许可证
|
|
313
|
+
|
|
314
|
+
MIT License
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
**提示**: 如果你在使用过程中遇到问题,可以:
|
|
319
|
+
1. 查看 [MCP 官方文档](https://modelcontextprotocol.io)
|
|
320
|
+
2. 在 AI 助手中询问:"如何配置 Zhin MCP Server?"
|
|
321
|
+
3. 提交 [GitHub Issue](https://github.com/zhinjs/zhin/issues)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 创建插件文件
|
|
3
|
+
*/
|
|
4
|
+
export declare function createPlugin(args: {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
features?: string[];
|
|
8
|
+
directory?: string;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* 生成命令代码
|
|
12
|
+
*/
|
|
13
|
+
export declare function createCommandCode(args: {
|
|
14
|
+
pattern: string;
|
|
15
|
+
description: string;
|
|
16
|
+
hasPermission?: boolean;
|
|
17
|
+
}): string;
|
|
18
|
+
/**
|
|
19
|
+
* 生成组件代码
|
|
20
|
+
*/
|
|
21
|
+
export declare function createComponentCode(args: {
|
|
22
|
+
name: string;
|
|
23
|
+
props: Record<string, string>;
|
|
24
|
+
usesJsx?: boolean;
|
|
25
|
+
}): string;
|
|
26
|
+
/**
|
|
27
|
+
* 查询插件信息
|
|
28
|
+
*/
|
|
29
|
+
export declare function queryPlugin(args: {
|
|
30
|
+
pluginName: string;
|
|
31
|
+
}): any;
|
|
32
|
+
/**
|
|
33
|
+
* 列出所有插件
|
|
34
|
+
*/
|
|
35
|
+
export declare function listPlugins(): any;
|
|
36
|
+
/**
|
|
37
|
+
* 生成适配器代码
|
|
38
|
+
*/
|
|
39
|
+
export declare function createAdapterCode(args: {
|
|
40
|
+
name: string;
|
|
41
|
+
description: string;
|
|
42
|
+
hasWebhook?: boolean;
|
|
43
|
+
}): string;
|
|
44
|
+
/**
|
|
45
|
+
* 生成数据库模型代码
|
|
46
|
+
*/
|
|
47
|
+
export declare function createModelCode(args: {
|
|
48
|
+
name: string;
|
|
49
|
+
fields: Record<string, any>;
|
|
50
|
+
}): string;
|
|
51
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AA2GD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,MAAM,CA2BT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CA0CT;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAsB7D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,GAAG,CAOjC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,CA4GT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,GAAG,MAAM,CA+BT"}
|