@toolplex/client 0.1.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.
Files changed (91) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +112 -0
  3. package/dist/mcp-server/clientContext.d.ts +35 -0
  4. package/dist/mcp-server/clientContext.js +107 -0
  5. package/dist/mcp-server/index.d.ts +1 -0
  6. package/dist/mcp-server/index.js +22 -0
  7. package/dist/mcp-server/logging/telemetryLogger.d.ts +18 -0
  8. package/dist/mcp-server/logging/telemetryLogger.js +54 -0
  9. package/dist/mcp-server/policy/callToolObserver.d.ts +9 -0
  10. package/dist/mcp-server/policy/callToolObserver.js +25 -0
  11. package/dist/mcp-server/policy/feedbackPolicy.d.ts +27 -0
  12. package/dist/mcp-server/policy/feedbackPolicy.js +39 -0
  13. package/dist/mcp-server/policy/installObserver.d.ts +11 -0
  14. package/dist/mcp-server/policy/installObserver.js +35 -0
  15. package/dist/mcp-server/policy/playbookPolicy.d.ts +29 -0
  16. package/dist/mcp-server/policy/playbookPolicy.js +81 -0
  17. package/dist/mcp-server/policy/policyEnforcer.d.ts +57 -0
  18. package/dist/mcp-server/policy/policyEnforcer.js +105 -0
  19. package/dist/mcp-server/policy/serverPolicy.d.ts +39 -0
  20. package/dist/mcp-server/policy/serverPolicy.js +61 -0
  21. package/dist/mcp-server/promptsCache.d.ts +25 -0
  22. package/dist/mcp-server/promptsCache.js +51 -0
  23. package/dist/mcp-server/registry.d.ts +34 -0
  24. package/dist/mcp-server/registry.js +109 -0
  25. package/dist/mcp-server/serversCache.d.ts +53 -0
  26. package/dist/mcp-server/serversCache.js +100 -0
  27. package/dist/mcp-server/staticPrompts.d.ts +6 -0
  28. package/dist/mcp-server/staticPrompts.js +6 -0
  29. package/dist/mcp-server/toolDefinitionsCache.d.ts +33 -0
  30. package/dist/mcp-server/toolDefinitionsCache.js +67 -0
  31. package/dist/mcp-server/toolHandlers/callToolHandler.d.ts +3 -0
  32. package/dist/mcp-server/toolHandlers/callToolHandler.js +79 -0
  33. package/dist/mcp-server/toolHandlers/getServerConfigHandler.d.ts +3 -0
  34. package/dist/mcp-server/toolHandlers/getServerConfigHandler.js +69 -0
  35. package/dist/mcp-server/toolHandlers/initHandler.d.ts +3 -0
  36. package/dist/mcp-server/toolHandlers/initHandler.js +117 -0
  37. package/dist/mcp-server/toolHandlers/installServerHandler.d.ts +3 -0
  38. package/dist/mcp-server/toolHandlers/installServerHandler.js +151 -0
  39. package/dist/mcp-server/toolHandlers/listServersHandler.d.ts +2 -0
  40. package/dist/mcp-server/toolHandlers/listServersHandler.js +81 -0
  41. package/dist/mcp-server/toolHandlers/listToolsHandler.d.ts +3 -0
  42. package/dist/mcp-server/toolHandlers/listToolsHandler.js +112 -0
  43. package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.d.ts +3 -0
  44. package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.js +65 -0
  45. package/dist/mcp-server/toolHandlers/lookupEntityHandler.d.ts +3 -0
  46. package/dist/mcp-server/toolHandlers/lookupEntityHandler.js +112 -0
  47. package/dist/mcp-server/toolHandlers/savePlaybookHandler.d.ts +3 -0
  48. package/dist/mcp-server/toolHandlers/savePlaybookHandler.js +65 -0
  49. package/dist/mcp-server/toolHandlers/searchHandler.d.ts +3 -0
  50. package/dist/mcp-server/toolHandlers/searchHandler.js +114 -0
  51. package/dist/mcp-server/toolHandlers/serverManagerUtils.d.ts +2 -0
  52. package/dist/mcp-server/toolHandlers/serverManagerUtils.js +20 -0
  53. package/dist/mcp-server/toolHandlers/submitFeedbackHandler.d.ts +3 -0
  54. package/dist/mcp-server/toolHandlers/submitFeedbackHandler.js +70 -0
  55. package/dist/mcp-server/toolHandlers/uninstallServerHandler.d.ts +3 -0
  56. package/dist/mcp-server/toolHandlers/uninstallServerHandler.js +83 -0
  57. package/dist/mcp-server/toolplexApi/service.d.ts +32 -0
  58. package/dist/mcp-server/toolplexApi/service.js +222 -0
  59. package/dist/mcp-server/toolplexApi/types.d.ts +124 -0
  60. package/dist/mcp-server/toolplexApi/types.js +1 -0
  61. package/dist/mcp-server/toolplexServer.d.ts +3 -0
  62. package/dist/mcp-server/toolplexServer.js +249 -0
  63. package/dist/mcp-server/tools.d.ts +2 -0
  64. package/dist/mcp-server/tools.js +13 -0
  65. package/dist/mcp-server/utils/initServerManagers.d.ts +6 -0
  66. package/dist/mcp-server/utils/initServerManagers.js +31 -0
  67. package/dist/mcp-server/utils/resultAnnotators.d.ts +23 -0
  68. package/dist/mcp-server/utils/resultAnnotators.js +50 -0
  69. package/dist/mcp-server/utils/runtimeCheck.d.ts +4 -0
  70. package/dist/mcp-server/utils/runtimeCheck.js +30 -0
  71. package/dist/server-manager/index.d.ts +1 -0
  72. package/dist/server-manager/index.js +8 -0
  73. package/dist/server-manager/serverManager.d.ts +37 -0
  74. package/dist/server-manager/serverManager.js +419 -0
  75. package/dist/server-manager/stdioServer.d.ts +9 -0
  76. package/dist/server-manager/stdioServer.js +136 -0
  77. package/dist/server-manager/stdioTransportProtocol.d.ts +31 -0
  78. package/dist/server-manager/stdioTransportProtocol.js +67 -0
  79. package/dist/shared/enhancedPath.d.ts +7 -0
  80. package/dist/shared/enhancedPath.js +52 -0
  81. package/dist/shared/fileLogger.d.ts +13 -0
  82. package/dist/shared/fileLogger.js +66 -0
  83. package/dist/shared/mcpServerTypes.d.ts +398 -0
  84. package/dist/shared/mcpServerTypes.js +148 -0
  85. package/dist/shared/serverManagerTypes.d.ts +179 -0
  86. package/dist/shared/serverManagerTypes.js +73 -0
  87. package/dist/shared/stdioServerManagerClient.d.ts +12 -0
  88. package/dist/shared/stdioServerManagerClient.js +96 -0
  89. package/dist/version.d.ts +1 -0
  90. package/dist/version.js +1 -0
  91. package/package.json +70 -0
@@ -0,0 +1,179 @@
1
+ import { z } from 'zod';
2
+ export declare const InitializeResultSchema: z.ZodObject<{
3
+ succeeded: z.ZodArray<z.ZodObject<{
4
+ server_id: z.ZodString;
5
+ server_name: z.ZodString;
6
+ description: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ server_name: string;
9
+ description: string;
10
+ server_id: string;
11
+ }, {
12
+ server_name: string;
13
+ description: string;
14
+ server_id: string;
15
+ }>, "many">;
16
+ failures: z.ZodRecord<z.ZodString, z.ZodObject<{
17
+ server_id: z.ZodString;
18
+ server_name: z.ZodString;
19
+ error: z.ZodString;
20
+ }, "strip", z.ZodTypeAny, {
21
+ error: string;
22
+ server_name: string;
23
+ server_id: string;
24
+ }, {
25
+ error: string;
26
+ server_name: string;
27
+ server_id: string;
28
+ }>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ succeeded: {
31
+ server_name: string;
32
+ description: string;
33
+ server_id: string;
34
+ }[];
35
+ failures: Record<string, {
36
+ error: string;
37
+ server_name: string;
38
+ server_id: string;
39
+ }>;
40
+ }, {
41
+ succeeded: {
42
+ server_name: string;
43
+ description: string;
44
+ server_id: string;
45
+ }[];
46
+ failures: Record<string, {
47
+ error: string;
48
+ server_name: string;
49
+ server_id: string;
50
+ }>;
51
+ }>;
52
+ export type InitializeResult = z.infer<typeof InitializeResultSchema>;
53
+ export declare const ServerInstallResultSchema: z.ZodObject<{
54
+ server_id: z.ZodString;
55
+ server_name: z.ZodString;
56
+ }, "strip", z.ZodTypeAny, {
57
+ server_name: string;
58
+ server_id: string;
59
+ }, {
60
+ server_name: string;
61
+ server_id: string;
62
+ }>;
63
+ export type ServerInstallResult = z.infer<typeof ServerInstallResultSchema>;
64
+ export declare const ServerUninstallResultSchema: z.ZodObject<{
65
+ server_id: z.ZodString;
66
+ server_name: z.ZodString;
67
+ }, "strip", z.ZodTypeAny, {
68
+ server_name: string;
69
+ server_id: string;
70
+ }, {
71
+ server_name: string;
72
+ server_id: string;
73
+ }>;
74
+ export type ServerUninstallResult = z.infer<typeof ServerUninstallResultSchema>;
75
+ export declare const ListServersResultSchema: z.ZodObject<{
76
+ servers: z.ZodArray<z.ZodObject<{
77
+ server_id: z.ZodString;
78
+ server_name: z.ZodString;
79
+ description: z.ZodString;
80
+ tool_count: z.ZodNumber;
81
+ }, "strip", z.ZodTypeAny, {
82
+ server_name: string;
83
+ description: string;
84
+ server_id: string;
85
+ tool_count: number;
86
+ }, {
87
+ server_name: string;
88
+ description: string;
89
+ server_id: string;
90
+ tool_count: number;
91
+ }>, "many">;
92
+ }, "strip", z.ZodTypeAny, {
93
+ servers: {
94
+ server_name: string;
95
+ description: string;
96
+ server_id: string;
97
+ tool_count: number;
98
+ }[];
99
+ }, {
100
+ servers: {
101
+ server_name: string;
102
+ description: string;
103
+ server_id: string;
104
+ tool_count: number;
105
+ }[];
106
+ }>;
107
+ export type ListServersResult = z.infer<typeof ListServersResultSchema>;
108
+ export declare const ListToolsResultSchema: z.ZodObject<{
109
+ server_id: z.ZodString;
110
+ server_name: z.ZodString;
111
+ tools: z.ZodArray<z.ZodObject<{
112
+ name: z.ZodString;
113
+ description: z.ZodOptional<z.ZodString>;
114
+ inputSchema: z.ZodAny;
115
+ }, "strip", z.ZodTypeAny, {
116
+ name: string;
117
+ description?: string | undefined;
118
+ inputSchema?: any;
119
+ }, {
120
+ name: string;
121
+ description?: string | undefined;
122
+ inputSchema?: any;
123
+ }>, "many">;
124
+ }, "strip", z.ZodTypeAny, {
125
+ server_name: string;
126
+ server_id: string;
127
+ tools: {
128
+ name: string;
129
+ description?: string | undefined;
130
+ inputSchema?: any;
131
+ }[];
132
+ }, {
133
+ server_name: string;
134
+ server_id: string;
135
+ tools: {
136
+ name: string;
137
+ description?: string | undefined;
138
+ inputSchema?: any;
139
+ }[];
140
+ }>;
141
+ export type ListToolsResult = z.infer<typeof ListToolsResultSchema>;
142
+ export declare const ListAllToolsResultSchema: z.ZodObject<{
143
+ tools: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
144
+ name: z.ZodString;
145
+ description: z.ZodOptional<z.ZodString>;
146
+ inputSchema: z.ZodAny;
147
+ }, "strip", z.ZodTypeAny, {
148
+ name: string;
149
+ description?: string | undefined;
150
+ inputSchema?: any;
151
+ }, {
152
+ name: string;
153
+ description?: string | undefined;
154
+ inputSchema?: any;
155
+ }>, "many">>;
156
+ }, "strip", z.ZodTypeAny, {
157
+ tools: Record<string, {
158
+ name: string;
159
+ description?: string | undefined;
160
+ inputSchema?: any;
161
+ }[]>;
162
+ }, {
163
+ tools: Record<string, {
164
+ name: string;
165
+ description?: string | undefined;
166
+ inputSchema?: any;
167
+ }[]>;
168
+ }>;
169
+ export type ListAllToolsResult = z.infer<typeof ListAllToolsResultSchema>;
170
+ export declare const CallToolResultSchema: z.ZodObject<{
171
+ result: z.ZodAny;
172
+ }, "strip", z.ZodTypeAny, {
173
+ result?: any;
174
+ }, {
175
+ result?: any;
176
+ }>;
177
+ export type CallToolResult = z.infer<typeof CallToolResultSchema>;
178
+ export declare const CleanupResultSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
179
+ export type CleanupResult = z.infer<typeof CleanupResultSchema>;
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ // --------------------
3
+ // initialize
4
+ // --------------------
5
+ export const InitializeResultSchema = z.object({
6
+ succeeded: z.array(z.object({
7
+ server_id: z.string(),
8
+ server_name: z.string(),
9
+ description: z.string(),
10
+ })),
11
+ failures: z.record(z.object({
12
+ server_id: z.string(),
13
+ server_name: z.string(),
14
+ error: z.string(),
15
+ })),
16
+ });
17
+ // --------------------
18
+ // Install
19
+ // --------------------
20
+ export const ServerInstallResultSchema = z.object({
21
+ server_id: z.string(),
22
+ server_name: z.string(),
23
+ });
24
+ // --------------------
25
+ // Uninstall
26
+ // --------------------
27
+ export const ServerUninstallResultSchema = z.object({
28
+ server_id: z.string(),
29
+ server_name: z.string(),
30
+ });
31
+ // --------------------
32
+ // list_servers
33
+ // --------------------
34
+ export const ListServersResultSchema = z.object({
35
+ servers: z.array(z.object({
36
+ server_id: z.string(),
37
+ server_name: z.string(),
38
+ description: z.string(),
39
+ tool_count: z.number(),
40
+ })),
41
+ });
42
+ // --------------------
43
+ // list_tools
44
+ // --------------------
45
+ export const ListToolsResultSchema = z.object({
46
+ server_id: z.string(),
47
+ server_name: z.string(),
48
+ tools: z.array(z.object({
49
+ name: z.string(),
50
+ description: z.string().optional(),
51
+ inputSchema: z.any(),
52
+ })),
53
+ });
54
+ // --------------------
55
+ // list_all_tools
56
+ // --------------------
57
+ export const ListAllToolsResultSchema = z.object({
58
+ tools: z.record(z.array(z.object({
59
+ name: z.string(),
60
+ description: z.string().optional(),
61
+ inputSchema: z.any(),
62
+ }))),
63
+ });
64
+ // --------------------
65
+ // call_tool
66
+ // --------------------
67
+ export const CallToolResultSchema = z.object({
68
+ result: z.any(),
69
+ });
70
+ // --------------------
71
+ // cleanup
72
+ // --------------------
73
+ export const CleanupResultSchema = z.object({});
@@ -0,0 +1,12 @@
1
+ export declare class StdioServerManagerClient {
2
+ private serverProcess;
3
+ private messageHandlers;
4
+ private messageBuffer;
5
+ private command;
6
+ private args;
7
+ private env;
8
+ constructor(command: string, args: string[], env?: NodeJS.ProcessEnv);
9
+ start(): Promise<void>;
10
+ sendRequest(method: string, params: any): Promise<any>;
11
+ stop(): Promise<void>;
12
+ }
@@ -0,0 +1,96 @@
1
+ import { spawn } from 'child_process';
2
+ export class StdioServerManagerClient {
3
+ constructor(command, args, env) {
4
+ this.serverProcess = null;
5
+ this.messageHandlers = new Map();
6
+ this.messageBuffer = '';
7
+ this.command = command;
8
+ this.args = args;
9
+ this.env = env ? { ...process.env, ...env } : process.env;
10
+ }
11
+ async start() {
12
+ this.serverProcess = spawn(this.command, this.args, {
13
+ stdio: ['pipe', 'pipe', 'pipe'],
14
+ env: this.env,
15
+ });
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ this.serverProcess.on('error', (err) => {
18
+ process.stderr.write(`Server process error: ${err}\n`);
19
+ });
20
+ if (!this.serverProcess.stderr || !this.serverProcess.stdout || !this.serverProcess.stdin) {
21
+ throw new Error('Server process streams not available');
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ this.serverProcess.stderr.on('data', (data) => {
25
+ process.stderr.write(data);
26
+ });
27
+ this.serverProcess.stdout.on('data', (data) => {
28
+ this.messageBuffer += data.toString();
29
+ const lines = this.messageBuffer.split('\n');
30
+ this.messageBuffer = lines.pop() || '';
31
+ for (const line of lines) {
32
+ if (!line.trim())
33
+ continue;
34
+ try {
35
+ const message = JSON.parse(line.trim());
36
+ const handler = this.messageHandlers.get(message.id);
37
+ if (handler) {
38
+ handler(message);
39
+ this.messageHandlers.delete(message.id);
40
+ }
41
+ }
42
+ catch (e) {
43
+ process.stderr.write(`Raw line: ${line}\n`);
44
+ process.stderr.write(`Parse error: ${e}\n`);
45
+ }
46
+ }
47
+ });
48
+ this.serverProcess.on('exit', () => {
49
+ for (const [, h] of this.messageHandlers)
50
+ h({ __error__: { message: 'Subprocess exited' } });
51
+ this.messageHandlers.clear();
52
+ this.serverProcess = null;
53
+ this.messageBuffer = '';
54
+ });
55
+ }
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ async sendRequest(method, params) {
58
+ return new Promise((resolve, reject) => {
59
+ const id = Date.now();
60
+ if (!this.serverProcess?.stdin) {
61
+ reject(Error('Server process not started'));
62
+ }
63
+ else {
64
+ this.messageHandlers.set(id, (frame) => {
65
+ if (frame.error || frame.__error__) {
66
+ const msg = frame.error?.message ?? frame.__error__?.message ?? 'MCP error';
67
+ reject(new Error(msg));
68
+ }
69
+ else {
70
+ resolve(frame.result);
71
+ }
72
+ });
73
+ this.serverProcess.stdin.write(JSON.stringify({
74
+ jsonrpc: '2.0',
75
+ method,
76
+ params,
77
+ id,
78
+ }) + '\n');
79
+ }
80
+ setTimeout(() => {
81
+ if (this.messageHandlers.has(id)) {
82
+ this.messageHandlers.delete(id);
83
+ reject(new Error(`Request timed out: ${method}`));
84
+ }
85
+ }, 60000);
86
+ });
87
+ }
88
+ async stop() {
89
+ if (this.serverProcess) {
90
+ this.serverProcess.kill();
91
+ this.serverProcess = null;
92
+ this.messageHandlers.clear();
93
+ this.messageBuffer = '';
94
+ }
95
+ }
96
+ }
@@ -0,0 +1 @@
1
+ export declare const version = "1.0.8";
@@ -0,0 +1 @@
1
+ export const version = '1.0.8';
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@toolplex/client",
3
+ "version": "0.1.1",
4
+ "author": "ToolPlex LLC",
5
+ "license": "SEE LICENSE IN LICENSE",
6
+ "description": "The official ToolPlex client for AI agent tool discovery and execution",
7
+ "type": "module",
8
+ "main": "dist/mcp-server/index.js",
9
+ "bin": {
10
+ "toolplex-client": "./dist/mcp-server/index.js"
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "build": "node scripts/generate-version-file.js && rm -rf dist && tsc && node scripts/add-shebang.js",
20
+ "start": "node ./dist/mcp-server/index.js",
21
+ "watch": "tsc --watch",
22
+ "lint": "eslint 'src/**/*.{ts,js}'",
23
+ "lint:fix": "eslint 'src/**/*.{ts,js}' --fix",
24
+ "format": "prettier --write 'src/**/*.{ts,js,json,md}'"
25
+ },
26
+ "keywords": [
27
+ "mcp",
28
+ "model-context-protocol",
29
+ "ai-agent",
30
+ "ai-tools",
31
+ "tool-discovery",
32
+ "agent-automation",
33
+ "claude",
34
+ "anthropic",
35
+ "openai",
36
+ "toolplex",
37
+ "workflow-automation",
38
+ "mcp-server",
39
+ "ai-integration"
40
+ ],
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.7.0",
43
+ "@types/node": "^22.13.11",
44
+ "@types/node-fetch": "^2.6.12",
45
+ "@types/which": "^3.0.4",
46
+ "callsite": "^1.0.0",
47
+ "command-exists": "^1.2.9",
48
+ "dotenv": "^16.5.0",
49
+ "env-paths": "^3.0.0",
50
+ "glob": "^11.0.1",
51
+ "node-fetch": "^3.3.2",
52
+ "typescript": "^5.8.2",
53
+ "which": "^5.0.0",
54
+ "winston-daily-rotate-file": "^5.0.0",
55
+ "zod": "^3.24.2"
56
+ },
57
+ "devDependencies": {
58
+ "@eslint/js": "^9.24.0",
59
+ "@types/callsite": "^1.0.34",
60
+ "@types/command-exists": "^1.2.3",
61
+ "@typescript-eslint/eslint-plugin": "^8.29.0",
62
+ "@typescript-eslint/parser": "^8.29.0",
63
+ "eslint": "^9.24.0",
64
+ "eslint-config-prettier": "^10.1.1",
65
+ "eslint-plugin-prettier": "^5.2.6",
66
+ "prettier": "^3.5.3",
67
+ "ts-node": "^10.9.2",
68
+ "typescript-eslint": "^8.29.0"
69
+ }
70
+ }