agentdog 1.1.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.
- package/LICENSE +22 -0
- package/README.md +244 -0
- package/dist/adapters/adapter-factory.d.ts +21 -0
- package/dist/adapters/adapter-factory.d.ts.map +1 -0
- package/dist/adapters/adapter-factory.js +157 -0
- package/dist/adapters/adapter-factory.js.map +1 -0
- package/dist/adapters/http-sse-adapter.d.ts +49 -0
- package/dist/adapters/http-sse-adapter.d.ts.map +1 -0
- package/dist/adapters/http-sse-adapter.js +485 -0
- package/dist/adapters/http-sse-adapter.js.map +1 -0
- package/dist/adapters/stdio-adapter.d.ts +69 -0
- package/dist/adapters/stdio-adapter.d.ts.map +1 -0
- package/dist/adapters/stdio-adapter.js +664 -0
- package/dist/adapters/stdio-adapter.js.map +1 -0
- package/dist/adapters/streamable-http-adapter.d.ts +38 -0
- package/dist/adapters/streamable-http-adapter.d.ts.map +1 -0
- package/dist/adapters/streamable-http-adapter.js +321 -0
- package/dist/adapters/streamable-http-adapter.js.map +1 -0
- package/dist/ai-gateway/anthropic-errors.d.ts +4 -0
- package/dist/ai-gateway/anthropic-errors.d.ts.map +1 -0
- package/dist/ai-gateway/anthropic-errors.js +17 -0
- package/dist/ai-gateway/anthropic-errors.js.map +1 -0
- package/dist/ai-gateway/auth.d.ts +3 -0
- package/dist/ai-gateway/auth.d.ts.map +1 -0
- package/dist/ai-gateway/auth.js +14 -0
- package/dist/ai-gateway/auth.js.map +1 -0
- package/dist/ai-gateway/auth.test.d.ts +2 -0
- package/dist/ai-gateway/auth.test.d.ts.map +1 -0
- package/dist/ai-gateway/auth.test.js +57 -0
- package/dist/ai-gateway/auth.test.js.map +1 -0
- package/dist/ai-gateway/count-tokens.d.ts +5 -0
- package/dist/ai-gateway/count-tokens.d.ts.map +1 -0
- package/dist/ai-gateway/count-tokens.js +37 -0
- package/dist/ai-gateway/count-tokens.js.map +1 -0
- package/dist/ai-gateway/count-tokens.test.d.ts +2 -0
- package/dist/ai-gateway/count-tokens.test.d.ts.map +1 -0
- package/dist/ai-gateway/count-tokens.test.js +19 -0
- package/dist/ai-gateway/count-tokens.test.js.map +1 -0
- package/dist/ai-gateway/dialects.d.ts +4 -0
- package/dist/ai-gateway/dialects.d.ts.map +1 -0
- package/dist/ai-gateway/dialects.js +15 -0
- package/dist/ai-gateway/dialects.js.map +1 -0
- package/dist/ai-gateway/gateway-server.d.ts +15 -0
- package/dist/ai-gateway/gateway-server.d.ts.map +1 -0
- package/dist/ai-gateway/gateway-server.js +121 -0
- package/dist/ai-gateway/gateway-server.js.map +1 -0
- package/dist/ai-gateway/integration.test.d.ts +2 -0
- package/dist/ai-gateway/integration.test.d.ts.map +1 -0
- package/dist/ai-gateway/integration.test.js +205 -0
- package/dist/ai-gateway/integration.test.js.map +1 -0
- package/dist/ai-gateway/ir/anthropic-in.d.ts +3 -0
- package/dist/ai-gateway/ir/anthropic-in.d.ts.map +1 -0
- package/dist/ai-gateway/ir/anthropic-in.js +121 -0
- package/dist/ai-gateway/ir/anthropic-in.js.map +1 -0
- package/dist/ai-gateway/ir/anthropic-in.test.d.ts +2 -0
- package/dist/ai-gateway/ir/anthropic-in.test.d.ts.map +1 -0
- package/dist/ai-gateway/ir/anthropic-in.test.js +93 -0
- package/dist/ai-gateway/ir/anthropic-in.test.js.map +1 -0
- package/dist/ai-gateway/ir/anthropic-sse.d.ts +22 -0
- package/dist/ai-gateway/ir/anthropic-sse.d.ts.map +1 -0
- package/dist/ai-gateway/ir/anthropic-sse.js +200 -0
- package/dist/ai-gateway/ir/anthropic-sse.js.map +1 -0
- package/dist/ai-gateway/ir/anthropic-sse.test.d.ts +2 -0
- package/dist/ai-gateway/ir/anthropic-sse.test.d.ts.map +1 -0
- package/dist/ai-gateway/ir/anthropic-sse.test.js +101 -0
- package/dist/ai-gateway/ir/anthropic-sse.test.js.map +1 -0
- package/dist/ai-gateway/ir/gemini-out.d.ts +20 -0
- package/dist/ai-gateway/ir/gemini-out.d.ts.map +1 -0
- package/dist/ai-gateway/ir/gemini-out.js +218 -0
- package/dist/ai-gateway/ir/gemini-out.js.map +1 -0
- package/dist/ai-gateway/ir/gemini-out.test.d.ts +2 -0
- package/dist/ai-gateway/ir/gemini-out.test.d.ts.map +1 -0
- package/dist/ai-gateway/ir/gemini-out.test.js +125 -0
- package/dist/ai-gateway/ir/gemini-out.test.js.map +1 -0
- package/dist/ai-gateway/ir/openai-out.d.ts +17 -0
- package/dist/ai-gateway/ir/openai-out.d.ts.map +1 -0
- package/dist/ai-gateway/ir/openai-out.js +226 -0
- package/dist/ai-gateway/ir/openai-out.js.map +1 -0
- package/dist/ai-gateway/ir/openai-out.test.d.ts +2 -0
- package/dist/ai-gateway/ir/openai-out.test.d.ts.map +1 -0
- package/dist/ai-gateway/ir/openai-out.test.js +144 -0
- package/dist/ai-gateway/ir/openai-out.test.js.map +1 -0
- package/dist/ai-gateway/ir/types.d.ts +77 -0
- package/dist/ai-gateway/ir/types.d.ts.map +1 -0
- package/dist/ai-gateway/ir/types.js +4 -0
- package/dist/ai-gateway/ir/types.js.map +1 -0
- package/dist/ai-gateway/ir-channel.d.ts +15 -0
- package/dist/ai-gateway/ir-channel.d.ts.map +1 -0
- package/dist/ai-gateway/ir-channel.js +120 -0
- package/dist/ai-gateway/ir-channel.js.map +1 -0
- package/dist/ai-gateway/model-router.d.ts +11 -0
- package/dist/ai-gateway/model-router.d.ts.map +1 -0
- package/dist/ai-gateway/model-router.js +27 -0
- package/dist/ai-gateway/model-router.js.map +1 -0
- package/dist/ai-gateway/model-router.test.d.ts +2 -0
- package/dist/ai-gateway/model-router.test.d.ts.map +1 -0
- package/dist/ai-gateway/model-router.test.js +43 -0
- package/dist/ai-gateway/model-router.test.js.map +1 -0
- package/dist/ai-gateway/passthrough.d.ts +9 -0
- package/dist/ai-gateway/passthrough.d.ts.map +1 -0
- package/dist/ai-gateway/passthrough.js +81 -0
- package/dist/ai-gateway/passthrough.js.map +1 -0
- package/dist/ai-gateway/passthrough.test.d.ts +2 -0
- package/dist/ai-gateway/passthrough.test.d.ts.map +1 -0
- package/dist/ai-gateway/passthrough.test.js +108 -0
- package/dist/ai-gateway/passthrough.test.js.map +1 -0
- package/dist/ai-gateway/upstream/model-lister.d.ts +13 -0
- package/dist/ai-gateway/upstream/model-lister.d.ts.map +1 -0
- package/dist/ai-gateway/upstream/model-lister.js +61 -0
- package/dist/ai-gateway/upstream/model-lister.js.map +1 -0
- package/dist/ai-gateway/upstream/provider-client.d.ts +20 -0
- package/dist/ai-gateway/upstream/provider-client.d.ts.map +1 -0
- package/dist/ai-gateway/upstream/provider-client.js +76 -0
- package/dist/ai-gateway/upstream/provider-client.js.map +1 -0
- package/dist/ai-gateway/upstream/provider-client.test.d.ts +2 -0
- package/dist/ai-gateway/upstream/provider-client.test.d.ts.map +1 -0
- package/dist/ai-gateway/upstream/provider-client.test.js +69 -0
- package/dist/ai-gateway/upstream/provider-client.test.js.map +1 -0
- package/dist/cli/cli-main.d.ts +7 -0
- package/dist/cli/cli-main.d.ts.map +1 -0
- package/dist/cli/cli-main.js +116 -0
- package/dist/cli/cli-main.js.map +1 -0
- package/dist/cli/cli-router.d.ts +20 -0
- package/dist/cli/cli-router.d.ts.map +1 -0
- package/dist/cli/cli-router.js +271 -0
- package/dist/cli/cli-router.js.map +1 -0
- package/dist/cli/cli-utils.d.ts +30 -0
- package/dist/cli/cli-utils.d.ts.map +1 -0
- package/dist/cli/cli-utils.js +219 -0
- package/dist/cli/cli-utils.js.map +1 -0
- package/dist/cli/commands/audit-commands.d.ts +30 -0
- package/dist/cli/commands/audit-commands.d.ts.map +1 -0
- package/dist/cli/commands/audit-commands.js +417 -0
- package/dist/cli/commands/audit-commands.js.map +1 -0
- package/dist/cli/commands/autostart-command.d.ts +21 -0
- package/dist/cli/commands/autostart-command.d.ts.map +1 -0
- package/dist/cli/commands/autostart-command.js +243 -0
- package/dist/cli/commands/autostart-command.js.map +1 -0
- package/dist/cli/commands/autostart-command.test.d.ts +2 -0
- package/dist/cli/commands/autostart-command.test.d.ts.map +1 -0
- package/dist/cli/commands/autostart-command.test.js +35 -0
- package/dist/cli/commands/autostart-command.test.js.map +1 -0
- package/dist/cli/commands/config-commands.d.ts +30 -0
- package/dist/cli/commands/config-commands.d.ts.map +1 -0
- package/dist/cli/commands/config-commands.js +1013 -0
- package/dist/cli/commands/config-commands.js.map +1 -0
- package/dist/cli/commands/daemon-commands.d.ts +76 -0
- package/dist/cli/commands/daemon-commands.d.ts.map +1 -0
- package/dist/cli/commands/daemon-commands.js +451 -0
- package/dist/cli/commands/daemon-commands.js.map +1 -0
- package/dist/cli/commands/detect-commands.d.ts +17 -0
- package/dist/cli/commands/detect-commands.d.ts.map +1 -0
- package/dist/cli/commands/detect-commands.js +293 -0
- package/dist/cli/commands/detect-commands.js.map +1 -0
- package/dist/cli/commands/diagnose-commands.d.ts +19 -0
- package/dist/cli/commands/diagnose-commands.d.ts.map +1 -0
- package/dist/cli/commands/diagnose-commands.js +326 -0
- package/dist/cli/commands/diagnose-commands.js.map +1 -0
- package/dist/cli/commands/optimize-commands.d.ts +14 -0
- package/dist/cli/commands/optimize-commands.d.ts.map +1 -0
- package/dist/cli/commands/optimize-commands.js +189 -0
- package/dist/cli/commands/optimize-commands.js.map +1 -0
- package/dist/cli/commands/proxy-command.d.ts +27 -0
- package/dist/cli/commands/proxy-command.d.ts.map +1 -0
- package/dist/cli/commands/proxy-command.js +212 -0
- package/dist/cli/commands/proxy-command.js.map +1 -0
- package/dist/cli/commands/start-command.d.ts +22 -0
- package/dist/cli/commands/start-command.d.ts.map +1 -0
- package/dist/cli/commands/start-command.js +275 -0
- package/dist/cli/commands/start-command.js.map +1 -0
- package/dist/config/config-manager.d.ts +125 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +569 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/config-manager.test.d.ts +2 -0
- package/dist/config/config-manager.test.d.ts.map +1 -0
- package/dist/config/config-manager.test.js +209 -0
- package/dist/config/config-manager.test.js.map +1 -0
- package/dist/core/auto-config-generator.d.ts +55 -0
- package/dist/core/auto-config-generator.d.ts.map +1 -0
- package/dist/core/auto-config-generator.js +278 -0
- package/dist/core/auto-config-generator.js.map +1 -0
- package/dist/core/mcpdog-server.d.ts +49 -0
- package/dist/core/mcpdog-server.d.ts.map +1 -0
- package/dist/core/mcpdog-server.js +552 -0
- package/dist/core/mcpdog-server.js.map +1 -0
- package/dist/core/protocol-detector.d.ts +56 -0
- package/dist/core/protocol-detector.d.ts.map +1 -0
- package/dist/core/protocol-detector.js +365 -0
- package/dist/core/protocol-detector.js.map +1 -0
- package/dist/daemon/daemon-client.d.ts +34 -0
- package/dist/daemon/daemon-client.d.ts.map +1 -0
- package/dist/daemon/daemon-client.js +130 -0
- package/dist/daemon/daemon-client.js.map +1 -0
- package/dist/daemon/daemon-client.test.d.ts +2 -0
- package/dist/daemon/daemon-client.test.d.ts.map +1 -0
- package/dist/daemon/daemon-client.test.js +77 -0
- package/dist/daemon/daemon-client.test.js.map +1 -0
- package/dist/daemon/daemon-info.d.ts +7 -0
- package/dist/daemon/daemon-info.d.ts.map +1 -0
- package/dist/daemon/daemon-info.js +34 -0
- package/dist/daemon/daemon-info.js.map +1 -0
- package/dist/daemon/daemon-info.test.d.ts +2 -0
- package/dist/daemon/daemon-info.test.d.ts.map +1 -0
- package/dist/daemon/daemon-info.test.js +57 -0
- package/dist/daemon/daemon-info.test.js.map +1 -0
- package/dist/daemon/daemon-web-server.ai.test.d.ts +2 -0
- package/dist/daemon/daemon-web-server.ai.test.d.ts.map +1 -0
- package/dist/daemon/daemon-web-server.ai.test.js +119 -0
- package/dist/daemon/daemon-web-server.ai.test.js.map +1 -0
- package/dist/daemon/daemon-web-server.d.ts +59 -0
- package/dist/daemon/daemon-web-server.d.ts.map +1 -0
- package/dist/daemon/daemon-web-server.js +1236 -0
- package/dist/daemon/daemon-web-server.js.map +1 -0
- package/dist/daemon/daemon-web-server.test.d.ts +2 -0
- package/dist/daemon/daemon-web-server.test.d.ts.map +1 -0
- package/dist/daemon/daemon-web-server.test.js +93 -0
- package/dist/daemon/daemon-web-server.test.js.map +1 -0
- package/dist/daemon/mcpdog-daemon.d.ts +42 -0
- package/dist/daemon/mcpdog-daemon.d.ts.map +1 -0
- package/dist/daemon/mcpdog-daemon.js +302 -0
- package/dist/daemon/mcpdog-daemon.js.map +1 -0
- package/dist/daemon/stdio-proxy.d.ts +17 -0
- package/dist/daemon/stdio-proxy.d.ts.map +1 -0
- package/dist/daemon/stdio-proxy.js +143 -0
- package/dist/daemon/stdio-proxy.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +198 -0
- package/dist/index.js.map +1 -0
- package/dist/intent-analyzer.d.ts +27 -0
- package/dist/intent-analyzer.d.ts.map +1 -0
- package/dist/intent-analyzer.js +140 -0
- package/dist/intent-analyzer.js.map +1 -0
- package/dist/logging/server-log-manager.d.ts +75 -0
- package/dist/logging/server-log-manager.d.ts.map +1 -0
- package/dist/logging/server-log-manager.js +185 -0
- package/dist/logging/server-log-manager.js.map +1 -0
- package/dist/mcp-registry.d.ts +35 -0
- package/dist/mcp-registry.d.ts.map +1 -0
- package/dist/mcp-registry.js +166 -0
- package/dist/mcp-registry.js.map +1 -0
- package/dist/middleware/auth.d.ts +5 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +81 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/mock-tool-database.d.ts +41 -0
- package/dist/mock-tool-database.d.ts.map +1 -0
- package/dist/mock-tool-database.js +461 -0
- package/dist/mock-tool-database.js.map +1 -0
- package/dist/proxy-server-manager.d.ts +11 -0
- package/dist/proxy-server-manager.d.ts.map +1 -0
- package/dist/proxy-server-manager.js +144 -0
- package/dist/proxy-server-manager.js.map +1 -0
- package/dist/router/tool-router.d.ts +61 -0
- package/dist/router/tool-router.d.ts.map +1 -0
- package/dist/router/tool-router.js +539 -0
- package/dist/router/tool-router.js.map +1 -0
- package/dist/router/tool-router.test.d.ts +2 -0
- package/dist/router/tool-router.test.d.ts.map +1 -0
- package/dist/router/tool-router.test.js +113 -0
- package/dist/router/tool-router.test.js.map +1 -0
- package/dist/streamable-http-server.d.ts +27 -0
- package/dist/streamable-http-server.d.ts.map +1 -0
- package/dist/streamable-http-server.js +302 -0
- package/dist/streamable-http-server.js.map +1 -0
- package/dist/tool-finder.d.ts +21 -0
- package/dist/tool-finder.d.ts.map +1 -0
- package/dist/tool-finder.js +86 -0
- package/dist/tool-finder.js.map +1 -0
- package/dist/tool-recommender.d.ts +23 -0
- package/dist/tool-recommender.d.ts.map +1 -0
- package/dist/tool-recommender.js +200 -0
- package/dist/tool-recommender.js.map +1 -0
- package/dist/types/index.d.ts +145 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/server-name-validator.d.ts +47 -0
- package/dist/utils/server-name-validator.d.ts.map +1 -0
- package/dist/utils/server-name-validator.js +156 -0
- package/dist/utils/server-name-validator.js.map +1 -0
- package/dist/web/web-server.d.ts +44 -0
- package/dist/web/web-server.d.ts.map +1 -0
- package/dist/web/web-server.js +500 -0
- package/dist/web/web-server.js.map +1 -0
- package/package.json +68 -0
- package/web/dist/assets/index-DMVhVtNU.css +1 -0
- package/web/dist/assets/index-VMXIgcOH.js +92 -0
- package/web/dist/assets/index-VMXIgcOH.js.map +1 -0
- package/web/dist/index.html +14 -0
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { ToolRouter } from '../router/tool-router.js';
|
|
3
|
+
import { AdapterFactory } from '../adapters/adapter-factory.js';
|
|
4
|
+
export class MCPDogServer extends EventEmitter {
|
|
5
|
+
configManager;
|
|
6
|
+
toolRouter;
|
|
7
|
+
clientCapabilities;
|
|
8
|
+
isInitialized = false;
|
|
9
|
+
requestId = 1;
|
|
10
|
+
isStarted = false; // Prevent duplicate starts
|
|
11
|
+
constructor(configManager) {
|
|
12
|
+
super();
|
|
13
|
+
console.error(`[SERVER] Creating MCPDogServer instance (PID: ${process.pid})`);
|
|
14
|
+
this.configManager = configManager;
|
|
15
|
+
this.toolRouter = new ToolRouter(this.configManager);
|
|
16
|
+
this.setupEventHandlers();
|
|
17
|
+
}
|
|
18
|
+
setupEventHandlers() {
|
|
19
|
+
// Config change handling
|
|
20
|
+
this.configManager.on('config-updated', (data) => {
|
|
21
|
+
const changeType = data.context?.changeType;
|
|
22
|
+
const serverName = data.context?.serverName;
|
|
23
|
+
// If it's a server or tool related toggle, skip full reinitialization
|
|
24
|
+
if (changeType === 'server-toggle') {
|
|
25
|
+
console.log(`[SERVER] Skipping adapter reinitialization for server toggle: ${serverName}`);
|
|
26
|
+
}
|
|
27
|
+
else if (changeType === 'tool-toggle' || changeType === 'tool-config-update') {
|
|
28
|
+
console.log(`[SERVER] Skipping adapter reinitialization for tool update on: ${serverName}`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.handleConfigUpdate().catch((error) => {
|
|
32
|
+
console.error('Error handling config update:', error);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
// Listen for single server toggle status changes
|
|
37
|
+
this.configManager.on('server-toggled', async ({ name, enabled }) => {
|
|
38
|
+
console.error(`[SERVER] Server ${name} toggled to ${enabled}`);
|
|
39
|
+
const serverConfig = this.configManager.getServerConfig(name);
|
|
40
|
+
if (!serverConfig) {
|
|
41
|
+
console.error(`[SERVER] Toggled server ${name} not found in config.`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (enabled) {
|
|
45
|
+
// Enable server: create and add adapter if not exists; if exists but not connected, try to connect
|
|
46
|
+
let adapter = this.toolRouter.getAdapter(name);
|
|
47
|
+
if (!adapter) {
|
|
48
|
+
try {
|
|
49
|
+
adapter = AdapterFactory.createAdapter(name, serverConfig);
|
|
50
|
+
this.setupAdapterEvents(adapter);
|
|
51
|
+
this.toolRouter.addAdapter(adapter);
|
|
52
|
+
console.error(`[SERVER] Created and added adapter for ${name}`);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(`[SERVER] Failed to create adapter for ${name}:`, error);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (adapter && !adapter.isConnected) {
|
|
60
|
+
try {
|
|
61
|
+
await adapter.connect();
|
|
62
|
+
console.error(`[SERVER] Connected adapter for ${name}`);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error(`[SERVER] Failed to connect adapter for ${name}:`, error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// Disable server: remove adapter
|
|
71
|
+
this.toolRouter.removeAdapter(name);
|
|
72
|
+
console.error(`[SERVER] Removed adapter for ${name}`);
|
|
73
|
+
}
|
|
74
|
+
this.notifyToolsChanged().catch(error => {
|
|
75
|
+
console.error('Error notifying tools changed after toggle:', error);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
// Tool router event handling
|
|
79
|
+
this.toolRouter.on('routes-updated', ({ serverName, toolCount }) => {
|
|
80
|
+
console.error(`Tools updated for ${serverName}: ${toolCount} tools`);
|
|
81
|
+
this.notifyToolsChanged().catch(error => {
|
|
82
|
+
console.error('Error notifying tools changed:', error);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
this.toolRouter.on('tool-called', ({ serverName, toolName, args, result, duration }) => {
|
|
86
|
+
console.error(`Tool executed: ${serverName}.${toolName} (${duration}ms)`);
|
|
87
|
+
});
|
|
88
|
+
this.toolRouter.on('error', ({ error, context }) => {
|
|
89
|
+
console.error(`Router error [${context}]:`, error);
|
|
90
|
+
this.emit('error', { error, context });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async start() {
|
|
94
|
+
if (this.isStarted) {
|
|
95
|
+
console.error(`[SERVER] MCPDog Server already started, ignoring duplicate start() call`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
console.error(`[SERVER] Starting MCPDog Server... (PID: ${process.pid})`);
|
|
100
|
+
this.isStarted = true;
|
|
101
|
+
// Load config
|
|
102
|
+
await this.configManager.loadConfig();
|
|
103
|
+
console.error(`[SERVER] Config loaded in MCPDogServer: ${JSON.stringify(this.configManager.getConfig().servers)}`);
|
|
104
|
+
// Start watching config file changes
|
|
105
|
+
this.configManager.startWatching();
|
|
106
|
+
// Initialize adapters
|
|
107
|
+
await this.initializeAdapters();
|
|
108
|
+
console.error(`[SERVER] MCPDog Server started successfully (PID: ${process.pid})`);
|
|
109
|
+
this.emit('started');
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
this.isStarted = false; // Reset status, allow retry
|
|
113
|
+
console.error('Failed to start MCPDog Server:', error);
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async stop() {
|
|
118
|
+
try {
|
|
119
|
+
console.error('Stopping MCPDog Server...');
|
|
120
|
+
// Stop config watching
|
|
121
|
+
this.configManager.stopWatching();
|
|
122
|
+
// Disconnect all adapters
|
|
123
|
+
await this.toolRouter.disconnectAll();
|
|
124
|
+
// Cleanup
|
|
125
|
+
this.isInitialized = false;
|
|
126
|
+
this.clientCapabilities = undefined;
|
|
127
|
+
console.error('MCPDog Server stopped');
|
|
128
|
+
this.emit('stopped');
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error('Error stopping MCPDog Server:', error);
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async initializeAdapters() {
|
|
136
|
+
const config = this.configManager.getConfig();
|
|
137
|
+
const enabledServers = this.configManager.getEnabledServers();
|
|
138
|
+
console.error(`[SERVER] Initializing ${Object.keys(enabledServers).length} enabled servers from config: ${JSON.stringify(enabledServers)}`);
|
|
139
|
+
// First create all adapters (fast operation)
|
|
140
|
+
for (const [serverName, serverConfig] of Object.entries(enabledServers)) {
|
|
141
|
+
try {
|
|
142
|
+
await this.createAndAddAdapter(serverName, serverConfig);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error(`Failed to initialize adapter ${serverName}:`, error);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Asynchronously connect all adapters, do not wait for completion
|
|
149
|
+
console.error(`[SERVER] Starting asynchronous connection of ${Object.keys(enabledServers).length} servers...`);
|
|
150
|
+
this.connectAdaptersInBackground();
|
|
151
|
+
}
|
|
152
|
+
connectAdaptersInBackground() {
|
|
153
|
+
// Do not use await, let connections happen in the background
|
|
154
|
+
this.toolRouter.connectAll({
|
|
155
|
+
timeout: 5000, // 5 second timeout to avoid long waits for problematic servers
|
|
156
|
+
maxConcurrent: 2 // Limit concurrency to avoid excessive system resource usage
|
|
157
|
+
}).then(() => {
|
|
158
|
+
console.error(`[SERVER] ✅ Background server connection process completed`);
|
|
159
|
+
}).catch(error => {
|
|
160
|
+
console.error(`[SERVER] ❌ Error during background server connection:`, error);
|
|
161
|
+
// Do not throw error, let server continue running
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async createAndAddAdapter(serverName, config) {
|
|
165
|
+
try {
|
|
166
|
+
// Use adapter factory to create adapter
|
|
167
|
+
const adapter = AdapterFactory.createAdapter(serverName, config);
|
|
168
|
+
// Listen for adapter events
|
|
169
|
+
this.setupAdapterEvents(adapter);
|
|
170
|
+
this.toolRouter.addAdapter(adapter);
|
|
171
|
+
console.error(`Added adapter: ${serverName} (${config.transport})`);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
console.error(`Failed to create adapter ${serverName}:`, error.message);
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
setupAdapterEvents(adapter) {
|
|
179
|
+
// Listen for connection events
|
|
180
|
+
adapter.on('connected', (data) => {
|
|
181
|
+
console.error(`Connected to ${adapter.name}`);
|
|
182
|
+
const eventData = {
|
|
183
|
+
serverName: adapter.name,
|
|
184
|
+
timestamp: new Date().toISOString(),
|
|
185
|
+
...data
|
|
186
|
+
};
|
|
187
|
+
console.error(`[SERVER] Emitting server-connected event:`, eventData);
|
|
188
|
+
this.emit('server-connected', eventData);
|
|
189
|
+
});
|
|
190
|
+
// Listen for disconnection events
|
|
191
|
+
adapter.on('disconnected', (data) => {
|
|
192
|
+
console.error(`Disconnected from ${adapter.name}`);
|
|
193
|
+
this.emit('server-disconnected', {
|
|
194
|
+
serverName: adapter.name,
|
|
195
|
+
timestamp: new Date().toISOString(),
|
|
196
|
+
...data
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
// Listen for error events
|
|
200
|
+
adapter.on('error', (error) => {
|
|
201
|
+
console.error(`Adapter error for ${adapter.name}:`, error);
|
|
202
|
+
this.emit('server-error', {
|
|
203
|
+
serverName: adapter.name,
|
|
204
|
+
error: error.message,
|
|
205
|
+
timestamp: new Date().toISOString()
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
// Listen for log events
|
|
209
|
+
adapter.on('log', (log) => {
|
|
210
|
+
this.emit('server-log', {
|
|
211
|
+
serverName: adapter.name,
|
|
212
|
+
...log,
|
|
213
|
+
timestamp: new Date().toISOString()
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
async reinitializeAdapters() {
|
|
218
|
+
// Stop all existing adapters
|
|
219
|
+
const existingAdapters = this.toolRouter.getAllAdapters();
|
|
220
|
+
for (const adapter of existingAdapters) {
|
|
221
|
+
this.toolRouter.removeAdapter(adapter.name);
|
|
222
|
+
}
|
|
223
|
+
// Reinitialize adapters
|
|
224
|
+
const enabledServers = this.configManager.getEnabledServers();
|
|
225
|
+
for (const [serverName, serverConfig] of Object.entries(enabledServers)) {
|
|
226
|
+
try {
|
|
227
|
+
const adapter = AdapterFactory.createAdapter(serverName, serverConfig);
|
|
228
|
+
this.setupAdapterEvents(adapter);
|
|
229
|
+
this.toolRouter.addAdapter(adapter);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
console.error(`Failed to create adapter ${serverName} during reinitialization:`, error);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
this.connectAdaptersInBackground();
|
|
236
|
+
}
|
|
237
|
+
async handleConfigUpdate() {
|
|
238
|
+
// Overall config file update, reinitialize all adapters
|
|
239
|
+
await this.reinitializeAdapters();
|
|
240
|
+
}
|
|
241
|
+
// Config management proxy methods
|
|
242
|
+
async addServer(name, config) {
|
|
243
|
+
const fullConfig = { ...config, name };
|
|
244
|
+
await this.configManager.addServer(name, fullConfig);
|
|
245
|
+
const serverConfig = this.configManager.getServerConfig(name);
|
|
246
|
+
if (serverConfig.enabled) {
|
|
247
|
+
try {
|
|
248
|
+
const adapter = AdapterFactory.createAdapter(name, serverConfig);
|
|
249
|
+
this.setupAdapterEvents(adapter);
|
|
250
|
+
this.toolRouter.addAdapter(adapter);
|
|
251
|
+
await adapter.connect();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
console.error(`Failed to add and connect server ${name}:`, error);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
this.notifyToolsChanged().catch((error) => {
|
|
258
|
+
console.error('Error notifying tools changed after addServer:', error);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
async removeServer(name) {
|
|
262
|
+
this.toolRouter.removeAdapter(name);
|
|
263
|
+
await this.configManager.removeServer(name);
|
|
264
|
+
this.notifyToolsChanged().catch((error) => {
|
|
265
|
+
console.error('Error notifying tools changed after removeServer:', error);
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
async toggleServer(name, enabled) {
|
|
269
|
+
const serverConfig = this.configManager.getServerConfig(name);
|
|
270
|
+
if (!serverConfig) {
|
|
271
|
+
throw new Error(`Server ${name} not found`);
|
|
272
|
+
}
|
|
273
|
+
const newEnabled = enabled !== undefined ? enabled : !serverConfig.enabled;
|
|
274
|
+
await this.configManager.toggleServer(name, newEnabled);
|
|
275
|
+
// Status change is handled by configManager's server-toggled event, no extra logic needed here
|
|
276
|
+
}
|
|
277
|
+
async updateServerTools(serverName) {
|
|
278
|
+
console.log(`[SERVER] Updating tools for server: ${serverName}`);
|
|
279
|
+
await this.toolRouter.updateServerTools(serverName);
|
|
280
|
+
this.notifyToolsChanged().catch(error => {
|
|
281
|
+
console.error(`Error notifying tools changed after tool update for ${serverName}:`, error);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
// MCP protocol handling methods
|
|
285
|
+
async handleRequest(request, clientId) {
|
|
286
|
+
try {
|
|
287
|
+
// For initialize requests, allow multiple clients to initialize, but do not re-initialize the server
|
|
288
|
+
if (request.method === 'initialize') {
|
|
289
|
+
return await this.handleInitialize(request);
|
|
290
|
+
}
|
|
291
|
+
console.error(`Handling request: ${request.method} (id: ${request.id})`);
|
|
292
|
+
switch (request.method) {
|
|
293
|
+
case 'initialize':
|
|
294
|
+
// This branch will never be executed, as it's handled above
|
|
295
|
+
return await this.handleInitialize(request);
|
|
296
|
+
case 'tools/list':
|
|
297
|
+
return await this.handleToolsList(request);
|
|
298
|
+
case 'tools/call':
|
|
299
|
+
return await this.handleToolCall(request);
|
|
300
|
+
case 'resources/list':
|
|
301
|
+
return await this.handleResourcesList(request);
|
|
302
|
+
case 'prompts/list':
|
|
303
|
+
return await this.handlePromptsList(request);
|
|
304
|
+
default:
|
|
305
|
+
return {
|
|
306
|
+
jsonrpc: '2.0',
|
|
307
|
+
id: request.id,
|
|
308
|
+
error: {
|
|
309
|
+
code: -32601,
|
|
310
|
+
message: `Method not found: ${request.method}`
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
console.error(`Error handling request ${request.method}:`, error);
|
|
317
|
+
return {
|
|
318
|
+
jsonrpc: '2.0',
|
|
319
|
+
id: request.id,
|
|
320
|
+
error: {
|
|
321
|
+
code: -32000,
|
|
322
|
+
message: `Internal error: ${error.message}`
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async handleInitialize(request) {
|
|
328
|
+
const params = request.params || {};
|
|
329
|
+
// Record current client capabilities, but do not overwrite previous ones (supports multiple clients)
|
|
330
|
+
const clientCapabilities = {
|
|
331
|
+
supportsNotifications: params.capabilities?.notifications !== undefined,
|
|
332
|
+
clientName: params.clientInfo?.name || 'unknown',
|
|
333
|
+
clientVersion: params.clientInfo?.version || 'unknown'
|
|
334
|
+
};
|
|
335
|
+
console.error(`Client connected: ${clientCapabilities.clientName} v${clientCapabilities.clientVersion}`);
|
|
336
|
+
console.error(`Notifications supported: ${clientCapabilities.supportsNotifications}`);
|
|
337
|
+
// If it's the first client, set primary capabilities; otherwise retain existing capabilities
|
|
338
|
+
if (!this.isInitialized) {
|
|
339
|
+
this.clientCapabilities = clientCapabilities;
|
|
340
|
+
this.isInitialized = true;
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
jsonrpc: '2.0',
|
|
344
|
+
id: request.id,
|
|
345
|
+
result: {
|
|
346
|
+
protocolVersion: '2024-11-05',
|
|
347
|
+
capabilities: {
|
|
348
|
+
tools: {},
|
|
349
|
+
logging: {},
|
|
350
|
+
notifications: {
|
|
351
|
+
tools: {
|
|
352
|
+
listChanged: true
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
serverInfo: {
|
|
357
|
+
name: 'mcpdog',
|
|
358
|
+
version: '2.0.0'
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
async handleToolsList(request) {
|
|
364
|
+
if (!this.isInitialized) {
|
|
365
|
+
return {
|
|
366
|
+
jsonrpc: '2.0',
|
|
367
|
+
id: request.id,
|
|
368
|
+
error: {
|
|
369
|
+
code: -32002,
|
|
370
|
+
message: 'Server not initialized'
|
|
371
|
+
}
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
// Smart waiting mechanism: give slower servers more connection time
|
|
375
|
+
const waitTime = this.calculateOptimalWaitTime();
|
|
376
|
+
if (waitTime > 0) {
|
|
377
|
+
console.error(`⏳ Waiting ${waitTime}ms for all servers to connect...`);
|
|
378
|
+
// For health checks, use a shorter wait time
|
|
379
|
+
const maxWaitTime = Math.min(waitTime, 3000); // Wait at most 3 seconds
|
|
380
|
+
await new Promise(resolve => setTimeout(resolve, maxWaitTime));
|
|
381
|
+
}
|
|
382
|
+
// Try multiple times to get a stable tool list
|
|
383
|
+
let tools = await this.toolRouter.getAllTools(true); // Force refresh
|
|
384
|
+
let attempts = 1;
|
|
385
|
+
const maxAttempts = 3;
|
|
386
|
+
// Calculate expected minimum number of tools based on configured servers (at least 5 tools per server)
|
|
387
|
+
const enabledServers = Object.keys(this.configManager.getEnabledServers()).length;
|
|
388
|
+
const expectedMinTools = Math.max(5, enabledServers * 5);
|
|
389
|
+
// If tool count is too low, some servers might not be fully connected, try again
|
|
390
|
+
while (attempts < maxAttempts && tools.length < expectedMinTools && enabledServers > 1) {
|
|
391
|
+
console.error(`🔄 Tools count low (${tools.length}), retrying... (attempt ${attempts + 1})`);
|
|
392
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
393
|
+
tools = await this.toolRouter.getAllTools(true);
|
|
394
|
+
attempts++;
|
|
395
|
+
}
|
|
396
|
+
// Log current tool distribution
|
|
397
|
+
const toolsByServer = this.toolRouter.getToolDistribution();
|
|
398
|
+
console.error(`📊 Current tool distribution:`, toolsByServer);
|
|
399
|
+
console.error(`🔢 Total tools returned: ${tools.length}`);
|
|
400
|
+
return {
|
|
401
|
+
jsonrpc: '2.0',
|
|
402
|
+
id: request.id,
|
|
403
|
+
result: {
|
|
404
|
+
tools
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
calculateOptimalWaitTime() {
|
|
409
|
+
const connectedServers = this.toolRouter.getConnectedServerCount();
|
|
410
|
+
const totalServers = this.toolRouter.getTotalServerCount();
|
|
411
|
+
// If all servers are connected, no need to wait
|
|
412
|
+
if (connectedServers >= totalServers) {
|
|
413
|
+
return 0;
|
|
414
|
+
}
|
|
415
|
+
// For health checks, prioritize shorter wait times
|
|
416
|
+
// If most servers are connected (>=50%), respond quickly
|
|
417
|
+
const connectionRatio = connectedServers / totalServers;
|
|
418
|
+
if (connectionRatio >= 0.5) {
|
|
419
|
+
return 1000; // 1 second quick response
|
|
420
|
+
}
|
|
421
|
+
// Even if few servers are connected, prioritize quick response over waiting for all servers
|
|
422
|
+
if (connectedServers > 0) {
|
|
423
|
+
return 2000; // 2 second medium response time
|
|
424
|
+
}
|
|
425
|
+
// Only use longer wait time if no servers are connected
|
|
426
|
+
return Math.min(3000, totalServers * 800); // At most 3 seconds, 800ms per server
|
|
427
|
+
}
|
|
428
|
+
async handleToolCall(request) {
|
|
429
|
+
if (!this.isInitialized) {
|
|
430
|
+
return {
|
|
431
|
+
jsonrpc: '2.0',
|
|
432
|
+
id: request.id,
|
|
433
|
+
error: {
|
|
434
|
+
code: -32002,
|
|
435
|
+
message: 'Server not initialized'
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
const params = request.params || {};
|
|
440
|
+
const toolName = params.name;
|
|
441
|
+
const args = params.arguments || {};
|
|
442
|
+
if (!toolName) {
|
|
443
|
+
return {
|
|
444
|
+
jsonrpc: '2.0',
|
|
445
|
+
id: request.id,
|
|
446
|
+
error: {
|
|
447
|
+
code: -32602,
|
|
448
|
+
message: 'Tool name is required'
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
const response = await this.toolRouter.callTool(toolName, args);
|
|
453
|
+
// Use original request ID
|
|
454
|
+
return {
|
|
455
|
+
...response,
|
|
456
|
+
id: request.id
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
async notifyToolsChanged() {
|
|
460
|
+
if (!this.isInitialized || !this.clientCapabilities?.supportsNotifications) {
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
463
|
+
const notification = {
|
|
464
|
+
jsonrpc: '2.0',
|
|
465
|
+
method: 'notifications/tools/list_changed'
|
|
466
|
+
};
|
|
467
|
+
this.emit('notification', notification);
|
|
468
|
+
}
|
|
469
|
+
// Status query method
|
|
470
|
+
getStatus() {
|
|
471
|
+
return {
|
|
472
|
+
initialized: this.isInitialized,
|
|
473
|
+
client: this.clientCapabilities,
|
|
474
|
+
config: {
|
|
475
|
+
servers: Object.keys(this.configManager.getConfig().servers).length,
|
|
476
|
+
enabled: Object.keys(this.configManager.getEnabledServers()).length
|
|
477
|
+
},
|
|
478
|
+
routes: this.toolRouter.getRouteStatus()
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
getConfigManager() {
|
|
482
|
+
return this.configManager;
|
|
483
|
+
}
|
|
484
|
+
getToolRouter() {
|
|
485
|
+
return this.toolRouter;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Public method to handle config updates
|
|
489
|
+
* This is called by the daemon when config is reloaded
|
|
490
|
+
*/
|
|
491
|
+
async handleConfigReload() {
|
|
492
|
+
await this.handleConfigUpdate();
|
|
493
|
+
}
|
|
494
|
+
async handleResourcesList(request) {
|
|
495
|
+
// MCPDog currently does not provide resources, return empty list for Cursor compatibility
|
|
496
|
+
return {
|
|
497
|
+
jsonrpc: '2.0',
|
|
498
|
+
id: request.id,
|
|
499
|
+
result: {
|
|
500
|
+
resources: []
|
|
501
|
+
}
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
async handlePromptsList(request) {
|
|
505
|
+
// MCPDog currently does not provide prompt templates, return empty list for Cursor compatibility
|
|
506
|
+
return {
|
|
507
|
+
jsonrpc: '2.0',
|
|
508
|
+
id: request.id,
|
|
509
|
+
result: {
|
|
510
|
+
prompts: []
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
async waitForToolsReady() {
|
|
515
|
+
const maxAttempts = 10;
|
|
516
|
+
const delay = 500; // 500ms
|
|
517
|
+
const startTime = Date.now();
|
|
518
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
519
|
+
const enabledServersCount = Object.keys(this.configManager.getEnabledServers()).length;
|
|
520
|
+
const connectedAdaptersCount = this.toolRouter.getConnectedServerCount();
|
|
521
|
+
const totalTools = (await this.toolRouter.getAllTools()).length;
|
|
522
|
+
// If no enabled servers, return directly
|
|
523
|
+
if (enabledServersCount === 0) {
|
|
524
|
+
console.error(`[SERVER] No enabled servers, skipping wait.`);
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
// If all servers are connected, or enough tools are available
|
|
528
|
+
if (enabledServersCount === connectedAdaptersCount ||
|
|
529
|
+
(connectedAdaptersCount > 0 && totalTools >= connectedAdaptersCount * 2)) {
|
|
530
|
+
console.error(`[SERVER] ${connectedAdaptersCount}/${enabledServersCount} servers connected and ${totalTools} tools loaded.`);
|
|
531
|
+
return;
|
|
532
|
+
}
|
|
533
|
+
console.error(`[SERVER] Waiting for tools to be ready. Connected: ${connectedAdaptersCount}/${enabledServersCount}, Tools: ${totalTools}`);
|
|
534
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
535
|
+
}
|
|
536
|
+
const elapsedTime = Date.now() - startTime;
|
|
537
|
+
const connectedCount = this.toolRouter.getConnectedServerCount();
|
|
538
|
+
const totalCount = Object.keys(this.configManager.getEnabledServers()).length;
|
|
539
|
+
console.error(`[SERVER] Timeout after ${elapsedTime}ms. ${connectedCount}/${totalCount} servers connected.`);
|
|
540
|
+
// Do not throw error, but warn and continue running
|
|
541
|
+
if (connectedCount > 0) {
|
|
542
|
+
console.error(`[SERVER] Proceeding with ${connectedCount} connected servers (some servers may have failed to start).`);
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
else {
|
|
546
|
+
console.error(`[SERVER] Warning: No servers connected, but proceeding anyway.`);
|
|
547
|
+
// Even if no servers are connected, do not throw an error, let the system continue to run
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
//# sourceMappingURL=mcpdog-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpdog-server.js","sourceRoot":"","sources":["../../src/core/mcpdog-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface ProtocolDetectionResult {
|
|
2
|
+
protocol: 'stdio' | 'http-sse' | 'streamable-http' | 'unknown';
|
|
3
|
+
confidence: number;
|
|
4
|
+
reason: string;
|
|
5
|
+
endpoint?: string;
|
|
6
|
+
features?: string[];
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ProtocolTestResult {
|
|
10
|
+
protocol: string;
|
|
11
|
+
supported: boolean;
|
|
12
|
+
responseTime: number;
|
|
13
|
+
features: string[];
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class ProtocolDetector {
|
|
17
|
+
private timeout;
|
|
18
|
+
private userAgent;
|
|
19
|
+
constructor(timeout?: number);
|
|
20
|
+
/**
|
|
21
|
+
* 自动检测端点支持的最佳协议
|
|
22
|
+
*/
|
|
23
|
+
detectBestProtocol(endpoint: string, options?: {
|
|
24
|
+
timeout?: number;
|
|
25
|
+
headers?: Record<string, string>;
|
|
26
|
+
}): Promise<ProtocolDetectionResult>;
|
|
27
|
+
/**
|
|
28
|
+
* 测试 Streamable HTTP 协议支持
|
|
29
|
+
*/
|
|
30
|
+
private testStreamableHttp;
|
|
31
|
+
/**
|
|
32
|
+
* 测试 HTTP+SSE 协议支持
|
|
33
|
+
*/
|
|
34
|
+
private testHttpSse;
|
|
35
|
+
/**
|
|
36
|
+
* 测试基础 HTTP 支持(作为后备)
|
|
37
|
+
*/
|
|
38
|
+
private testBasicHttp;
|
|
39
|
+
/**
|
|
40
|
+
* 选择最佳协议
|
|
41
|
+
*/
|
|
42
|
+
private selectBestProtocol;
|
|
43
|
+
/**
|
|
44
|
+
* 生成检测原因说明
|
|
45
|
+
*/
|
|
46
|
+
private generateReasonText;
|
|
47
|
+
/**
|
|
48
|
+
* 为 stdio 协议生成配置建议
|
|
49
|
+
*/
|
|
50
|
+
generateStdioSuggestion(command: string): ProtocolDetectionResult;
|
|
51
|
+
/**
|
|
52
|
+
* 批量检测多个端点
|
|
53
|
+
*/
|
|
54
|
+
detectMultipleEndpoints(endpoints: string[]): Promise<Map<string, ProtocolDetectionResult>>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=protocol-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-detector.d.ts","sourceRoot":"","sources":["../../src/core/protocol-detector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAA2C;gBAEhD,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACnD,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0BpC;;OAEG;YACW,kBAAkB;IAyFhC;;OAEG;YACW,WAAW;IAiFzB;;OAEG;YACW,aAAa;IA2D3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8D1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IASjE;;OAEG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CAwBlG"}
|