@toolsdk.ai/registry 1.0.113 → 1.0.115
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 +66 -11
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +23 -25
- package/dist/domains/config/config-route.d.ts +2 -0
- package/dist/domains/config/config-route.js +31 -0
- package/dist/domains/config/config-schema.d.ts +57 -0
- package/dist/domains/config/config-schema.js +10 -0
- package/dist/domains/config/config-types.d.ts +3 -0
- package/dist/domains/executor/executor-factory.d.ts +9 -0
- package/dist/domains/executor/executor-factory.js +17 -0
- package/dist/domains/executor/executor-types.d.ts +15 -0
- package/dist/domains/executor/local-executor.d.ts +12 -0
- package/dist/domains/executor/local-executor.js +48 -0
- package/dist/domains/executor/sandbox-executor.d.ts +16 -0
- package/dist/domains/executor/sandbox-executor.js +83 -0
- package/dist/domains/package/package-handler.d.ts +17 -0
- package/dist/domains/package/package-handler.js +58 -0
- package/dist/domains/package/package-repository.d.ts +9 -0
- package/dist/domains/package/package-repository.js +26 -0
- package/dist/domains/package/package-route.d.ts +2 -0
- package/dist/{api → domains/package}/package-route.js +38 -52
- package/dist/domains/package/package-schema.d.ts +244 -0
- package/dist/domains/package/package-schema.js +52 -0
- package/dist/domains/package/package-so.d.ts +78 -0
- package/dist/domains/package/package-so.js +61 -0
- package/dist/domains/package/package-so.test.js +378 -0
- package/dist/domains/package/package-types.d.ts +9 -0
- package/dist/domains/package/package-types.js +1 -0
- package/dist/domains/sandbox/clients/daytona-client.d.ts +17 -0
- package/dist/domains/sandbox/clients/daytona-client.js +112 -0
- package/dist/domains/sandbox/clients/sandock-client.d.ts +19 -0
- package/dist/domains/sandbox/clients/sandock-client.js +178 -0
- package/dist/domains/sandbox/sandbox-factory.d.ts +8 -0
- package/dist/domains/sandbox/sandbox-factory.js +23 -0
- package/dist/domains/sandbox/sandbox-pool-so.d.ts +25 -0
- package/dist/domains/sandbox/sandbox-pool-so.js +123 -0
- package/dist/domains/sandbox/sandbox-types.d.ts +25 -0
- package/dist/domains/sandbox/sandbox-types.js +1 -0
- package/dist/domains/sandbox/sandbox-utils.d.ts +3 -0
- package/dist/domains/sandbox/sandbox-utils.js +109 -0
- package/dist/domains/search/search-handler.d.ts +47 -0
- package/dist/domains/search/search-handler.js +113 -0
- package/dist/domains/search/search-route.d.ts +2 -0
- package/dist/domains/search/search-route.js +101 -0
- package/dist/domains/search/search-schema.d.ts +384 -0
- package/dist/domains/search/search-schema.js +99 -0
- package/dist/domains/search/search-so.d.ts +55 -0
- package/dist/{search/search-service.js → domains/search/search-so.js} +200 -297
- package/dist/shared/config/environment.d.ts +16 -0
- package/dist/shared/config/environment.js +41 -0
- package/dist/shared/schemas/common-schema.d.ts +249 -0
- package/dist/{schema.js → shared/schemas/common-schema.js} +37 -80
- package/dist/shared/schemas/index.d.ts +1 -0
- package/dist/shared/schemas/index.js +1 -0
- package/dist/shared/scripts-helpers/index.d.ts +60 -0
- package/dist/shared/scripts-helpers/index.js +61 -0
- package/dist/shared/utils/file-util.d.ts +1 -0
- package/dist/shared/utils/file-util.js +5 -0
- package/dist/shared/utils/index.d.ts +5 -0
- package/dist/shared/utils/index.js +5 -0
- package/dist/shared/utils/mcp-client-util.d.ts +31 -0
- package/dist/shared/utils/mcp-client-util.js +79 -0
- package/dist/shared/utils/package-util.d.ts +6 -0
- package/dist/shared/utils/package-util.js +53 -0
- package/dist/shared/utils/promise-util.d.ts +1 -0
- package/dist/shared/utils/promise-util.js +14 -0
- package/dist/{utils.d.ts → shared/utils/response-util.d.ts} +6 -2
- package/dist/{utils.js → shared/utils/response-util.js} +1 -6
- package/dist/shared/utils/string-util.d.ts +1 -0
- package/dist/shared/utils/string-util.js +25 -0
- package/dist/shared/utils/validation-util.d.ts +12 -0
- package/dist/shared/utils/validation-util.js +99 -0
- package/indexes/categories-list.json +1 -0
- package/indexes/packages-list.json +6 -0
- package/package.json +9 -2
- package/packages/developer-tools/neurolink.json +23 -0
- package/packages/search-data-extraction/ref-tools-mcp.json +7 -2
- package/README.dev.md +0 -195
- package/dist/api/package-handler.d.ts +0 -18
- package/dist/api/package-handler.js +0 -72
- package/dist/api/package-route.d.ts +0 -2
- package/dist/api/package-so.d.ts +0 -19
- package/dist/api/package-so.js +0 -263
- package/dist/api/package.test.js +0 -19
- package/dist/helper.d.ts +0 -72
- package/dist/helper.js +0 -278
- package/dist/sandbox/mcp-sandbox-client.d.ts +0 -37
- package/dist/sandbox/mcp-sandbox-client.js +0 -428
- package/dist/schema.d.ts +0 -806
- package/dist/search/search-route.d.ts +0 -3
- package/dist/search/search-route.js +0 -305
- package/dist/search/search-service.d.ts +0 -120
- package/dist/search/search.test.js +0 -100
- package/dist/types.d.ts +0 -27
- /package/dist/{api/package.test.d.ts → domains/config/config-types.js} +0 -0
- /package/dist/{search/search.test.d.ts → domains/executor/executor-types.js} +0 -0
- /package/dist/{types.js → domains/package/package-so.test.d.ts} +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import allPackagesList from "../../../indexes/packages-list.json";
|
|
4
|
+
import { MCPServerPackageConfigSchema } from "../../shared/schemas";
|
|
5
|
+
export class PackageRepository {
|
|
6
|
+
constructor(packagesDir) {
|
|
7
|
+
this.packagesList = allPackagesList;
|
|
8
|
+
this.packagesDir = packagesDir;
|
|
9
|
+
}
|
|
10
|
+
getPackageConfig(packageName) {
|
|
11
|
+
const packageInfo = this.packagesList[packageName];
|
|
12
|
+
if (!packageInfo) {
|
|
13
|
+
throw new Error(`Package '${packageName}' not found`);
|
|
14
|
+
}
|
|
15
|
+
const configPath = path.join(this.packagesDir, packageInfo.path);
|
|
16
|
+
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
17
|
+
const packageConfig = MCPServerPackageConfigSchema.parse(JSON.parse(configContent));
|
|
18
|
+
return packageConfig;
|
|
19
|
+
}
|
|
20
|
+
getAllPackages() {
|
|
21
|
+
return this.packagesList;
|
|
22
|
+
}
|
|
23
|
+
exists(packageName) {
|
|
24
|
+
return !!this.packagesList[packageName];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -1,55 +1,9 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
1
|
import { createRoute, OpenAPIHono } from "@hono/zod-openapi";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { createResponse, createRouteResponses, getDirname } from "../utils";
|
|
2
|
+
import { createResponse, createRouteResponses } from "../../shared/utils/response-util";
|
|
3
|
+
import { getPythonDependencies } from "../../shared/utils/validation-util";
|
|
6
4
|
import { packageHandler } from "./package-handler";
|
|
7
|
-
|
|
5
|
+
import { ExecuteToolResponseSchema, PackageDetailResponseSchema, PackagesListResponseSchema, packageNameQuerySchema, ToolExecuteSchema, ToolsResponseSchema, } from "./package-schema";
|
|
8
6
|
export const packageRoutes = new OpenAPIHono();
|
|
9
|
-
const featuredRoute = createRoute({
|
|
10
|
-
method: "get",
|
|
11
|
-
path: "/config/featured",
|
|
12
|
-
responses: createRouteResponses(FeaturedResponseSchema),
|
|
13
|
-
});
|
|
14
|
-
packageRoutes.openapi(featuredRoute, async (c) => {
|
|
15
|
-
const featuredPath = path.join(__dirname, "../../config/featured.mjs");
|
|
16
|
-
const featuredModule = await import(`file://${featuredPath}`);
|
|
17
|
-
const featured = featuredModule.default;
|
|
18
|
-
const response = createResponse(featured);
|
|
19
|
-
return c.json(response, 200);
|
|
20
|
-
});
|
|
21
|
-
const categoriesRoute = createRoute({
|
|
22
|
-
method: "get",
|
|
23
|
-
path: "/config/categories",
|
|
24
|
-
responses: createRouteResponses(CategoriesResponseSchema),
|
|
25
|
-
});
|
|
26
|
-
packageRoutes.openapi(categoriesRoute, async (c) => {
|
|
27
|
-
const categoriesPath = path.join(__dirname, "../../config/categories.mjs");
|
|
28
|
-
const categoriesModule = await import(`file://${categoriesPath}`);
|
|
29
|
-
const categories = categoriesModule.default;
|
|
30
|
-
const response = createResponse(categories);
|
|
31
|
-
return c.json(response, 200);
|
|
32
|
-
});
|
|
33
|
-
const packagesListRoute = createRoute({
|
|
34
|
-
method: "get",
|
|
35
|
-
path: "/indexes/packages-list",
|
|
36
|
-
responses: createRouteResponses(PackagesListResponseSchema),
|
|
37
|
-
});
|
|
38
|
-
packageRoutes.openapi(packagesListRoute, async (c) => {
|
|
39
|
-
const packagesList = (await import("../../indexes/packages-list.json")).default;
|
|
40
|
-
const response = createResponse(packagesList);
|
|
41
|
-
return c.json(response, 200);
|
|
42
|
-
});
|
|
43
|
-
const pythonTomlRoute = createRoute({
|
|
44
|
-
method: "get",
|
|
45
|
-
path: "/python-mcp/pyproject",
|
|
46
|
-
responses: createRouteResponses(PackagesListResponseSchema),
|
|
47
|
-
});
|
|
48
|
-
packageRoutes.openapi(pythonTomlRoute, async (c) => {
|
|
49
|
-
const pythonDependencies = getPythonDependencies();
|
|
50
|
-
const response = createResponse(pythonDependencies);
|
|
51
|
-
return c.json(response, 200);
|
|
52
|
-
});
|
|
53
7
|
const packageDetailRoute = createRoute({
|
|
54
8
|
method: "get",
|
|
55
9
|
path: "/packages/detail",
|
|
@@ -58,7 +12,11 @@ const packageDetailRoute = createRoute({
|
|
|
58
12
|
includeErrorResponses: true,
|
|
59
13
|
}),
|
|
60
14
|
});
|
|
61
|
-
packageRoutes.openapi(packageDetailRoute,
|
|
15
|
+
packageRoutes.openapi(packageDetailRoute, async (c) => {
|
|
16
|
+
const { packageName } = c.req.valid("query");
|
|
17
|
+
const result = await packageHandler.getPackageDetail(packageName);
|
|
18
|
+
return c.json(result, 200);
|
|
19
|
+
});
|
|
62
20
|
const toolsRoute = createRoute({
|
|
63
21
|
method: "get",
|
|
64
22
|
path: "/packages/tools",
|
|
@@ -67,7 +25,11 @@ const toolsRoute = createRoute({
|
|
|
67
25
|
includeErrorResponses: true,
|
|
68
26
|
}),
|
|
69
27
|
});
|
|
70
|
-
packageRoutes.openapi(toolsRoute,
|
|
28
|
+
packageRoutes.openapi(toolsRoute, async (c) => {
|
|
29
|
+
const { packageName } = c.req.valid("query");
|
|
30
|
+
const result = await packageHandler.listTools(packageName);
|
|
31
|
+
return c.json(result, 200);
|
|
32
|
+
});
|
|
71
33
|
const executeToolRoute = createRoute({
|
|
72
34
|
method: "post",
|
|
73
35
|
path: "/packages/run",
|
|
@@ -85,4 +47,28 @@ const executeToolRoute = createRoute({
|
|
|
85
47
|
includeErrorResponses: true,
|
|
86
48
|
}),
|
|
87
49
|
});
|
|
88
|
-
packageRoutes.openapi(executeToolRoute,
|
|
50
|
+
packageRoutes.openapi(executeToolRoute, async (c) => {
|
|
51
|
+
const body = c.req.valid("json");
|
|
52
|
+
const result = await packageHandler.executeTool(body.packageName, body.toolKey, body.inputData, body.envs);
|
|
53
|
+
return c.json(result, 200);
|
|
54
|
+
});
|
|
55
|
+
const packagesListRoute = createRoute({
|
|
56
|
+
method: "get",
|
|
57
|
+
path: "/indexes/packages-list",
|
|
58
|
+
responses: createRouteResponses(PackagesListResponseSchema),
|
|
59
|
+
});
|
|
60
|
+
packageRoutes.openapi(packagesListRoute, async (c) => {
|
|
61
|
+
const packagesList = (await import("../../../indexes/packages-list.json")).default;
|
|
62
|
+
const response = createResponse(packagesList);
|
|
63
|
+
return c.json(response, 200);
|
|
64
|
+
});
|
|
65
|
+
const pythonTomlRoute = createRoute({
|
|
66
|
+
method: "get",
|
|
67
|
+
path: "/python-mcp/pyproject",
|
|
68
|
+
responses: createRouteResponses(PackagesListResponseSchema),
|
|
69
|
+
});
|
|
70
|
+
packageRoutes.openapi(pythonTomlRoute, async (c) => {
|
|
71
|
+
const pythonDependencies = getPythonDependencies();
|
|
72
|
+
const response = createResponse(pythonDependencies);
|
|
73
|
+
return c.json(response, 200);
|
|
74
|
+
});
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { z } from "@hono/zod-openapi";
|
|
2
|
+
export declare const packageNameQuerySchema: z.ZodObject<{
|
|
3
|
+
packageName: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
packageName: string;
|
|
6
|
+
}, {
|
|
7
|
+
packageName: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const ToolExecuteSchema: z.ZodObject<{
|
|
10
|
+
packageName: z.ZodString;
|
|
11
|
+
toolKey: z.ZodString;
|
|
12
|
+
inputData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
13
|
+
envs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
packageName: string;
|
|
16
|
+
toolKey: string;
|
|
17
|
+
inputData: Record<string, unknown>;
|
|
18
|
+
envs?: Record<string, string> | undefined;
|
|
19
|
+
}, {
|
|
20
|
+
packageName: string;
|
|
21
|
+
toolKey: string;
|
|
22
|
+
inputData: Record<string, unknown>;
|
|
23
|
+
envs?: Record<string, string> | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const PackageDetailResponseSchema: z.ZodObject<{
|
|
26
|
+
success: z.ZodBoolean;
|
|
27
|
+
code: z.ZodNumber;
|
|
28
|
+
message: z.ZodString;
|
|
29
|
+
} & {
|
|
30
|
+
data: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
name: z.ZodOptional<z.ZodString>;
|
|
32
|
+
packageName: z.ZodString;
|
|
33
|
+
description: z.ZodOptional<z.ZodString>;
|
|
34
|
+
category: z.ZodOptional<z.ZodString>;
|
|
35
|
+
validated: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
runtime: z.ZodOptional<z.ZodEnum<["node", "python", "java", "go"]>>;
|
|
37
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
38
|
+
name: z.ZodString;
|
|
39
|
+
description: z.ZodOptional<z.ZodString>;
|
|
40
|
+
inputSchema: z.ZodOptional<z.ZodObject<{
|
|
41
|
+
type: z.ZodString;
|
|
42
|
+
properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
43
|
+
required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
type: string;
|
|
46
|
+
properties?: Record<string, unknown> | undefined;
|
|
47
|
+
required?: string[] | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
type: string;
|
|
50
|
+
properties?: Record<string, unknown> | undefined;
|
|
51
|
+
required?: string[] | undefined;
|
|
52
|
+
}>>;
|
|
53
|
+
}, "strip", z.ZodTypeAny, {
|
|
54
|
+
name: string;
|
|
55
|
+
description?: string | undefined;
|
|
56
|
+
inputSchema?: {
|
|
57
|
+
type: string;
|
|
58
|
+
properties?: Record<string, unknown> | undefined;
|
|
59
|
+
required?: string[] | undefined;
|
|
60
|
+
} | undefined;
|
|
61
|
+
}, {
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string | undefined;
|
|
64
|
+
inputSchema?: {
|
|
65
|
+
type: string;
|
|
66
|
+
properties?: Record<string, unknown> | undefined;
|
|
67
|
+
required?: string[] | undefined;
|
|
68
|
+
} | undefined;
|
|
69
|
+
}>, "many">>;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
packageName: string;
|
|
72
|
+
description?: string | undefined;
|
|
73
|
+
name?: string | undefined;
|
|
74
|
+
runtime?: "node" | "python" | "java" | "go" | undefined;
|
|
75
|
+
category?: string | undefined;
|
|
76
|
+
validated?: boolean | undefined;
|
|
77
|
+
tools?: {
|
|
78
|
+
name: string;
|
|
79
|
+
description?: string | undefined;
|
|
80
|
+
inputSchema?: {
|
|
81
|
+
type: string;
|
|
82
|
+
properties?: Record<string, unknown> | undefined;
|
|
83
|
+
required?: string[] | undefined;
|
|
84
|
+
} | undefined;
|
|
85
|
+
}[] | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
packageName: string;
|
|
88
|
+
description?: string | undefined;
|
|
89
|
+
name?: string | undefined;
|
|
90
|
+
runtime?: "node" | "python" | "java" | "go" | undefined;
|
|
91
|
+
category?: string | undefined;
|
|
92
|
+
validated?: boolean | undefined;
|
|
93
|
+
tools?: {
|
|
94
|
+
name: string;
|
|
95
|
+
description?: string | undefined;
|
|
96
|
+
inputSchema?: {
|
|
97
|
+
type: string;
|
|
98
|
+
properties?: Record<string, unknown> | undefined;
|
|
99
|
+
required?: string[] | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
}[] | undefined;
|
|
102
|
+
}>>;
|
|
103
|
+
}, "strip", z.ZodTypeAny, {
|
|
104
|
+
success: boolean;
|
|
105
|
+
code: number;
|
|
106
|
+
message: string;
|
|
107
|
+
data?: {
|
|
108
|
+
packageName: string;
|
|
109
|
+
description?: string | undefined;
|
|
110
|
+
name?: string | undefined;
|
|
111
|
+
runtime?: "node" | "python" | "java" | "go" | undefined;
|
|
112
|
+
category?: string | undefined;
|
|
113
|
+
validated?: boolean | undefined;
|
|
114
|
+
tools?: {
|
|
115
|
+
name: string;
|
|
116
|
+
description?: string | undefined;
|
|
117
|
+
inputSchema?: {
|
|
118
|
+
type: string;
|
|
119
|
+
properties?: Record<string, unknown> | undefined;
|
|
120
|
+
required?: string[] | undefined;
|
|
121
|
+
} | undefined;
|
|
122
|
+
}[] | undefined;
|
|
123
|
+
} | undefined;
|
|
124
|
+
}, {
|
|
125
|
+
success: boolean;
|
|
126
|
+
code: number;
|
|
127
|
+
message: string;
|
|
128
|
+
data?: {
|
|
129
|
+
packageName: string;
|
|
130
|
+
description?: string | undefined;
|
|
131
|
+
name?: string | undefined;
|
|
132
|
+
runtime?: "node" | "python" | "java" | "go" | undefined;
|
|
133
|
+
category?: string | undefined;
|
|
134
|
+
validated?: boolean | undefined;
|
|
135
|
+
tools?: {
|
|
136
|
+
name: string;
|
|
137
|
+
description?: string | undefined;
|
|
138
|
+
inputSchema?: {
|
|
139
|
+
type: string;
|
|
140
|
+
properties?: Record<string, unknown> | undefined;
|
|
141
|
+
required?: string[] | undefined;
|
|
142
|
+
} | undefined;
|
|
143
|
+
}[] | undefined;
|
|
144
|
+
} | undefined;
|
|
145
|
+
}>;
|
|
146
|
+
export declare const ToolsResponseSchema: z.ZodObject<{
|
|
147
|
+
success: z.ZodBoolean;
|
|
148
|
+
code: z.ZodNumber;
|
|
149
|
+
message: z.ZodString;
|
|
150
|
+
} & {
|
|
151
|
+
data: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
152
|
+
name: z.ZodString;
|
|
153
|
+
description: z.ZodOptional<z.ZodString>;
|
|
154
|
+
inputSchema: z.ZodOptional<z.ZodObject<{
|
|
155
|
+
type: z.ZodString;
|
|
156
|
+
properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
157
|
+
required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
158
|
+
}, "strip", z.ZodTypeAny, {
|
|
159
|
+
type: string;
|
|
160
|
+
properties?: Record<string, unknown> | undefined;
|
|
161
|
+
required?: string[] | undefined;
|
|
162
|
+
}, {
|
|
163
|
+
type: string;
|
|
164
|
+
properties?: Record<string, unknown> | undefined;
|
|
165
|
+
required?: string[] | undefined;
|
|
166
|
+
}>>;
|
|
167
|
+
}, "strip", z.ZodTypeAny, {
|
|
168
|
+
name: string;
|
|
169
|
+
description?: string | undefined;
|
|
170
|
+
inputSchema?: {
|
|
171
|
+
type: string;
|
|
172
|
+
properties?: Record<string, unknown> | undefined;
|
|
173
|
+
required?: string[] | undefined;
|
|
174
|
+
} | undefined;
|
|
175
|
+
}, {
|
|
176
|
+
name: string;
|
|
177
|
+
description?: string | undefined;
|
|
178
|
+
inputSchema?: {
|
|
179
|
+
type: string;
|
|
180
|
+
properties?: Record<string, unknown> | undefined;
|
|
181
|
+
required?: string[] | undefined;
|
|
182
|
+
} | undefined;
|
|
183
|
+
}>, "many">>;
|
|
184
|
+
}, "strip", z.ZodTypeAny, {
|
|
185
|
+
success: boolean;
|
|
186
|
+
code: number;
|
|
187
|
+
message: string;
|
|
188
|
+
data?: {
|
|
189
|
+
name: string;
|
|
190
|
+
description?: string | undefined;
|
|
191
|
+
inputSchema?: {
|
|
192
|
+
type: string;
|
|
193
|
+
properties?: Record<string, unknown> | undefined;
|
|
194
|
+
required?: string[] | undefined;
|
|
195
|
+
} | undefined;
|
|
196
|
+
}[] | undefined;
|
|
197
|
+
}, {
|
|
198
|
+
success: boolean;
|
|
199
|
+
code: number;
|
|
200
|
+
message: string;
|
|
201
|
+
data?: {
|
|
202
|
+
name: string;
|
|
203
|
+
description?: string | undefined;
|
|
204
|
+
inputSchema?: {
|
|
205
|
+
type: string;
|
|
206
|
+
properties?: Record<string, unknown> | undefined;
|
|
207
|
+
required?: string[] | undefined;
|
|
208
|
+
} | undefined;
|
|
209
|
+
}[] | undefined;
|
|
210
|
+
}>;
|
|
211
|
+
export declare const ExecuteToolResponseSchema: z.ZodObject<{
|
|
212
|
+
success: z.ZodBoolean;
|
|
213
|
+
code: z.ZodNumber;
|
|
214
|
+
message: z.ZodString;
|
|
215
|
+
} & {
|
|
216
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
217
|
+
}, "strip", z.ZodTypeAny, {
|
|
218
|
+
success: boolean;
|
|
219
|
+
code: number;
|
|
220
|
+
message: string;
|
|
221
|
+
data?: unknown;
|
|
222
|
+
}, {
|
|
223
|
+
success: boolean;
|
|
224
|
+
code: number;
|
|
225
|
+
message: string;
|
|
226
|
+
data?: unknown;
|
|
227
|
+
}>;
|
|
228
|
+
export declare const PackagesListResponseSchema: z.ZodObject<{
|
|
229
|
+
success: z.ZodBoolean;
|
|
230
|
+
code: z.ZodNumber;
|
|
231
|
+
message: z.ZodString;
|
|
232
|
+
} & {
|
|
233
|
+
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
234
|
+
}, "strip", z.ZodTypeAny, {
|
|
235
|
+
success: boolean;
|
|
236
|
+
code: number;
|
|
237
|
+
message: string;
|
|
238
|
+
data?: Record<string, unknown> | undefined;
|
|
239
|
+
}, {
|
|
240
|
+
success: boolean;
|
|
241
|
+
code: number;
|
|
242
|
+
message: string;
|
|
243
|
+
data?: Record<string, unknown> | undefined;
|
|
244
|
+
}>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from "@hono/zod-openapi";
|
|
2
|
+
import { BaseResponseSchema } from "../../shared/schemas/common-schema";
|
|
3
|
+
export const packageNameQuerySchema = z.object({
|
|
4
|
+
packageName: z
|
|
5
|
+
.string()
|
|
6
|
+
.min(1)
|
|
7
|
+
.openapi({
|
|
8
|
+
param: { name: "packageName", in: "query" },
|
|
9
|
+
example: "@modelcontextprotocol/server-filesystem",
|
|
10
|
+
description: "Package name",
|
|
11
|
+
}),
|
|
12
|
+
});
|
|
13
|
+
export const ToolExecuteSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
packageName: z.string().openapi({ example: "@modelcontextprotocol/server-filesystem" }),
|
|
16
|
+
toolKey: z.string().openapi({ example: "read_file" }),
|
|
17
|
+
inputData: z.record(z.unknown()).openapi({ example: { path: "/tmp/test.txt" } }),
|
|
18
|
+
envs: z.record(z.string()).optional(),
|
|
19
|
+
})
|
|
20
|
+
.openapi("ToolExecute");
|
|
21
|
+
const ToolDataSchema = z.object({
|
|
22
|
+
name: z.string(),
|
|
23
|
+
description: z.string().optional(),
|
|
24
|
+
inputSchema: z
|
|
25
|
+
.object({
|
|
26
|
+
type: z.string(),
|
|
27
|
+
properties: z.record(z.unknown()).optional(),
|
|
28
|
+
required: z.array(z.string()).optional(),
|
|
29
|
+
})
|
|
30
|
+
.optional(),
|
|
31
|
+
});
|
|
32
|
+
const PackageDetailDataSchema = z.object({
|
|
33
|
+
name: z.string().optional(),
|
|
34
|
+
packageName: z.string(),
|
|
35
|
+
description: z.string().optional(),
|
|
36
|
+
category: z.string().optional(),
|
|
37
|
+
validated: z.boolean().optional(),
|
|
38
|
+
runtime: z.enum(["node", "python", "java", "go"]).optional(),
|
|
39
|
+
tools: z.array(ToolDataSchema).optional(),
|
|
40
|
+
});
|
|
41
|
+
export const PackageDetailResponseSchema = BaseResponseSchema.extend({
|
|
42
|
+
data: PackageDetailDataSchema.optional(),
|
|
43
|
+
}).openapi("PackageDetailResponse");
|
|
44
|
+
export const ToolsResponseSchema = BaseResponseSchema.extend({
|
|
45
|
+
data: z.array(ToolDataSchema).optional(),
|
|
46
|
+
}).openapi("ToolsResponse");
|
|
47
|
+
export const ExecuteToolResponseSchema = BaseResponseSchema.extend({
|
|
48
|
+
data: z.unknown().optional(),
|
|
49
|
+
}).openapi("ExecuteToolResponse");
|
|
50
|
+
export const PackagesListResponseSchema = BaseResponseSchema.extend({
|
|
51
|
+
data: z.record(z.unknown()).optional(),
|
|
52
|
+
}).openapi("PackagesListResponse");
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import type { ToolExecutor } from "../executor/executor-types";
|
|
3
|
+
import type { PackageRepository } from "./package-repository";
|
|
4
|
+
export declare class PackageSO {
|
|
5
|
+
private readonly _packageName;
|
|
6
|
+
private readonly _config;
|
|
7
|
+
private readonly _packageInfo;
|
|
8
|
+
private readonly _executor;
|
|
9
|
+
private constructor();
|
|
10
|
+
get packageName(): string;
|
|
11
|
+
get name(): string | undefined;
|
|
12
|
+
get description(): string | undefined;
|
|
13
|
+
get category(): string | undefined;
|
|
14
|
+
get validated(): boolean | undefined;
|
|
15
|
+
get config(): {
|
|
16
|
+
type: "mcp-server";
|
|
17
|
+
runtime: "node" | "python" | "java" | "go";
|
|
18
|
+
packageName: string;
|
|
19
|
+
description?: string | undefined;
|
|
20
|
+
name?: string | undefined;
|
|
21
|
+
key?: string | undefined;
|
|
22
|
+
packageVersion?: string | undefined;
|
|
23
|
+
bin?: string | undefined;
|
|
24
|
+
binArgs?: string[] | undefined;
|
|
25
|
+
readme?: string | undefined;
|
|
26
|
+
url?: string | undefined;
|
|
27
|
+
license?: string | undefined;
|
|
28
|
+
logo?: string | undefined;
|
|
29
|
+
author?: string | undefined;
|
|
30
|
+
env?: Record<string, {
|
|
31
|
+
description: string;
|
|
32
|
+
required: boolean;
|
|
33
|
+
}> | undefined;
|
|
34
|
+
};
|
|
35
|
+
static init(packageName: string, repository: PackageRepository, executor: ToolExecutor): Promise<PackageSO>;
|
|
36
|
+
getTools(): Promise<Tool[]>;
|
|
37
|
+
executeTool(toolKey: string, inputData: Record<string, unknown>, envs?: Record<string, string>): Promise<unknown>;
|
|
38
|
+
getDetailWithTools(): Promise<{
|
|
39
|
+
name: string | undefined;
|
|
40
|
+
packageName: string;
|
|
41
|
+
description: string | undefined;
|
|
42
|
+
category: string | undefined;
|
|
43
|
+
validated: boolean | undefined;
|
|
44
|
+
tools: {
|
|
45
|
+
[x: string]: unknown;
|
|
46
|
+
name: string;
|
|
47
|
+
inputSchema: {
|
|
48
|
+
[x: string]: unknown;
|
|
49
|
+
type: "object";
|
|
50
|
+
properties?: {
|
|
51
|
+
[x: string]: unknown;
|
|
52
|
+
} | undefined;
|
|
53
|
+
required?: string[] | undefined;
|
|
54
|
+
};
|
|
55
|
+
description?: string | undefined;
|
|
56
|
+
title?: string | undefined;
|
|
57
|
+
outputSchema?: {
|
|
58
|
+
[x: string]: unknown;
|
|
59
|
+
type: "object";
|
|
60
|
+
properties?: {
|
|
61
|
+
[x: string]: unknown;
|
|
62
|
+
} | undefined;
|
|
63
|
+
required?: string[] | undefined;
|
|
64
|
+
} | undefined;
|
|
65
|
+
annotations?: {
|
|
66
|
+
[x: string]: unknown;
|
|
67
|
+
title?: string | undefined;
|
|
68
|
+
readOnlyHint?: boolean | undefined;
|
|
69
|
+
destructiveHint?: boolean | undefined;
|
|
70
|
+
idempotentHint?: boolean | undefined;
|
|
71
|
+
openWorldHint?: boolean | undefined;
|
|
72
|
+
} | undefined;
|
|
73
|
+
_meta?: {
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
} | undefined;
|
|
76
|
+
}[] | undefined;
|
|
77
|
+
}>;
|
|
78
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export class PackageSO {
|
|
2
|
+
constructor(_packageName, _config, _packageInfo, _repository, _executor) {
|
|
3
|
+
this._packageName = _packageName;
|
|
4
|
+
this._config = _config;
|
|
5
|
+
this._packageInfo = _packageInfo;
|
|
6
|
+
this._executor = _executor;
|
|
7
|
+
}
|
|
8
|
+
get packageName() {
|
|
9
|
+
return this._packageName;
|
|
10
|
+
}
|
|
11
|
+
get name() {
|
|
12
|
+
return this._config.name;
|
|
13
|
+
}
|
|
14
|
+
get description() {
|
|
15
|
+
return this._config.description;
|
|
16
|
+
}
|
|
17
|
+
get category() {
|
|
18
|
+
return this._packageInfo.category;
|
|
19
|
+
}
|
|
20
|
+
get validated() {
|
|
21
|
+
return this._packageInfo.validated;
|
|
22
|
+
}
|
|
23
|
+
get config() {
|
|
24
|
+
return this._config;
|
|
25
|
+
}
|
|
26
|
+
static async init(packageName, repository, executor) {
|
|
27
|
+
const config = repository.getPackageConfig(packageName);
|
|
28
|
+
const allPackages = repository.getAllPackages();
|
|
29
|
+
const packageInfo = allPackages[packageName] || {};
|
|
30
|
+
return new PackageSO(packageName, config, packageInfo, repository, executor);
|
|
31
|
+
}
|
|
32
|
+
async getTools() {
|
|
33
|
+
return await this._executor.listTools(this.packageName);
|
|
34
|
+
}
|
|
35
|
+
async executeTool(toolKey, inputData, envs) {
|
|
36
|
+
return await this._executor.executeTool({
|
|
37
|
+
packageName: this.packageName,
|
|
38
|
+
toolKey,
|
|
39
|
+
inputData,
|
|
40
|
+
envs,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async getDetailWithTools() {
|
|
44
|
+
let tools;
|
|
45
|
+
try {
|
|
46
|
+
tools = await this.getTools();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.warn(`[PackageSO] Failed to get tools for ${this.packageName}:`, error);
|
|
50
|
+
tools = undefined;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
name: this.name,
|
|
54
|
+
packageName: this.packageName,
|
|
55
|
+
description: this.description,
|
|
56
|
+
category: this.category,
|
|
57
|
+
validated: this.validated,
|
|
58
|
+
tools,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|