@zhin.js/mcp 1.0.0 → 1.0.1
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 +9 -0
- package/lib/handlers.d.ts.map +1 -1
- package/lib/handlers.js +18 -19
- package/lib/handlers.js.map +1 -1
- package/lib/index.d.ts +9 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +48 -46
- package/lib/index.js.map +1 -1
- package/package.json +6 -8
package/CHANGELOG.md
CHANGED
package/lib/handlers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAOA;;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,CAoB7D;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"}
|
package/lib/handlers.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import fs from "node:fs/promises";
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
3
|
+
import { usePlugin } from "zhin.js";
|
|
4
|
+
const plugin = usePlugin();
|
|
5
|
+
const root = plugin.root;
|
|
5
6
|
/**
|
|
6
7
|
* 创建插件文件
|
|
7
8
|
*/
|
|
@@ -187,34 +188,32 @@ export default ${name};
|
|
|
187
188
|
*/
|
|
188
189
|
export function queryPlugin(args) {
|
|
189
190
|
const { pluginName } = args;
|
|
190
|
-
|
|
191
|
+
// 在子插件树中查找
|
|
192
|
+
const targetPlugin = root.children.find((p) => p.name === pluginName || p.$filename?.includes(pluginName));
|
|
191
193
|
if (!targetPlugin) {
|
|
192
194
|
throw new Error(`插件 ${pluginName} 不存在`);
|
|
193
195
|
}
|
|
196
|
+
const p = targetPlugin;
|
|
194
197
|
return {
|
|
195
|
-
name:
|
|
196
|
-
filename:
|
|
197
|
-
status:
|
|
198
|
-
commands:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
middlewares: targetPlugin.middlewares.length,
|
|
204
|
-
contexts: Array.from(targetPlugin.contexts.keys()),
|
|
205
|
-
crons: targetPlugin.crons.length,
|
|
206
|
-
models: Array.from(targetPlugin.definitions.keys()),
|
|
198
|
+
name: p.name,
|
|
199
|
+
filename: p.$filename || p.filename,
|
|
200
|
+
status: p.$mounted ? "active" : "inactive",
|
|
201
|
+
commands: Array.from(p.$commands || []),
|
|
202
|
+
components: Array.from(p.$components || []),
|
|
203
|
+
middlewares: p.$middlewares?.size || 0,
|
|
204
|
+
contexts: Array.from(p.contexts?.keys() || []),
|
|
205
|
+
crons: p.$crons?.size || 0,
|
|
207
206
|
};
|
|
208
207
|
}
|
|
209
208
|
/**
|
|
210
209
|
* 列出所有插件
|
|
211
210
|
*/
|
|
212
211
|
export function listPlugins() {
|
|
213
|
-
return
|
|
212
|
+
return root.children.map((dep) => ({
|
|
214
213
|
name: dep.name,
|
|
215
|
-
status: dep
|
|
216
|
-
commandCount: dep
|
|
217
|
-
componentCount: dep
|
|
214
|
+
status: dep.$mounted ? "active" : "inactive",
|
|
215
|
+
commandCount: dep.$commands?.size || 0,
|
|
216
|
+
componentCount: dep.$components?.size || 0,
|
|
218
217
|
}));
|
|
219
218
|
}
|
|
220
219
|
/**
|
package/lib/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
declare module "
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
declare module "zhin.js" {
|
|
3
|
+
namespace Plugin {
|
|
4
|
+
interface Contexts {
|
|
5
|
+
mcpServer: McpServer;
|
|
6
|
+
}
|
|
5
7
|
}
|
|
6
8
|
}
|
|
9
|
+
export interface McpConfig {
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
path?: string;
|
|
12
|
+
}
|
|
7
13
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,SAAS,EAAE,SAAS,CAAC;SACtB;KACF;CACF;AAGD,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
|
package/lib/index.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
3
|
-
import {
|
|
3
|
+
import { usePlugin } from "zhin.js";
|
|
4
4
|
import { registerTools } from "./tools.js";
|
|
5
5
|
import { registerResources } from "./resources.js";
|
|
6
6
|
import { registerPrompts } from "./prompts.js";
|
|
7
|
-
const plugin = usePlugin();
|
|
8
|
-
// 配置 Schema
|
|
9
|
-
const schema = defineSchema(Schema.object({
|
|
10
|
-
enabled: Schema.boolean("enabled")
|
|
11
|
-
.default(true)
|
|
12
|
-
.description("是否启用 MCP Server"),
|
|
13
|
-
path: Schema.string("path")
|
|
14
|
-
.default("/mcp")
|
|
15
|
-
.description("HTTP 端点路径"),
|
|
16
|
-
}));
|
|
17
|
-
const config = schema(plugin.config, "mcp");
|
|
18
7
|
// ============================================================================
|
|
19
8
|
// 创建 MCP Server
|
|
20
9
|
// ============================================================================
|
|
@@ -38,51 +27,64 @@ function createMCPServer() {
|
|
|
38
27
|
// ============================================================================
|
|
39
28
|
// 注册 Context 并启动服务
|
|
40
29
|
// ============================================================================
|
|
41
|
-
|
|
42
|
-
let
|
|
43
|
-
|
|
30
|
+
const { provide, root, useContext, logger } = usePlugin();
|
|
31
|
+
let httpTransport;
|
|
32
|
+
// 使用新的 provide() API 注册 mcpServer Context
|
|
33
|
+
provide({
|
|
44
34
|
name: "mcpServer",
|
|
45
35
|
description: "MCP Server for Zhin development",
|
|
46
36
|
async mounted(p) {
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
// 从配置服务获取配置
|
|
38
|
+
const configService = root.inject("config");
|
|
39
|
+
const appConfig = configService.get("zhin.config.yml");
|
|
40
|
+
const config = appConfig.mcp || {};
|
|
41
|
+
const { enabled = true } = config;
|
|
42
|
+
if (!enabled) {
|
|
43
|
+
logger.info("MCP Server is disabled");
|
|
49
44
|
return null;
|
|
50
45
|
}
|
|
51
|
-
mcpServer = createMCPServer();
|
|
52
|
-
// HTTP Stream 传输
|
|
53
|
-
useContext("router", (router) => {
|
|
54
|
-
const mcpPath = config.path || "/mcp";
|
|
55
|
-
// 创建 StreamableHTTPServerTransport (无状态模式)
|
|
56
|
-
const httpTransport = new StreamableHTTPServerTransport({
|
|
57
|
-
sessionIdGenerator: undefined, // 无状态模式
|
|
58
|
-
});
|
|
59
|
-
// 连接 transport
|
|
60
|
-
mcpServer.connect(httpTransport).then(() => {
|
|
61
|
-
p.logger.info(`✅ MCP Server started at ${mcpPath}`);
|
|
62
|
-
}).catch((err) => {
|
|
63
|
-
p.logger.error("Failed to connect HTTP transport:", err);
|
|
64
|
-
});
|
|
65
|
-
// 处理 GET 和 POST 请求
|
|
66
|
-
router.get(mcpPath, async (ctx) => {
|
|
67
|
-
await httpTransport.handleRequest(ctx.req, ctx.res);
|
|
68
|
-
});
|
|
69
|
-
router.post(mcpPath, async (ctx) => {
|
|
70
|
-
await httpTransport.handleRequest(ctx.req, ctx.res, ctx.request.body);
|
|
71
|
-
});
|
|
72
|
-
cleanup = () => {
|
|
73
|
-
httpTransport.close();
|
|
74
|
-
p.logger.info("MCP Server HTTP transport closed");
|
|
75
|
-
};
|
|
76
|
-
});
|
|
46
|
+
const mcpServer = createMCPServer();
|
|
77
47
|
return mcpServer;
|
|
78
48
|
},
|
|
79
|
-
async dispose() {
|
|
49
|
+
async dispose(mcpServer) {
|
|
80
50
|
if (mcpServer) {
|
|
81
51
|
await mcpServer.close();
|
|
82
52
|
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
53
|
+
if (httpTransport) {
|
|
54
|
+
httpTransport.close();
|
|
55
|
+
logger.info("MCP Server HTTP transport closed");
|
|
85
56
|
}
|
|
86
57
|
},
|
|
87
58
|
});
|
|
59
|
+
// HTTP Stream 传输
|
|
60
|
+
useContext("router", "mcpServer", (router, mcpServer) => {
|
|
61
|
+
if (!mcpServer)
|
|
62
|
+
return;
|
|
63
|
+
// 从配置服务获取配置
|
|
64
|
+
const configService = root.inject("config");
|
|
65
|
+
const appConfig = configService.get("zhin.config.yml");
|
|
66
|
+
const config = appConfig.mcp || {};
|
|
67
|
+
const { enabled = true, path: mcpPath = "/mcp" } = config;
|
|
68
|
+
logger.info(`MCP Config: enabled=${enabled}, path=${mcpPath}`);
|
|
69
|
+
// 创建 StreamableHTTPServerTransport (无状态模式)
|
|
70
|
+
httpTransport = new StreamableHTTPServerTransport({
|
|
71
|
+
sessionIdGenerator: undefined, // 无状态模式
|
|
72
|
+
});
|
|
73
|
+
// 连接 transport
|
|
74
|
+
mcpServer
|
|
75
|
+
.connect(httpTransport)
|
|
76
|
+
.then(() => {
|
|
77
|
+
logger.info(`✅ MCP Server started at ${mcpPath}`);
|
|
78
|
+
})
|
|
79
|
+
.catch((err) => {
|
|
80
|
+
logger.error("Failed to connect HTTP transport:", err);
|
|
81
|
+
});
|
|
82
|
+
// 处理 GET 和 POST 请求
|
|
83
|
+
router.get(mcpPath, async (ctx) => {
|
|
84
|
+
await httpTransport.handleRequest(ctx.req, ctx.res);
|
|
85
|
+
});
|
|
86
|
+
router.post(mcpPath, async (ctx) => {
|
|
87
|
+
await httpTransport.handleRequest(ctx.req, ctx.res, ctx.request.body);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
88
90
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAiB/C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;SACZ;KACF,CACF,CAAC;IAEF,gBAAgB;IAChB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,eAAe,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AAE1D,IAAI,aAAwD,CAAC;AAE7D,0CAA0C;AAC1C,OAAO,CAAC;IACN,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,iCAAiC;IAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACb,YAAY;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAsB,iBAAiB,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;QACnC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAElC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,IAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,SAAS;QACrB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,iBAAiB;AACjB,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,YAAY;IACZ,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAsB,iBAAiB,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,UAAU,OAAO,EAAE,CAAC,CAAC;IAE/D,2CAA2C;IAC3C,aAAa,GAAG,IAAI,6BAA6B,CAAC;QAChD,kBAAkB,EAAE,SAAS,EAAE,QAAQ;KACxC,CAAC,CAAC;IAEH,eAAe;IACf,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,IAAI,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEL,mBAAmB;IACnB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,aAAc,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;QACtC,MAAM,aAAc,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Zhin MCP Server - 让 AI 助手能够理解和生成 Zhin 插件",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -31,12 +31,11 @@
|
|
|
31
31
|
"zod": "^3.24.1"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@zhin.js/http": "^1.0.
|
|
35
|
-
"zhin.js": "^1.0.
|
|
34
|
+
"@zhin.js/http": "^1.0.9",
|
|
35
|
+
"zhin.js": "^1.0.18"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@types/node": "latest"
|
|
39
|
-
"@zhin.js/types": "^1.0.5"
|
|
38
|
+
"@types/node": "latest"
|
|
40
39
|
},
|
|
41
40
|
"files": [
|
|
42
41
|
"lib",
|
|
@@ -44,8 +43,7 @@
|
|
|
44
43
|
"CHANGELOG.md"
|
|
45
44
|
],
|
|
46
45
|
"scripts": {
|
|
47
|
-
"build": "
|
|
48
|
-
"clean": "rm -rf lib"
|
|
49
|
-
"build:node": "tsc"
|
|
46
|
+
"build": "tsc",
|
|
47
|
+
"clean": "rm -rf lib"
|
|
50
48
|
}
|
|
51
49
|
}
|