@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.
@@ -0,0 +1,237 @@
1
+ /**
2
+ * 资源列表定义
3
+ */
4
+ export const resourceList = [
5
+ {
6
+ uri: "zhin://docs/architecture",
7
+ name: "Zhin 架构文档",
8
+ description: "Zhin 框架的四层抽象设计和核心架构",
9
+ },
10
+ {
11
+ uri: "zhin://docs/plugin-development",
12
+ name: "插件开发指南",
13
+ description: "如何开发 Zhin 插件的完整指南",
14
+ },
15
+ {
16
+ uri: "zhin://docs/best-practices",
17
+ name: "最佳实践",
18
+ description: "Zhin 开发的最佳实践和常见模式",
19
+ },
20
+ {
21
+ uri: "zhin://docs/command-system",
22
+ name: "命令系统",
23
+ description: "Zhin 命令系统的使用方法",
24
+ },
25
+ {
26
+ uri: "zhin://docs/component-system",
27
+ name: "组件系统",
28
+ description: "Zhin 消息组件系统的使用方法",
29
+ },
30
+ {
31
+ uri: "zhin://docs/context-system",
32
+ name: "Context 系统",
33
+ description: "函数式依赖注入和 Context 管理",
34
+ },
35
+ {
36
+ uri: "zhin://examples/basic-plugin",
37
+ name: "基础插件示例",
38
+ description: "一个完整的基础插件示例",
39
+ },
40
+ {
41
+ uri: "zhin://examples/command-plugin",
42
+ name: "命令插件示例",
43
+ description: "包含多个命令的插件示例",
44
+ },
45
+ {
46
+ uri: "zhin://examples/adapter",
47
+ name: "适配器示例",
48
+ description: "如何实现一个平台适配器",
49
+ },
50
+ ];
51
+ /**
52
+ * 资源内容映射
53
+ */
54
+ export const resourceContents = {
55
+ "zhin://docs/architecture": `# Zhin 架构设计
56
+
57
+ Zhin.js 采用四层抽象设计:
58
+
59
+ ## 四层架构
60
+ \`\`\`
61
+ App 层 (应用入口)
62
+
63
+ HMR 层 (热重载引擎)
64
+
65
+ Dependency 层 (依赖注入基类)
66
+
67
+ Plugin 层 (业务逻辑)
68
+ \`\`\`
69
+
70
+ - **App**: 继承自 HMR,管理适配器、机器人实例、消息路由
71
+ - **HMR**: 组合 FileWatcher、ModuleLoader、PerformanceMonitor、ReloadManager
72
+ - **Dependency**: 提供生命周期管理、Context 系统、事件广播机制
73
+ - **Plugin**: 继承 Dependency,处理中间件、命令、组件
74
+ `,
75
+ "zhin://docs/plugin-development": `# 插件开发指南
76
+
77
+ ## 基础结构
78
+
79
+ 插件文件通常放在 \`src/plugins/\` 目录:
80
+
81
+ \`\`\`typescript
82
+ import { addCommand, MessageCommand, useLogger } from 'zhin.js'
83
+
84
+ const logger = useLogger()
85
+
86
+ addCommand(new MessageCommand('hello <name:text>')
87
+ .action(async (message, result) => {
88
+ return \`Hello, \${result.params.name}!\`
89
+ })
90
+ )
91
+ \`\`\`
92
+
93
+ ## 核心概念
94
+
95
+ 1. **函数式依赖注入**: 使用 \`register\` 和 \`useContext\`
96
+ 2. **热重载**: 文件修改自动重载
97
+ 3. **命令系统**: 基于 segment-matcher 的模式匹配
98
+ 4. **组件系统**: 支持 JSX 的消息组件
99
+ `,
100
+ "zhin://docs/best-practices": `# Zhin 开发最佳实践
101
+
102
+ ## 1. 导入路径
103
+ - 使用 \`.js\` 扩展名导入 TypeScript 文件
104
+ - 示例: \`import { foo } from './bar.js'\`
105
+
106
+ ## 2. 资源清理
107
+ - 在 \`dispose\` 或返回的清理函数中释放资源
108
+ - 避免内存泄漏
109
+
110
+ ## 3. 避免循环依赖
111
+ - 不要在 Context 注册中创建循环依赖
112
+ - 在 \`useContext\` 中使用依赖
113
+
114
+ ## 4. 性能优化
115
+ - 避免监听大目录
116
+ - 精确配置扩展名
117
+ - 及时清理监听器
118
+ `,
119
+ "zhin://docs/command-system": `# 命令系统
120
+
121
+ ## 命令模式
122
+
123
+ - \`<name:text>\`: 必需参数
124
+ - \`[name:text]\`: 可选参数
125
+ - \`[...items:at]\`: 可变参数
126
+
127
+ ## 内置类型
128
+
129
+ - \`text\`: 文本
130
+ - \`number\`: 数字
131
+ - \`at\`: @提及
132
+ - \`image\`: 图片
133
+ - \`face\`: 表情
134
+ `,
135
+ "zhin://docs/component-system": `# 组件系统
136
+
137
+ ## 定义组件
138
+
139
+ \`\`\`typescript
140
+ import { defineComponent } from 'zhin.js'
141
+
142
+ const MyComp = defineComponent({
143
+ name: 'my-comp',
144
+ props: {
145
+ title: String,
146
+ count: Number,
147
+ },
148
+ render(props) {
149
+ return \`\${props.title}: \${props.count}\`
150
+ }
151
+ })
152
+ \`\`\`
153
+ `,
154
+ "zhin://docs/context-system": `# Context 系统
155
+
156
+ ## 注册 Context
157
+
158
+ \`\`\`typescript
159
+ import { register } from 'zhin.js'
160
+
161
+ register({
162
+ name: 'database',
163
+ async mounted(plugin) {
164
+ const db = new Database()
165
+ await db.connect()
166
+ return db
167
+ },
168
+ async dispose(db) {
169
+ await db.disconnect()
170
+ }
171
+ })
172
+ \`\`\`
173
+ `,
174
+ "zhin://examples/basic-plugin": `import { usePlugin, addCommand, MessageCommand } from 'zhin.js'
175
+
176
+ const plugin = usePlugin()
177
+
178
+ addCommand(
179
+ new MessageCommand('ping')
180
+ .description('测试命令')
181
+ .action(async () => {
182
+ return 'pong!'
183
+ })
184
+ )
185
+ `,
186
+ "zhin://examples/command-plugin": `import { addCommand, MessageCommand } from 'zhin.js'
187
+
188
+ addCommand(
189
+ new MessageCommand('echo <text:text>')
190
+ .action(async (message, result) => {
191
+ return result.params.text
192
+ })
193
+ )
194
+ `,
195
+ "zhin://examples/adapter": `import {
196
+ Bot,
197
+ Adapter,
198
+ registerAdapter,
199
+ Message,
200
+ SendOptions,
201
+ } from "zhin.js";
202
+
203
+ export class MyBot implements Bot<any, any> {
204
+ async $connect(): Promise<void> {}
205
+ async $disconnect(): Promise<void> {}
206
+ $formatMessage(raw: any): Message<any> { return null as any; }
207
+ async $sendMessage(options: SendOptions): Promise<string> { return ""; }
208
+ }
209
+ `,
210
+ };
211
+ /**
212
+ * 注册所有 MCP 资源
213
+ */
214
+ export function registerResources(server) {
215
+ resourceList.forEach((resource) => {
216
+ server.registerResource(resource.name, resource.uri, {
217
+ description: resource.description,
218
+ }, async (uri) => {
219
+ // URI 参数可能是 URL 对象或字符串,统一转换为字符串
220
+ const uriString = uri.toString();
221
+ const content = resourceContents[uriString] || resourceContents[resource.uri];
222
+ if (!content) {
223
+ throw new Error(`Resource not found: ${uriString} (registered as ${resource.uri})`);
224
+ }
225
+ return {
226
+ contents: [
227
+ {
228
+ uri: uriString,
229
+ mimeType: "text/markdown",
230
+ text: content,
231
+ },
232
+ ],
233
+ };
234
+ });
235
+ });
236
+ }
237
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,GAAG,EAAE,gCAAgC;QACrC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mBAAmB;KACjC;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,mBAAmB;KACjC;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gBAAgB;KAC9B;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,GAAG,EAAE,gCAAgC;QACrC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,aAAa;KAC3B;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,0BAA0B,EAAE;;;;;;;;;;;;;;;;;;;CAmB7B;IAEC,gCAAgC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBnC;IAEC,4BAA4B,EAAE;;;;;;;;;;;;;;;;;;CAkB/B;IAEC,4BAA4B,EAAE;;;;;;;;;;;;;;;CAe/B;IAEC,8BAA8B,EAAE;;;;;;;;;;;;;;;;;;CAkBjC;IAEC,4BAA4B,EAAE;;;;;;;;;;;;;;;;;;;CAmB/B;IAEC,8BAA8B,EAAE;;;;;;;;;;;CAWjC;IAEC,gCAAgC,EAAE;;;;;;;;CAQnC;IAEC,yBAAyB,EAAE;;;;;;;;;;;;;;CAc5B;CACA,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,CAAC,gBAAgB,CACrB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,GAAG,EACZ;YACE,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,gCAAgC;YAChC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,mBAAmB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;YACtF,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG,EAAE,SAAS;wBACd,QAAQ,EAAE,eAAe;wBACzB,IAAI,EAAE,OAAO;qBACd;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/lib/tools.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * 注册所有 MCP 工具
4
+ */
5
+ export declare function registerTools(server: McpServer): void;
6
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,QAuH9C"}
package/lib/tools.js ADDED
@@ -0,0 +1,92 @@
1
+ import { z } from "zod";
2
+ import { createPlugin, createCommandCode, createComponentCode, queryPlugin, listPlugins, createAdapterCode, createModelCode, } from "./handlers.js";
3
+ /**
4
+ * 注册所有 MCP 工具
5
+ */
6
+ export function registerTools(server) {
7
+ server.registerTool("create_plugin", {
8
+ description: "创建一个新的 Zhin 插件文件,包含基础结构和示例代码",
9
+ inputSchema: z.object({
10
+ name: z.string().describe("插件名称 (例如: my-plugin)"),
11
+ description: z.string().describe("插件描述"),
12
+ features: z.array(z.string()).optional().describe("插件功能列表 (例如: ['command', 'middleware', 'component'])"),
13
+ directory: z.string().optional().describe("插件保存目录 (相对于项目根目录)"),
14
+ }),
15
+ }, async (args) => {
16
+ const result = await createPlugin(args);
17
+ return {
18
+ content: [{ type: "text", text: result }],
19
+ };
20
+ });
21
+ server.registerTool("create_command", {
22
+ description: "生成一个 Zhin 命令的代码片段",
23
+ inputSchema: z.object({
24
+ pattern: z.string().describe("命令模式 (例如: 'hello <name:text>')"),
25
+ description: z.string().describe("命令描述"),
26
+ hasPermission: z.boolean().optional().describe("是否需要权限检查"),
27
+ }),
28
+ }, async (args) => {
29
+ const result = createCommandCode(args);
30
+ return {
31
+ content: [{ type: "text", text: result }],
32
+ };
33
+ });
34
+ server.registerTool("create_component", {
35
+ description: "生成一个 Zhin 消息组件的代码",
36
+ inputSchema: z.object({
37
+ name: z.string().describe("组件名称"),
38
+ props: z.record(z.any()).describe("组件 props 定义"),
39
+ usesJsx: z.boolean().optional().describe("是否使用 JSX"),
40
+ }),
41
+ }, async (args) => {
42
+ const result = createComponentCode(args);
43
+ return {
44
+ content: [{ type: "text", text: result }],
45
+ };
46
+ });
47
+ server.registerTool("query_plugin", {
48
+ description: "查询现有插件的信息、命令、组件等",
49
+ inputSchema: z.object({
50
+ pluginName: z.string().describe("插件名称"),
51
+ }),
52
+ }, async (args) => {
53
+ const result = queryPlugin(args);
54
+ return {
55
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
56
+ };
57
+ });
58
+ server.registerTool("list_plugins", {
59
+ description: "列出所有已加载的插件",
60
+ }, async () => {
61
+ const result = listPlugins();
62
+ return {
63
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
64
+ };
65
+ });
66
+ server.registerTool("create_adapter", {
67
+ description: "创建一个新的 Zhin 适配器",
68
+ inputSchema: z.object({
69
+ name: z.string().describe("适配器名称 (例如: my-platform)"),
70
+ description: z.string().describe("适配器描述"),
71
+ hasWebhook: z.boolean().optional().describe("是否需要 Webhook 支持"),
72
+ }),
73
+ }, async (args) => {
74
+ const result = createAdapterCode(args);
75
+ return {
76
+ content: [{ type: "text", text: result }],
77
+ };
78
+ });
79
+ server.registerTool("create_model", {
80
+ description: "生成 Zhin 数据库模型定义代码",
81
+ inputSchema: z.object({
82
+ name: z.string().describe("模型名称"),
83
+ fields: z.record(z.any()).describe("字段定义"),
84
+ }),
85
+ }, async (args) => {
86
+ const result = createModelCode(args);
87
+ return {
88
+ content: [{ type: "text", text: result }],
89
+ };
90
+ });
91
+ }
92
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@zhin.js/mcp",
3
+ "version": "1.0.0",
4
+ "description": "Zhin MCP Server - 让 AI 助手能够理解和生成 Zhin 插件",
5
+ "type": "module",
6
+ "main": "./lib/index.js",
7
+ "types": "./lib/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/index.d.ts",
11
+ "import": "./lib/index.js"
12
+ }
13
+ },
14
+ "keywords": [
15
+ "zhin",
16
+ "service",
17
+ "mcp",
18
+ "model-context-protocol",
19
+ "ai",
20
+ "assistant"
21
+ ],
22
+ "author": "lc-cn",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "url": "git+https://github.com/zhinjs/zhin.git",
26
+ "type": "git",
27
+ "directory": "plugins/services/mcp"
28
+ },
29
+ "dependencies": {
30
+ "@modelcontextprotocol/sdk": "^1.22.0",
31
+ "zod": "^3.24.1"
32
+ },
33
+ "peerDependencies": {
34
+ "@zhin.js/http": "^1.0.7",
35
+ "zhin.js": "^1.0.15"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "latest",
39
+ "@zhin.js/types": "^1.0.5"
40
+ },
41
+ "files": [
42
+ "lib",
43
+ "README.md",
44
+ "CHANGELOG.md"
45
+ ],
46
+ "scripts": {
47
+ "build": "pnpm build:node",
48
+ "clean": "rm -rf lib",
49
+ "build:node": "tsc"
50
+ }
51
+ }