transn-yapi-mcp 0.1.0 → 0.1.2

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/dist/index.js CHANGED
@@ -3,8 +3,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { tools } from "./tools.js";
5
5
  const server = new McpServer({
6
- name: "@transn/yapi-mcp",
7
- version: "0.1.0"
6
+ name: "transn-yapi-mcp",
7
+ version: "0.1.2"
8
8
  });
9
9
  // 注册工具
10
10
  for (const tool of tools) {
@@ -15,4 +15,8 @@ for (const tool of tools) {
15
15
  }
16
16
  const transport = new StdioServerTransport();
17
17
  await server.connect(transport);
18
+ // 确保在无输入时进程不立即退出,便于被 MCP 客户端保持长连接
19
+ process.stdin.resume();
20
+ // 兜底保活,避免在某些环境下事件循环清空直接退出
21
+ setInterval(() => { }, 1 << 30);
18
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,OAAO;AACP,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,OAAO;AACP,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;IACzB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,kCAAkC;AAClC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,0BAA0B;AAC1B,WAAW,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC"}
package/dist/tools.js CHANGED
@@ -1,8 +1,10 @@
1
+ // src/tools.ts
1
2
  import { z } from "zod";
2
3
  import { getInterface, getInterfaceByPath } from "./yapi.js";
3
4
  export const tools = [
4
5
  {
5
- name: "yapi.get_api_context",
6
+ // 工具名用简单下划线,避免客户端再做转换
7
+ name: "yapi_get_api_context",
6
8
  description: "Get structured API context from YAPI",
7
9
  inputSchema: z.object({
8
10
  projectId: z.number().optional(),
@@ -12,7 +14,7 @@ export const tools = [
12
14
  const api = projectId
13
15
  ? await getInterface(projectId, interfaceId)
14
16
  : await getInterface(interfaceId);
15
- return {
17
+ const payload = {
16
18
  name: api.title,
17
19
  path: api.path,
18
20
  method: api.method,
@@ -23,10 +25,19 @@ export const tools = [
23
25
  },
24
26
  response: api.res_body
25
27
  };
28
+ // ★ 关键:返回 MCP 标准的 CallToolResult
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: JSON.stringify(payload) // 先用 text,保证协议合法
34
+ }
35
+ ]
36
+ };
26
37
  }
27
38
  },
28
39
  {
29
- name: "yapi.get_api_context_by_path",
40
+ name: "yapi_get_api_context_by_path",
30
41
  description: "Get API context by path within a YAPI project",
31
42
  inputSchema: z.object({
32
43
  projectId: z.number(),
@@ -35,7 +46,7 @@ export const tools = [
35
46
  }),
36
47
  handler: async ({ projectId, path, method }) => {
37
48
  const api = await getInterfaceByPath(projectId, path, method);
38
- return {
49
+ const payload = {
39
50
  name: api.title,
40
51
  path: api.path,
41
52
  method: api.method,
@@ -46,6 +57,14 @@ export const tools = [
46
57
  },
47
58
  response: api.res_body
48
59
  };
60
+ return {
61
+ content: [
62
+ {
63
+ type: "text",
64
+ text: JSON.stringify(payload)
65
+ }
66
+ ]
67
+ };
49
68
  }
50
69
  }
51
70
  ];
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAA+C,EAAE,EAAE;YACzF,MAAM,GAAG,GAAG,SAAS;gBACnB,CAAC,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC;gBAC5C,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;YAEpC,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,IAAI;gBACrB,OAAO,EAAE;oBACP,KAAK,EAAE,GAAG,CAAC,SAAS;oBACpB,IAAI,EAAE,GAAG,CAAC,cAAc;iBACzB;gBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC;QACF,OAAO,EAAE,KAAK,EACZ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAwD,EACjF,EAAE;YACF,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAE9D,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,IAAI;gBACrB,OAAO,EAAE;oBACP,KAAK,EAAE,GAAG,CAAC,SAAS;oBACpB,IAAI,EAAE,GAAG,CAAC,cAAc;iBACzB;gBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;QACE,sBAAsB;QACtB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACxB,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAA+C,EAAE,EAAE;YACzF,MAAM,GAAG,GAAG,SAAS;gBACnB,CAAC,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC;gBAC5C,CAAC,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,IAAI;gBACrB,OAAO,EAAE;oBACP,KAAK,EAAE,GAAG,CAAC,SAAS;oBACpB,IAAI,EAAE,GAAG,CAAC,cAAc;iBACzB;gBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;YAEF,iCAAiC;YACjC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,iBAAiB;qBAChD;iBACF;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAC;QACF,OAAO,EAAE,KAAK,EACZ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAwD,EACjF,EAAE;YACF,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAE9D,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,WAAW,EAAE,GAAG,CAAC,IAAI;gBACrB,OAAO,EAAE;oBACP,KAAK,EAAE,GAAG,CAAC,SAAS;oBACpB,IAAI,EAAE,GAAG,CAAC,cAAc;iBACzB;gBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transn-yapi-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "An MCP server that fetches structured API metadata from YAPI and exposes it as tools.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -5,7 +5,7 @@ import { tools } from "./tools.js";
5
5
 
6
6
  const server = new McpServer({
7
7
  name: "transn-yapi-mcp",
8
- version: "0.1.0"
8
+ version: "0.1.2"
9
9
  });
10
10
 
11
11
  // 注册工具
@@ -18,3 +18,7 @@ for (const tool of tools) {
18
18
 
19
19
  const transport = new StdioServerTransport();
20
20
  await server.connect(transport);
21
+ // 确保在无输入时进程不立即退出,便于被 MCP 客户端保持长连接
22
+ process.stdin.resume();
23
+ // 兜底保活,避免在某些环境下事件循环清空直接退出
24
+ setInterval(() => {}, 1 << 30);
package/src/tools.ts CHANGED
@@ -1,9 +1,11 @@
1
+ // src/tools.ts
1
2
  import { z } from "zod";
2
3
  import { getInterface, getInterfaceByPath } from "./yapi.js";
3
4
 
4
5
  export const tools = [
5
6
  {
6
- name: "yapi.get_api_context",
7
+ // 工具名用简单下划线,避免客户端再做转换
8
+ name: "yapi_get_api_context",
7
9
  description: "Get structured API context from YAPI",
8
10
  inputSchema: z.object({
9
11
  projectId: z.number().optional(),
@@ -14,7 +16,7 @@ export const tools = [
14
16
  ? await getInterface(projectId, interfaceId)
15
17
  : await getInterface(interfaceId);
16
18
 
17
- return {
19
+ const payload = {
18
20
  name: api.title,
19
21
  path: api.path,
20
22
  method: api.method,
@@ -25,10 +27,20 @@ export const tools = [
25
27
  },
26
28
  response: api.res_body
27
29
  };
30
+
31
+ // ★ 关键:返回 MCP 标准的 CallToolResult
32
+ return {
33
+ content: [
34
+ {
35
+ type: "text",
36
+ text: JSON.stringify(payload) // 先用 text,保证协议合法
37
+ }
38
+ ]
39
+ };
28
40
  }
29
41
  },
30
42
  {
31
- name: "yapi.get_api_context_by_path",
43
+ name: "yapi_get_api_context_by_path",
32
44
  description: "Get API context by path within a YAPI project",
33
45
  inputSchema: z.object({
34
46
  projectId: z.number(),
@@ -40,7 +52,7 @@ export const tools = [
40
52
  ) => {
41
53
  const api = await getInterfaceByPath(projectId, path, method);
42
54
 
43
- return {
55
+ const payload = {
44
56
  name: api.title,
45
57
  path: api.path,
46
58
  method: api.method,
@@ -51,6 +63,15 @@ export const tools = [
51
63
  },
52
64
  response: api.res_body
53
65
  };
66
+
67
+ return {
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: JSON.stringify(payload)
72
+ }
73
+ ]
74
+ };
54
75
  }
55
76
  }
56
- ];
77
+ ];