@dobbyai/mcp-external 1.0.4 → 1.2.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/README.md +44 -14
- package/dist/__tests__/agent-mail-tools.test.d.ts +8 -0
- package/dist/__tests__/agent-mail-tools.test.d.ts.map +1 -0
- package/dist/__tests__/agent-mail-tools.test.js +255 -0
- package/dist/__tests__/agent-mail-tools.test.js.map +1 -0
- package/dist/__tests__/annotations.test.d.ts +8 -0
- package/dist/__tests__/annotations.test.d.ts.map +1 -0
- package/dist/__tests__/annotations.test.js +108 -0
- package/dist/__tests__/annotations.test.js.map +1 -0
- package/dist/__tests__/auth.test.d.ts +7 -0
- package/dist/__tests__/auth.test.d.ts.map +1 -0
- package/dist/__tests__/auth.test.js +161 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/doctor.test.d.ts +16 -0
- package/dist/__tests__/doctor.test.d.ts.map +1 -0
- package/dist/__tests__/doctor.test.js +258 -0
- package/dist/__tests__/doctor.test.js.map +1 -0
- package/dist/__tests__/external-agents-tools.test.d.ts +11 -0
- package/dist/__tests__/external-agents-tools.test.d.ts.map +1 -0
- package/dist/__tests__/external-agents-tools.test.js +619 -0
- package/dist/__tests__/external-agents-tools.test.js.map +1 -0
- package/dist/__tests__/gateway-bearer.test.d.ts +12 -0
- package/dist/__tests__/gateway-bearer.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-bearer.test.js +112 -0
- package/dist/__tests__/gateway-bearer.test.js.map +1 -0
- package/dist/__tests__/gateway-key-resolver.test.d.ts +10 -0
- package/dist/__tests__/gateway-key-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-key-resolver.test.js +125 -0
- package/dist/__tests__/gateway-key-resolver.test.js.map +1 -0
- package/dist/__tests__/http-concurrency.test.d.ts +20 -0
- package/dist/__tests__/http-concurrency.test.d.ts.map +1 -0
- package/dist/__tests__/http-concurrency.test.js +254 -0
- package/dist/__tests__/http-concurrency.test.js.map +1 -0
- package/dist/__tests__/integration/protocol.test.d.ts +8 -0
- package/dist/__tests__/integration/protocol.test.d.ts.map +1 -0
- package/dist/__tests__/integration/protocol.test.js +110 -0
- package/dist/__tests__/integration/protocol.test.js.map +1 -0
- package/dist/__tests__/mcp-integrations.test.d.ts +8 -0
- package/dist/__tests__/mcp-integrations.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-integrations.test.js +365 -0
- package/dist/__tests__/mcp-integrations.test.js.map +1 -0
- package/dist/__tests__/memory-graph-tools.test.d.ts +8 -0
- package/dist/__tests__/memory-graph-tools.test.d.ts.map +1 -0
- package/dist/__tests__/memory-graph-tools.test.js +254 -0
- package/dist/__tests__/memory-graph-tools.test.js.map +1 -0
- package/dist/__tests__/registry-dispatch.test.d.ts +11 -0
- package/dist/__tests__/registry-dispatch.test.d.ts.map +1 -0
- package/dist/__tests__/registry-dispatch.test.js +30 -0
- package/dist/__tests__/registry-dispatch.test.js.map +1 -0
- package/dist/__tests__/registry-listing-parity.test.d.ts +2 -0
- package/dist/__tests__/registry-listing-parity.test.d.ts.map +1 -0
- package/dist/__tests__/registry-listing-parity.test.js +89 -0
- package/dist/__tests__/registry-listing-parity.test.js.map +1 -0
- package/dist/__tests__/role-cap.test.d.ts +2 -0
- package/dist/__tests__/role-cap.test.d.ts.map +1 -0
- package/dist/__tests__/role-cap.test.js +113 -0
- package/dist/__tests__/role-cap.test.js.map +1 -0
- package/dist/__tests__/schedule-tools.test.d.ts +8 -0
- package/dist/__tests__/schedule-tools.test.d.ts.map +1 -0
- package/dist/__tests__/schedule-tools.test.js +285 -0
- package/dist/__tests__/schedule-tools.test.js.map +1 -0
- package/dist/__tests__/server-gateway-key.test.d.ts +18 -0
- package/dist/__tests__/server-gateway-key.test.d.ts.map +1 -0
- package/dist/__tests__/server-gateway-key.test.js +148 -0
- package/dist/__tests__/server-gateway-key.test.js.map +1 -0
- package/dist/__tests__/server-user-scoped.test.d.ts +34 -0
- package/dist/__tests__/server-user-scoped.test.d.ts.map +1 -0
- package/dist/__tests__/server-user-scoped.test.js +577 -0
- package/dist/__tests__/server-user-scoped.test.js.map +1 -0
- package/dist/__tests__/task-id-pattern.test.d.ts +12 -0
- package/dist/__tests__/task-id-pattern.test.d.ts.map +1 -0
- package/dist/__tests__/task-id-pattern.test.js +43 -0
- package/dist/__tests__/task-id-pattern.test.js.map +1 -0
- package/dist/__tests__/tiers.test.d.ts +7 -0
- package/dist/__tests__/tiers.test.d.ts.map +1 -0
- package/dist/__tests__/tiers.test.js +199 -0
- package/dist/__tests__/tiers.test.js.map +1 -0
- package/dist/__tests__/tools/hosted-agents.test.d.ts +9 -0
- package/dist/__tests__/tools/hosted-agents.test.d.ts.map +1 -0
- package/dist/__tests__/tools/hosted-agents.test.js +301 -0
- package/dist/__tests__/tools/hosted-agents.test.js.map +1 -0
- package/dist/__tests__/tools/llm-providers.test.d.ts +10 -0
- package/dist/__tests__/tools/llm-providers.test.d.ts.map +1 -0
- package/dist/__tests__/tools/llm-providers.test.js +105 -0
- package/dist/__tests__/tools/llm-providers.test.js.map +1 -0
- package/dist/__tests__/tools/services.test.js +139 -98
- package/dist/__tests__/tools/services.test.js.map +1 -1
- package/dist/__tests__/tools.test.d.ts +7 -0
- package/dist/__tests__/tools.test.d.ts.map +1 -0
- package/dist/__tests__/tools.test.js +152 -0
- package/dist/__tests__/tools.test.js.map +1 -0
- package/dist/__tests__/transport.test.d.ts +7 -0
- package/dist/__tests__/transport.test.d.ts.map +1 -0
- package/dist/__tests__/transport.test.js +397 -0
- package/dist/__tests__/transport.test.js.map +1 -0
- package/dist/__tests__/validate-credentials.test.d.ts +9 -0
- package/dist/__tests__/validate-credentials.test.d.ts.map +1 -0
- package/dist/__tests__/validate-credentials.test.js +172 -0
- package/dist/__tests__/validate-credentials.test.js.map +1 -0
- package/dist/__tests__/web-eval-tools.test.d.ts +8 -0
- package/dist/__tests__/web-eval-tools.test.d.ts.map +1 -0
- package/dist/__tests__/web-eval-tools.test.js +241 -0
- package/dist/__tests__/web-eval-tools.test.js.map +1 -0
- package/dist/__tests__/whoami.test.d.ts +11 -0
- package/dist/__tests__/whoami.test.d.ts.map +1 -0
- package/dist/__tests__/whoami.test.js +194 -0
- package/dist/__tests__/whoami.test.js.map +1 -0
- package/dist/__tests__/workflow-tools.test.d.ts +8 -0
- package/dist/__tests__/workflow-tools.test.d.ts.map +1 -0
- package/dist/__tests__/workflow-tools.test.js +261 -0
- package/dist/__tests__/workflow-tools.test.js.map +1 -0
- package/dist/__tests__/workloads.test.d.ts +9 -0
- package/dist/__tests__/workloads.test.d.ts.map +1 -0
- package/dist/__tests__/workloads.test.js +169 -0
- package/dist/__tests__/workloads.test.js.map +1 -0
- package/dist/auth/oauth-provider.d.ts +34 -0
- package/dist/auth/oauth-provider.d.ts.map +1 -0
- package/dist/auth/oauth-provider.js +75 -0
- package/dist/auth/oauth-provider.js.map +1 -0
- package/dist/auth/token-verifier.d.ts +45 -0
- package/dist/auth/token-verifier.d.ts.map +1 -0
- package/dist/auth/token-verifier.js +160 -0
- package/dist/auth/token-verifier.js.map +1 -0
- package/dist/connectors/claude-desktop.d.ts.map +1 -1
- package/dist/connectors/claude-desktop.js +3 -2
- package/dist/connectors/claude-desktop.js.map +1 -1
- package/dist/connectors/cursor.d.ts.map +1 -1
- package/dist/connectors/cursor.js +3 -2
- package/dist/connectors/cursor.js.map +1 -1
- package/dist/connectors/setup.d.ts.map +1 -1
- package/dist/connectors/setup.js +2 -1
- package/dist/connectors/setup.js.map +1 -1
- package/dist/connectors/vscode.d.ts.map +1 -1
- package/dist/connectors/vscode.js +3 -2
- package/dist/connectors/vscode.js.map +1 -1
- package/dist/connectors/windsurf.d.ts.map +1 -1
- package/dist/connectors/windsurf.js +3 -2
- package/dist/connectors/windsurf.js.map +1 -1
- package/dist/doctor.d.ts +34 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +134 -0
- package/dist/doctor.js.map +1 -0
- package/dist/http-server.d.ts +56 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +455 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +96 -171
- package/dist/index.js.map +1 -1
- package/dist/lib/consts.d.ts +21 -0
- package/dist/lib/consts.d.ts.map +1 -0
- package/dist/lib/consts.js +30 -0
- package/dist/lib/consts.js.map +1 -0
- package/dist/lib/dobby-client.d.ts +60 -3
- package/dist/lib/dobby-client.d.ts.map +1 -1
- package/dist/lib/dobby-client.js +145 -44
- package/dist/lib/dobby-client.js.map +1 -1
- package/dist/lib/gateway-key-resolver.d.ts +38 -0
- package/dist/lib/gateway-key-resolver.d.ts.map +1 -0
- package/dist/lib/gateway-key-resolver.js +59 -0
- package/dist/lib/gateway-key-resolver.js.map +1 -0
- package/dist/lib/log.d.ts +25 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +36 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/server.d.ts +175 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1017 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/agent-mail.d.ts +112 -0
- package/dist/tools/agent-mail.d.ts.map +1 -0
- package/dist/tools/agent-mail.js +118 -0
- package/dist/tools/agent-mail.js.map +1 -0
- package/dist/tools/agent-versions.d.ts +93 -0
- package/dist/tools/agent-versions.d.ts.map +1 -0
- package/dist/tools/agent-versions.js +99 -0
- package/dist/tools/agent-versions.js.map +1 -0
- package/dist/tools/approvals.d.ts +24 -34
- package/dist/tools/approvals.d.ts.map +1 -1
- package/dist/tools/approvals.js +24 -81
- package/dist/tools/approvals.js.map +1 -1
- package/dist/tools/claude-code-sync.d.ts +40 -0
- package/dist/tools/claude-code-sync.d.ts.map +1 -0
- package/dist/tools/claude-code-sync.js +52 -0
- package/dist/tools/claude-code-sync.js.map +1 -0
- package/dist/tools/control-plane.d.ts +118 -0
- package/dist/tools/control-plane.d.ts.map +1 -0
- package/dist/tools/control-plane.js +135 -0
- package/dist/tools/control-plane.js.map +1 -0
- package/dist/tools/crew-builder.d.ts +24 -66
- package/dist/tools/crew-builder.d.ts.map +1 -1
- package/dist/tools/crew-builder.js +24 -185
- package/dist/tools/crew-builder.js.map +1 -1
- package/dist/tools/crewai.d.ts +24 -63
- package/dist/tools/crewai.d.ts.map +1 -1
- package/dist/tools/crewai.js +24 -145
- package/dist/tools/crewai.js.map +1 -1
- package/dist/tools/exa.d.ts +126 -0
- package/dist/tools/exa.d.ts.map +1 -0
- package/dist/tools/exa.js +125 -0
- package/dist/tools/exa.js.map +1 -0
- package/dist/tools/external-agents.d.ts +440 -0
- package/dist/tools/external-agents.d.ts.map +1 -0
- package/dist/tools/external-agents.js +386 -0
- package/dist/tools/external-agents.js.map +1 -0
- package/dist/tools/github-mcp.d.ts +228 -0
- package/dist/tools/github-mcp.d.ts.map +1 -0
- package/dist/tools/github-mcp.js +235 -0
- package/dist/tools/github-mcp.js.map +1 -0
- package/dist/tools/governance.d.ts +273 -0
- package/dist/tools/governance.d.ts.map +1 -0
- package/dist/tools/governance.js +286 -0
- package/dist/tools/governance.js.map +1 -0
- package/dist/tools/hosted-agents.d.ts +216 -0
- package/dist/tools/hosted-agents.d.ts.map +1 -0
- package/dist/tools/hosted-agents.js +214 -0
- package/dist/tools/hosted-agents.js.map +1 -0
- package/dist/tools/index.d.ts +6335 -191
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +441 -172
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jira.d.ts +60 -176
- package/dist/tools/jira.d.ts.map +1 -1
- package/dist/tools/jira.js +60 -365
- package/dist/tools/jira.js.map +1 -1
- package/dist/tools/llm-providers.d.ts +50 -0
- package/dist/tools/llm-providers.d.ts.map +1 -0
- package/dist/tools/llm-providers.js +41 -0
- package/dist/tools/llm-providers.js.map +1 -0
- package/dist/tools/mcp-metrics.d.ts +47 -0
- package/dist/tools/mcp-metrics.d.ts.map +1 -0
- package/dist/tools/mcp-metrics.js +53 -0
- package/dist/tools/mcp-metrics.js.map +1 -0
- package/dist/tools/mcp-tools.d.ts +12 -29
- package/dist/tools/mcp-tools.d.ts.map +1 -1
- package/dist/tools/mcp-tools.js +12 -131
- package/dist/tools/mcp-tools.js.map +1 -1
- package/dist/tools/mem0.d.ts +127 -0
- package/dist/tools/mem0.d.ts.map +1 -0
- package/dist/tools/mem0.js +155 -0
- package/dist/tools/mem0.js.map +1 -0
- package/dist/tools/memory-graph.d.ts +151 -0
- package/dist/tools/memory-graph.d.ts.map +1 -0
- package/dist/tools/memory-graph.js +159 -0
- package/dist/tools/memory-graph.js.map +1 -0
- package/dist/tools/memory-stores.d.ts +141 -0
- package/dist/tools/memory-stores.d.ts.map +1 -0
- package/dist/tools/memory-stores.js +147 -0
- package/dist/tools/memory-stores.js.map +1 -0
- package/dist/tools/messages.d.ts +12 -20
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +12 -49
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/moltbook.d.ts +328 -0
- package/dist/tools/moltbook.d.ts.map +1 -0
- package/dist/tools/moltbook.js +334 -0
- package/dist/tools/moltbook.js.map +1 -0
- package/dist/tools/monitoring-attribution.d.ts +71 -0
- package/dist/tools/monitoring-attribution.d.ts.map +1 -0
- package/dist/tools/monitoring-attribution.js +74 -0
- package/dist/tools/monitoring-attribution.js.map +1 -0
- package/dist/tools/ops.d.ts +139 -0
- package/dist/tools/ops.d.ts.map +1 -0
- package/dist/tools/ops.js +151 -0
- package/dist/tools/ops.js.map +1 -0
- package/dist/tools/orchestrations.d.ts +109 -0
- package/dist/tools/orchestrations.d.ts.map +1 -0
- package/dist/tools/orchestrations.js +115 -0
- package/dist/tools/orchestrations.js.map +1 -0
- package/dist/tools/outcomes.d.ts +138 -0
- package/dist/tools/outcomes.d.ts.map +1 -0
- package/dist/tools/outcomes.js +136 -0
- package/dist/tools/outcomes.js.map +1 -0
- package/dist/tools/schedules.d.ts +149 -0
- package/dist/tools/schedules.d.ts.map +1 -0
- package/dist/tools/schedules.js +155 -0
- package/dist/tools/schedules.js.map +1 -0
- package/dist/tools/services.d.ts +6 -16
- package/dist/tools/services.d.ts.map +1 -1
- package/dist/tools/services.js +6 -135
- package/dist/tools/services.js.map +1 -1
- package/dist/tools/sessions.d.ts +124 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +130 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/setup-status.d.ts +29 -0
- package/dist/tools/setup-status.d.ts.map +1 -0
- package/dist/tools/setup-status.js +35 -0
- package/dist/tools/setup-status.js.map +1 -0
- package/dist/tools/tasks.d.ts +44 -56
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +48 -212
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/tiers.d.ts +55 -0
- package/dist/tools/tiers.d.ts.map +1 -0
- package/dist/tools/tiers.js +239 -0
- package/dist/tools/tiers.js.map +1 -0
- package/dist/tools/unified-agents.d.ts +43 -0
- package/dist/tools/unified-agents.d.ts.map +1 -0
- package/dist/tools/unified-agents.js +46 -0
- package/dist/tools/unified-agents.js.map +1 -0
- package/dist/tools/web-eval.d.ts +129 -0
- package/dist/tools/web-eval.d.ts.map +1 -0
- package/dist/tools/web-eval.js +136 -0
- package/dist/tools/web-eval.js.map +1 -0
- package/dist/tools/workflow.d.ts +105 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +111 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/tools/workloads.d.ts +81 -0
- package/dist/tools/workloads.d.ts.map +1 -0
- package/dist/tools/workloads.js +81 -0
- package/dist/tools/workloads.js.map +1 -0
- package/package.json +13 -7
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Dobby MCP Server
|
|
3
|
+
* Dobby MCP Server — CLI entry point
|
|
4
4
|
*
|
|
5
5
|
* Model Context Protocol server for Dobby AI Platform.
|
|
6
6
|
* Enables access from Claude Desktop, Cursor, Windsurf, and other MCP clients.
|
|
@@ -9,16 +9,18 @@
|
|
|
9
9
|
* npx @dobbyai/mcp-external # STDIO mode (default)
|
|
10
10
|
* npx @dobbyai/mcp-external --transport http # HTTP mode
|
|
11
11
|
* npx @dobbyai/mcp-external --setup # Interactive setup
|
|
12
|
+
*
|
|
13
|
+
* The server factory (handler registration, tier enforcement) lives in
|
|
14
|
+
* server.ts — this file only parses the CLI and starts the transport.
|
|
15
|
+
* Importing THIS module runs main(); tests import server.ts instead.
|
|
12
16
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { resourceDefinitions, resourceTemplates, handleResourceRead } from './resources/index.js';
|
|
21
|
-
import { promptDefinitions, handlePromptGet } from './prompts/index.js';
|
|
17
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
18
|
+
import { Command } from "commander";
|
|
19
|
+
import dotenv from "dotenv";
|
|
20
|
+
import { createDobbyClient } from "./lib/dobby-client.js";
|
|
21
|
+
import { createServer, resolveGatewayKey } from "./server.js";
|
|
22
|
+
import { startHttpServer } from "./http-server.js";
|
|
23
|
+
import { log, useStderrSink } from "./lib/log.js";
|
|
22
24
|
// Load environment variables
|
|
23
25
|
dotenv.config();
|
|
24
26
|
// ============================================
|
|
@@ -26,181 +28,104 @@ dotenv.config();
|
|
|
26
28
|
// ============================================
|
|
27
29
|
const program = new Command();
|
|
28
30
|
program
|
|
29
|
-
.name(
|
|
30
|
-
.description(
|
|
31
|
-
.version(
|
|
32
|
-
.option(
|
|
33
|
-
.option(
|
|
34
|
-
.option(
|
|
35
|
-
.option(
|
|
36
|
-
.option(
|
|
37
|
-
.option(
|
|
38
|
-
.option(
|
|
39
|
-
.option(
|
|
31
|
+
.name("dobby-mcp")
|
|
32
|
+
.description("Dobby MCP Server - Connect to Dobby from any MCP client")
|
|
33
|
+
.version("1.2.0")
|
|
34
|
+
.option("-t, --transport <type>", "Transport type: stdio or http", "stdio")
|
|
35
|
+
.option("-p, --port <number>", "HTTP server port (for http transport)", "8080")
|
|
36
|
+
.option("--api-url <url>", "Dobby API URL", process.env.DOBBY_API_URL)
|
|
37
|
+
.option("--api-key <key>", "Dobby API Key", process.env.DOBBY_API_KEY)
|
|
38
|
+
.option("--tenant-id <id>", "Dobby Tenant ID", process.env.DOBBY_TENANT_ID)
|
|
39
|
+
.option("--gateway-key <key>", "Gateway API Key (gk_* format)", process.env.DOBBY_GATEWAY_KEY)
|
|
40
|
+
.option("--gateway-url <url>", "Gateway API URL (defaults to API URL)", process.env.DOBBY_GATEWAY_URL)
|
|
41
|
+
.option("--setup", "Run interactive setup")
|
|
42
|
+
.option("--doctor", "Run a connection/credential preflight and exit")
|
|
40
43
|
.parse();
|
|
41
44
|
const options = program.opts();
|
|
42
45
|
// ============================================
|
|
43
|
-
// Gateway Key Resolution
|
|
44
|
-
// ============================================
|
|
45
|
-
/**
|
|
46
|
-
* Resolve the gateway key to use for auth + audit logging.
|
|
47
|
-
* Priority: explicit DOBBY_GATEWAY_KEY > auto-detect gk_* in DOBBY_API_KEY > undefined (disabled)
|
|
48
|
-
*/
|
|
49
|
-
function resolveGatewayKey(opts) {
|
|
50
|
-
if (opts.gatewayKey)
|
|
51
|
-
return opts.gatewayKey;
|
|
52
|
-
if (opts.apiKey && opts.apiKey.startsWith('gk_'))
|
|
53
|
-
return opts.apiKey;
|
|
54
|
-
return undefined;
|
|
55
|
-
}
|
|
56
|
-
// ============================================
|
|
57
|
-
// Server Setup
|
|
58
|
-
// ============================================
|
|
59
|
-
async function createServer() {
|
|
60
|
-
// Create Dobby client
|
|
61
|
-
const client = createDobbyClient({
|
|
62
|
-
apiUrl: options.apiUrl,
|
|
63
|
-
apiKey: options.apiKey,
|
|
64
|
-
tenantId: options.tenantId,
|
|
65
|
-
});
|
|
66
|
-
// Create MCP server
|
|
67
|
-
const server = new Server({
|
|
68
|
-
name: 'dobby-mcp-server',
|
|
69
|
-
version: '1.0.0',
|
|
70
|
-
}, {
|
|
71
|
-
capabilities: {
|
|
72
|
-
tools: {},
|
|
73
|
-
resources: {},
|
|
74
|
-
prompts: {},
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
// User context (can be expanded with actual auth)
|
|
78
|
-
const userContext = {
|
|
79
|
-
userId: process.env.DOBBY_USER_ID || 'mcp-user',
|
|
80
|
-
userName: process.env.DOBBY_USER_NAME || 'MCP User',
|
|
81
|
-
};
|
|
82
|
-
// Gateway auth context (optional — if configured, enables auth + audit logging)
|
|
83
|
-
const gatewayKey = resolveGatewayKey({
|
|
84
|
-
gatewayKey: options.gatewayKey,
|
|
85
|
-
apiKey: options.apiKey,
|
|
86
|
-
});
|
|
87
|
-
const gatewayUrl = options.gatewayUrl || client.apiUrl;
|
|
88
|
-
// ============================================
|
|
89
|
-
// Tools Handler
|
|
90
|
-
// ============================================
|
|
91
|
-
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
92
|
-
return {
|
|
93
|
-
tools: Object.values(allTools).map((tool) => ({
|
|
94
|
-
name: tool.name,
|
|
95
|
-
description: tool.description,
|
|
96
|
-
inputSchema: tool.inputSchema,
|
|
97
|
-
})),
|
|
98
|
-
};
|
|
99
|
-
});
|
|
100
|
-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
101
|
-
const { name, arguments: args } = request.params;
|
|
102
|
-
try {
|
|
103
|
-
const result = await handleToolCall(name, args || {}, {
|
|
104
|
-
client,
|
|
105
|
-
userId: userContext.userId,
|
|
106
|
-
userName: userContext.userName,
|
|
107
|
-
gatewayKey,
|
|
108
|
-
gatewayUrl,
|
|
109
|
-
tenantId: client.tenantId,
|
|
110
|
-
region: process.env.DOBBY_REGION,
|
|
111
|
-
});
|
|
112
|
-
return result;
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
return {
|
|
116
|
-
content: [
|
|
117
|
-
{
|
|
118
|
-
type: 'text',
|
|
119
|
-
text: `Error: ${error.message}`,
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
isError: true,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
// ============================================
|
|
127
|
-
// Resources Handler
|
|
128
|
-
// ============================================
|
|
129
|
-
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
130
|
-
return {
|
|
131
|
-
resources: resourceDefinitions,
|
|
132
|
-
resourceTemplates: resourceTemplates,
|
|
133
|
-
};
|
|
134
|
-
});
|
|
135
|
-
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
136
|
-
const { uri } = request.params;
|
|
137
|
-
try {
|
|
138
|
-
return await handleResourceRead(uri, client);
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
throw new Error(`Failed to read resource ${uri}: ${error.message}`);
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
// ============================================
|
|
145
|
-
// Prompts Handler
|
|
146
|
-
// ============================================
|
|
147
|
-
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
148
|
-
return {
|
|
149
|
-
prompts: promptDefinitions,
|
|
150
|
-
};
|
|
151
|
-
});
|
|
152
|
-
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
153
|
-
const { name, arguments: args } = request.params;
|
|
154
|
-
try {
|
|
155
|
-
return handlePromptGet(name, args || {});
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
throw new Error(`Failed to get prompt ${name}: ${error.message}`);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
return { server, client };
|
|
162
|
-
}
|
|
163
|
-
// ============================================
|
|
164
46
|
// Main Entry Point
|
|
165
47
|
// ============================================
|
|
166
48
|
async function main() {
|
|
167
49
|
// Handle setup mode
|
|
168
50
|
if (options.setup) {
|
|
169
|
-
const { runInteractiveSetup } = await import(
|
|
51
|
+
const { runInteractiveSetup } = await import("./connectors/setup.js");
|
|
170
52
|
await runInteractiveSetup();
|
|
171
53
|
return;
|
|
172
54
|
}
|
|
173
|
-
|
|
174
|
-
|
|
55
|
+
// Preflight: validate credentials + transport, print a diagnosis, then exit
|
|
56
|
+
if (options.doctor) {
|
|
57
|
+
const { runDoctor, formatDoctorReport } = await import("./doctor.js");
|
|
58
|
+
const report = await runDoctor({
|
|
59
|
+
apiUrl: options.apiUrl,
|
|
60
|
+
apiKey: options.apiKey,
|
|
61
|
+
tenantId: options.tenantId,
|
|
62
|
+
gatewayKey: options.gatewayKey,
|
|
63
|
+
transport: options.transport,
|
|
64
|
+
});
|
|
65
|
+
console.log(formatDoctorReport(report));
|
|
66
|
+
process.exit(report.blocked ? 1 : 0);
|
|
67
|
+
}
|
|
175
68
|
try {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
console.error('Connected to Dobby API');
|
|
184
|
-
}
|
|
185
|
-
// Gateway auth status
|
|
186
|
-
const gwKey = resolveGatewayKey({ gatewayKey: options.gatewayKey, apiKey: options.apiKey });
|
|
187
|
-
if (gwKey) {
|
|
188
|
-
console.error(`Gateway auth enabled (key prefix: ${gwKey.slice(0, 12)}...)`);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
console.error('Gateway auth disabled (no gateway key configured)');
|
|
192
|
-
}
|
|
193
|
-
if (options.transport === 'stdio') {
|
|
69
|
+
if (options.transport === "stdio") {
|
|
70
|
+
// STDIO: stdout is the JSON-RPC protocol channel — ALL diagnostics stay
|
|
71
|
+
// on stderr (human-readable; MCP clients surface stderr as server logs).
|
|
72
|
+
// Route any shared log.* call there too so it can never corrupt stdout.
|
|
73
|
+
useStderrSink();
|
|
74
|
+
console.error("Starting Dobby MCP Server...");
|
|
75
|
+
console.error("Transport: stdio");
|
|
194
76
|
// STDIO transport (for Claude Desktop, Cursor, etc.)
|
|
77
|
+
const server = await createServer({
|
|
78
|
+
mode: "stdio",
|
|
79
|
+
apiUrl: options.apiUrl,
|
|
80
|
+
apiKey: options.apiKey,
|
|
81
|
+
tenantId: options.tenantId,
|
|
82
|
+
gatewayKey: options.gatewayKey,
|
|
83
|
+
gatewayUrl: options.gatewayUrl,
|
|
84
|
+
});
|
|
85
|
+
// Verify connection
|
|
86
|
+
const client = createDobbyClient({
|
|
87
|
+
apiUrl: options.apiUrl,
|
|
88
|
+
apiKey: options.apiKey,
|
|
89
|
+
tenantId: options.tenantId,
|
|
90
|
+
});
|
|
91
|
+
const healthy = await client.checkHealth();
|
|
92
|
+
if (!healthy) {
|
|
93
|
+
console.error("Warning: Could not connect to Dobby API");
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.error("Connected to Dobby API");
|
|
97
|
+
}
|
|
98
|
+
// Gateway auth status
|
|
99
|
+
const gwKey = resolveGatewayKey({
|
|
100
|
+
gatewayKey: options.gatewayKey,
|
|
101
|
+
apiKey: options.apiKey,
|
|
102
|
+
});
|
|
103
|
+
if (gwKey) {
|
|
104
|
+
console.error(`Gateway auth enabled (key prefix: ${gwKey.slice(0, 12)}...)`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.error("Gateway auth disabled (no gateway key configured)");
|
|
108
|
+
}
|
|
195
109
|
const transport = new StdioServerTransport();
|
|
196
110
|
await server.connect(transport);
|
|
197
|
-
console.error(
|
|
111
|
+
console.error("Dobby MCP Server running on STDIO");
|
|
198
112
|
}
|
|
199
|
-
else if (options.transport ===
|
|
200
|
-
// HTTP transport (for remote clients)
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
113
|
+
else if (options.transport === "http") {
|
|
114
|
+
// HTTP transport (for remote clients via OAuth). Structured JSON on
|
|
115
|
+
// stdout — GKE ingests it at the declared severity (the old stderr
|
|
116
|
+
// banner landed at severity ERROR).
|
|
117
|
+
log.info("Starting Dobby MCP Server", { transport: "http" });
|
|
118
|
+
const issuerUrl = process.env.OAUTH_ISSUER_URL ||
|
|
119
|
+
options.apiUrl ||
|
|
120
|
+
"https://dobby-ai.com";
|
|
121
|
+
const mcpPublicUrl = process.env.MCP_PUBLIC_URL || `http://localhost:${options.port}`;
|
|
122
|
+
const port = parseInt(options.port, 10);
|
|
123
|
+
await startHttpServer({
|
|
124
|
+
port,
|
|
125
|
+
issuerUrl,
|
|
126
|
+
mcpPublicUrl,
|
|
127
|
+
createMcpServer: () => createServer({ mode: "http", apiUrl: options.apiUrl }),
|
|
128
|
+
});
|
|
204
129
|
}
|
|
205
130
|
else {
|
|
206
131
|
console.error(`Unknown transport: ${options.transport}`);
|
|
@@ -208,12 +133,12 @@ async function main() {
|
|
|
208
133
|
}
|
|
209
134
|
}
|
|
210
135
|
catch (error) {
|
|
211
|
-
console.error(
|
|
136
|
+
console.error("Failed to start server:", error.message);
|
|
212
137
|
process.exit(1);
|
|
213
138
|
}
|
|
214
139
|
}
|
|
215
140
|
main().catch((error) => {
|
|
216
|
-
console.error(
|
|
141
|
+
console.error("Fatal error:", error);
|
|
217
142
|
process.exit(1);
|
|
218
143
|
});
|
|
219
144
|
//# 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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for the Dobby MCP external server.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Canonical production API host for the Dobby platform.
|
|
6
|
+
* Single source of truth for the default DOBBY_API_URL used by the client
|
|
7
|
+
* and every connector generator, to prevent host drift.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_API_URL = "https://dobby-ai.com";
|
|
10
|
+
/**
|
|
11
|
+
* Issued-key prefixes, the single source of truth for classifying a
|
|
12
|
+
* DOBBY_API_KEY / bearer token into what it can do. Reused by the `doctor`
|
|
13
|
+
* preflight and the `whoami` tool so both agree on key semantics.
|
|
14
|
+
*/
|
|
15
|
+
export declare const GATEWAY_KEY_PREFIXES: readonly ["gk_user_", "gk_svc_", "gk_tmp_"];
|
|
16
|
+
export declare const TENANT_KEY_PREFIX = "sk_live_";
|
|
17
|
+
export declare const PAT_KEY_PREFIX = "dobby_pat_";
|
|
18
|
+
export type KeyType = "gateway" | "tenant" | "pat" | "unknown" | "none";
|
|
19
|
+
/** Classify an API key / bearer token by prefix into its key family. */
|
|
20
|
+
export declare function classifyKeyType(key: string | undefined | null): KeyType;
|
|
21
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/lib/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,yBAAyB,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,6CAA8C,CAAC;AAChF,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAExE,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAMvE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared constants for the Dobby MCP external server.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Canonical production API host for the Dobby platform.
|
|
6
|
+
* Single source of truth for the default DOBBY_API_URL used by the client
|
|
7
|
+
* and every connector generator, to prevent host drift.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_API_URL = "https://dobby-ai.com";
|
|
10
|
+
/**
|
|
11
|
+
* Issued-key prefixes, the single source of truth for classifying a
|
|
12
|
+
* DOBBY_API_KEY / bearer token into what it can do. Reused by the `doctor`
|
|
13
|
+
* preflight and the `whoami` tool so both agree on key semantics.
|
|
14
|
+
*/
|
|
15
|
+
export const GATEWAY_KEY_PREFIXES = ["gk_user_", "gk_svc_", "gk_tmp_"];
|
|
16
|
+
export const TENANT_KEY_PREFIX = "sk_live_";
|
|
17
|
+
export const PAT_KEY_PREFIX = "dobby_pat_";
|
|
18
|
+
/** Classify an API key / bearer token by prefix into its key family. */
|
|
19
|
+
export function classifyKeyType(key) {
|
|
20
|
+
if (!key)
|
|
21
|
+
return "none";
|
|
22
|
+
if (GATEWAY_KEY_PREFIXES.some((p) => key.startsWith(p)))
|
|
23
|
+
return "gateway";
|
|
24
|
+
if (key.startsWith(TENANT_KEY_PREFIX))
|
|
25
|
+
return "tenant";
|
|
26
|
+
if (key.startsWith(PAT_KEY_PREFIX))
|
|
27
|
+
return "pat";
|
|
28
|
+
return "unknown";
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/lib/consts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAI3C,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,GAA8B;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IACxB,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -3,11 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Client for communicating with the Dobby API from the MCP server.
|
|
5
5
|
*/
|
|
6
|
-
import { z } from
|
|
6
|
+
import { z } from "zod";
|
|
7
7
|
export interface DobbyClientConfig {
|
|
8
8
|
apiUrl: string;
|
|
9
9
|
apiKey: string;
|
|
10
10
|
tenantId: string;
|
|
11
|
+
organizationId?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Static gateway key (gk_*) for gateway-scoped endpoints — STDIO mode
|
|
14
|
+
* (DOBBY_GATEWAY_KEY, or auto-detected when the API key is itself gk_*).
|
|
15
|
+
*/
|
|
16
|
+
gatewayKey?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Lazy gateway-key provider — HTTP mode. Resolves a tenant+user-bound
|
|
19
|
+
* gk_tmp_* key server-side from the session token (memoized per session by
|
|
20
|
+
* the caller). Takes precedence over `gatewayKey`.
|
|
21
|
+
*/
|
|
22
|
+
getGatewayKey?: () => Promise<string | undefined>;
|
|
11
23
|
}
|
|
12
24
|
export declare const TaskSchema: z.ZodObject<{
|
|
13
25
|
task_id: z.ZodString;
|
|
@@ -145,17 +157,36 @@ export declare class DobbyClient {
|
|
|
145
157
|
get apiKey(): string;
|
|
146
158
|
/** Tenant ID for scoped requests */
|
|
147
159
|
get tenantId(): string;
|
|
160
|
+
/** Organization ID for org-scoped requests (e.g. memory stores) */
|
|
161
|
+
get organizationId(): string | undefined;
|
|
162
|
+
/** Static gateway key (gk_*), if configured — STDIO mode */
|
|
163
|
+
get gatewayKey(): string | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* Bearer credential for GATEWAY-scoped endpoints (routes guarded by
|
|
166
|
+
* authenticateGatewayRequest hard-require a gk_* key — the tenant apiKey is
|
|
167
|
+
* NOT one for OAuth/sk_live_ sessions).
|
|
168
|
+
*
|
|
169
|
+
* Precedence: lazy provider (HTTP mode, resolved server-side from the
|
|
170
|
+
* session token) > static gatewayKey (STDIO) > apiKey (legacy fallback —
|
|
171
|
+
* only works when the API key is itself a gk_*).
|
|
172
|
+
*/
|
|
173
|
+
gatewayBearer(): Promise<string>;
|
|
148
174
|
private fetch;
|
|
175
|
+
request<T = any>(endpoint: string, options?: RequestInit): Promise<T>;
|
|
176
|
+
get<T = any>(endpoint: string): Promise<T>;
|
|
177
|
+
post<T = any>(endpoint: string, body?: unknown): Promise<T>;
|
|
178
|
+
delete<T = any>(endpoint: string): Promise<T>;
|
|
149
179
|
listTasks(options?: {
|
|
150
180
|
status?: string;
|
|
151
181
|
priority?: string;
|
|
182
|
+
assigned_to?: string;
|
|
152
183
|
limit?: number;
|
|
153
184
|
}): Promise<Task[]>;
|
|
154
185
|
getTask(taskId: string): Promise<Task | null>;
|
|
155
186
|
createTask(data: {
|
|
156
187
|
title: string;
|
|
157
188
|
description?: string;
|
|
158
|
-
priority?:
|
|
189
|
+
priority?: "high" | "medium" | "low";
|
|
159
190
|
link_to_task_id?: string;
|
|
160
191
|
}): Promise<{
|
|
161
192
|
task_id: string;
|
|
@@ -196,8 +227,34 @@ export declare class DobbyClient {
|
|
|
196
227
|
message?: string;
|
|
197
228
|
}>;
|
|
198
229
|
listServices(options?: {
|
|
199
|
-
category?:
|
|
230
|
+
category?: "all" | "llm" | "mcp_tools" | "mcp_servers" | "managed_services";
|
|
200
231
|
}): Promise<any>;
|
|
232
|
+
createSchedule(data: {
|
|
233
|
+
name: string;
|
|
234
|
+
task_title: string;
|
|
235
|
+
task_description: string;
|
|
236
|
+
task_priority?: string;
|
|
237
|
+
schedule_type: string;
|
|
238
|
+
schedule_config?: {
|
|
239
|
+
frequency: string;
|
|
240
|
+
time: string;
|
|
241
|
+
timezone: string;
|
|
242
|
+
dayOfWeek?: number;
|
|
243
|
+
dayOfMonth?: number;
|
|
244
|
+
};
|
|
245
|
+
schedule_at?: string;
|
|
246
|
+
overlap_policy?: string;
|
|
247
|
+
}): Promise<any>;
|
|
248
|
+
listSchedules(options?: {
|
|
249
|
+
enabled_only?: boolean;
|
|
250
|
+
limit?: number;
|
|
251
|
+
}): Promise<any>;
|
|
252
|
+
pauseSchedule(data: {
|
|
253
|
+
schedule_id: string;
|
|
254
|
+
action: string;
|
|
255
|
+
reason?: string;
|
|
256
|
+
}): Promise<any>;
|
|
257
|
+
deleteSchedule(scheduleId: string): Promise<any>;
|
|
201
258
|
checkHealth(): Promise<boolean>;
|
|
202
259
|
}
|
|
203
260
|
export declare function createDobbyClient(config?: Partial<DobbyClientConfig>): DobbyClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dobby-client.d.ts","sourceRoot":"","sources":["../../src/lib/dobby-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"dobby-client.d.ts","sourceRoot":"","sources":["../../src/lib/dobby-client.ts"],"names":[],"mappings":"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"}
|