mcp-filter 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +23 -13
  3. package/dist/index.js +0 -0
  4. package/dist/logger.d.ts.map +1 -1
  5. package/dist/logger.js +3 -1
  6. package/dist/logger.js.map +1 -1
  7. package/package.json +10 -9
  8. package/dist/core/config-loader.d.ts +0 -22
  9. package/dist/core/config-loader.d.ts.map +0 -1
  10. package/dist/core/config-loader.js +0 -308
  11. package/dist/core/config-loader.js.map +0 -1
  12. package/dist/core/config-schema.d.ts +0 -1363
  13. package/dist/core/config-schema.d.ts.map +0 -1
  14. package/dist/core/config-schema.js +0 -139
  15. package/dist/core/config-schema.js.map +0 -1
  16. package/dist/core/server-manager.d.ts +0 -51
  17. package/dist/core/server-manager.d.ts.map +0 -1
  18. package/dist/core/server-manager.js +0 -149
  19. package/dist/core/server-manager.js.map +0 -1
  20. package/dist/features/discovery/config-init.d.ts +0 -37
  21. package/dist/features/discovery/config-init.d.ts.map +0 -1
  22. package/dist/features/discovery/config-init.js +0 -95
  23. package/dist/features/discovery/config-init.js.map +0 -1
  24. package/dist/features/discovery/discovery-handler.d.ts +0 -128
  25. package/dist/features/discovery/discovery-handler.d.ts.map +0 -1
  26. package/dist/features/discovery/discovery-handler.js +0 -629
  27. package/dist/features/discovery/discovery-handler.js.map +0 -1
  28. package/dist/features/discovery/initialization.d.ts +0 -126
  29. package/dist/features/discovery/initialization.d.ts.map +0 -1
  30. package/dist/features/discovery/initialization.js +0 -314
  31. package/dist/features/discovery/initialization.js.map +0 -1
  32. package/dist/features/discovery/search-phase.d.ts +0 -19
  33. package/dist/features/discovery/search-phase.d.ts.map +0 -1
  34. package/dist/features/discovery/search-phase.js +0 -76
  35. package/dist/features/discovery/search-phase.js.map +0 -1
  36. package/dist/features/discovery/simple-rag.d.ts +0 -30
  37. package/dist/features/discovery/simple-rag.d.ts.map +0 -1
  38. package/dist/features/discovery/simple-rag.js +0 -85
  39. package/dist/features/discovery/simple-rag.js.map +0 -1
  40. package/dist/features/filtering/filter.d.ts +0 -18
  41. package/dist/features/filtering/filter.d.ts.map +0 -1
  42. package/dist/features/filtering/filter.js +0 -43
  43. package/dist/features/filtering/filter.js.map +0 -1
  44. package/dist/features/overrides/override-manager.d.ts +0 -25
  45. package/dist/features/overrides/override-manager.d.ts.map +0 -1
  46. package/dist/features/overrides/override-manager.js +0 -67
  47. package/dist/features/overrides/override-manager.js.map +0 -1
  48. package/dist/utils/debug-logger.d.ts +0 -2
  49. package/dist/utils/debug-logger.d.ts.map +0 -1
  50. package/dist/utils/debug-logger.js +0 -33
  51. package/dist/utils/debug-logger.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAOf,CAAC;AAEjB,eAAO,MAAM,aAAa;;;;;;;;;gCAGV,CAAC;AAGjB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpC,CAAC;AAGF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsBlB,CAAC;AAEjB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;gCAIlB,CAAC;AAEjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,OAAO,GACjB,sBAAsB,CA8DxB"}
@@ -1,139 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Zod schemas for validating .mcp-filter.json config file
4
- */
5
- export const ToolOverrideSchema = z.object({
6
- description: z.string().optional(),
7
- fullDescription: z.string().optional(),
8
- brief: z.string().optional(),
9
- argumentOverrides: z.record(z.string(), z.object({
10
- description: z.string(),
11
- })).optional(),
12
- }).passthrough();
13
- export const FiltersSchema = z.object({
14
- include: z.array(z.string()).optional(),
15
- exclude: z.array(z.string()).optional(),
16
- }).passthrough();
17
- // Cursor-compatible server config schema
18
- export const CursorServerConfigSchema = z.object({
19
- // Stdio transport (matches Cursor format)
20
- command: z.string().optional(),
21
- args: z.array(z.string()).optional(),
22
- env: z.record(z.string(), z.string()).optional(),
23
- // HTTP/SSE transport (matches Cursor format)
24
- url: z.string().url().optional(),
25
- headers: z.record(z.string(), z.string()).optional(),
26
- // mcp-filter extensions
27
- enabled: z.boolean().optional(),
28
- filters: FiltersSchema.optional(),
29
- toolOverrides: z.record(z.string(), ToolOverrideSchema).optional(),
30
- initialized: z.boolean().optional(),
31
- }).refine((data) => {
32
- // Must have either command (stdio) or url (HTTP/SSE), but not both
33
- const hasCommand = !!data.command;
34
- const hasUrl = !!data.url;
35
- return hasCommand !== hasUrl; // XOR: exactly one must be true
36
- }, {
37
- message: "Server config must have either 'command' (for stdio) or 'url' (for HTTP/SSE), but not both",
38
- });
39
- // Old format server config schema (backward compatibility)
40
- export const OldServerConfigSchema = z.object({
41
- enabled: z.boolean().optional(),
42
- transport: z.union([
43
- z.object({
44
- type: z.literal("stdio"),
45
- command: z.array(z.string()).min(1),
46
- env: z.record(z.string(), z.string()).optional(),
47
- }),
48
- z.object({
49
- type: z.literal("http"),
50
- url: z.string().url(),
51
- headers: z.record(z.string(), z.string()).optional(),
52
- }),
53
- z.object({
54
- type: z.literal("sse"),
55
- url: z.string().url(),
56
- headers: z.record(z.string(), z.string()).optional(),
57
- }),
58
- ]),
59
- filters: FiltersSchema.optional(),
60
- toolOverrides: z.record(z.string(), ToolOverrideSchema).optional(),
61
- initialized: z.boolean().optional(),
62
- }).passthrough();
63
- export const DiscoveryConfigSchema = z.object({
64
- enabled: z.boolean().optional(),
65
- searchMode: z.enum(["phase", "rag", "both"]).optional(),
66
- ragEnabled: z.boolean().optional(),
67
- }).passthrough();
68
- export const ConfigFileSchema = z.object({
69
- version: z.string().optional(),
70
- mcpServers: z.record(z.string(), CursorServerConfigSchema).optional(),
71
- servers: z.record(z.string(), OldServerConfigSchema).optional(),
72
- discovery: DiscoveryConfigSchema.optional(),
73
- }).refine((data) => {
74
- // Must have at least one of mcpServers or servers
75
- return !!(data.mcpServers || data.servers);
76
- }, {
77
- message: "Config file must have either 'mcpServers' or 'servers' object",
78
- path: ["mcpServers"], // Error path for better UX
79
- });
80
- /**
81
- * Validate config file with Zod, but don't throw - return errors
82
- */
83
- export function validateConfigWithZod(rawConfig) {
84
- const result = ConfigFileSchema.safeParse(rawConfig);
85
- if (result.success) {
86
- return {
87
- valid: true,
88
- config: result.data,
89
- };
90
- }
91
- // Format errors for LLM-friendly display with better field paths and type information
92
- const formattedErrors = result.error.errors.map((err) => {
93
- // Build field path (e.g., "mcpServers.server1.url")
94
- const path = err.path.length > 0 ? err.path.join(".") : "root";
95
- let message = `${path}: ${err.message}`;
96
- // Add helpful context for common errors
97
- if (err.code === "invalid_type") {
98
- message += ` (expected ${err.expected}, got ${err.received})`;
99
- }
100
- if (err.code === "invalid_enum_value") {
101
- message += ` (allowed values: ${err.options?.join(", ")})`;
102
- }
103
- if (err.code === "invalid_string") {
104
- if (err.validation === "url") {
105
- message += ` (must be a valid URL)`;
106
- }
107
- else if (err.validation === "email") {
108
- message += ` (must be a valid email)`;
109
- }
110
- }
111
- if (err.code === "too_small") {
112
- if (err.type === "array") {
113
- message += ` (array must have at least ${err.minimum} element(s))`;
114
- }
115
- else if (err.type === "string") {
116
- message += ` (string must be at least ${err.minimum} character(s))`;
117
- }
118
- }
119
- if (err.code === "too_big") {
120
- if (err.type === "array") {
121
- message += ` (array must have at most ${err.maximum} element(s))`;
122
- }
123
- else if (err.type === "string") {
124
- message += ` (string must be at most ${err.maximum} character(s))`;
125
- }
126
- }
127
- // Add custom message from refine if available
128
- if (err.code === "custom" && err.message) {
129
- message = `${path}: ${err.message}`;
130
- }
131
- return message;
132
- });
133
- return {
134
- valid: false,
135
- errors: result.error,
136
- formattedErrors,
137
- };
138
- }
139
- //# sourceMappingURL=config-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/core/config-schema.ts"],"names":[],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
- import { ServerConfig } from "../types.js";
3
- import { Filter } from "../features/filtering/filter.js";
4
- import { OverrideManager } from "../features/overrides/override-manager.js";
5
- import { InitializationTracker } from "../features/discovery/initialization.js";
6
- export interface ManagedServer {
7
- id: string;
8
- config: ServerConfig;
9
- client: Client;
10
- filter: Filter;
11
- overrides: OverrideManager;
12
- connected: boolean;
13
- }
14
- /**
15
- * Manages multiple upstream MCP servers
16
- */
17
- export declare class ServerManager {
18
- private servers;
19
- private initializationTracker;
20
- private overrideManager;
21
- constructor(initializationTracker: InitializationTracker, overrideManager: OverrideManager);
22
- /**
23
- * Add a server configuration
24
- */
25
- addServer(id: string, config: ServerConfig): void;
26
- /**
27
- * Connect to a server
28
- */
29
- connectServer(id: string): Promise<void>;
30
- /**
31
- * Get a managed server
32
- */
33
- getServer(id: string): ManagedServer | undefined;
34
- /**
35
- * Get all managed servers
36
- */
37
- getAllServers(): ManagedServer[];
38
- /**
39
- * Get enabled servers
40
- */
41
- getEnabledServers(): ManagedServer[];
42
- /**
43
- * Disconnect from a server
44
- */
45
- disconnectServer(id: string): Promise<void>;
46
- /**
47
- * Disconnect from all servers
48
- */
49
- disconnectAll(): Promise<void>;
50
- }
51
- //# sourceMappingURL=server-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../../src/core/server-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,eAAe,CAAkB;gBAGvC,qBAAqB,EAAE,qBAAqB,EAC5C,eAAe,EAAE,eAAe;IAMlC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAgCjD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4D9C;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD;;OAEG;IACH,aAAa,IAAI,aAAa,EAAE;IAIhC;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAMpC;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAQrC"}
@@ -1,149 +0,0 @@
1
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
- import { createClientTransport } from "../transport.js";
3
- import { Filter } from "../features/filtering/filter.js";
4
- import { logger } from "../logger.js";
5
- /**
6
- * Manages multiple upstream MCP servers
7
- */
8
- export class ServerManager {
9
- servers = new Map();
10
- initializationTracker;
11
- overrideManager;
12
- constructor(initializationTracker, overrideManager) {
13
- this.initializationTracker = initializationTracker;
14
- this.overrideManager = overrideManager;
15
- }
16
- /**
17
- * Add a server configuration
18
- */
19
- addServer(id, config) {
20
- if (this.servers.has(id)) {
21
- throw new Error(`Server '${id}' already exists`);
22
- }
23
- const filter = Filter.fromConfig(config.filters);
24
- const client = new Client({
25
- name: `mcp-filter-client-${id}`,
26
- version: "0.6.0",
27
- }, {
28
- capabilities: {},
29
- });
30
- // Load overrides for this server
31
- this.overrideManager.loadOverrides(id, config);
32
- const managedServer = {
33
- id,
34
- config,
35
- client,
36
- filter,
37
- overrides: this.overrideManager,
38
- connected: false,
39
- };
40
- this.servers.set(id, managedServer);
41
- logger.info(`Added server configuration: ${id}`);
42
- }
43
- /**
44
- * Connect to a server
45
- */
46
- async connectServer(id) {
47
- // #region agent log
48
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:72', message: 'connectServer called', data: { serverId: id, serverExists: !!this.servers.get(id), alreadyConnected: this.servers.get(id)?.connected, isInitialized: this.initializationTracker.isInitialized(id) }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
49
- // #endregion
50
- const server = this.servers.get(id);
51
- if (!server) {
52
- // #region agent log
53
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:75', message: 'server not found', data: { serverId: id }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
54
- // #endregion
55
- throw new Error(`Server '${id}' not found`);
56
- }
57
- if (server.connected) {
58
- // Verify connection is still valid by checking if initialized
59
- if (this.initializationTracker.isInitialized(id)) {
60
- // #region agent log
61
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:81', message: 'server already connected and initialized', data: { serverId: id }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
62
- // #endregion
63
- logger.info(`Server '${id}' already connected`);
64
- return;
65
- }
66
- // Server marked as connected but not initialized - reset and reconnect
67
- // #region agent log
68
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:85', message: 'server connected but not initialized, resetting', data: { serverId: id }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'C' }) }).catch(() => { });
69
- // #endregion
70
- logger.warn(`Server '${id}' marked as connected but not initialized, reconnecting...`);
71
- try {
72
- await server.client.close();
73
- }
74
- catch {
75
- // Ignore close errors
76
- }
77
- server.connected = false;
78
- }
79
- // #region agent log
80
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:93', message: 'creating transport and connecting', data: { serverId: id, transportType: server.config.transport.type }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
81
- // #endregion
82
- const transport = createClientTransport(server.config.transport);
83
- try {
84
- await server.client.connect(transport);
85
- // #region agent log
86
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:96', message: 'client.connect succeeded', data: { serverId: id }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
87
- // #endregion
88
- server.connected = true;
89
- // #region agent log
90
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:98', message: 'marking as initialized', data: { serverId: id, beforeMark: this.initializationTracker.isInitialized(id) }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'C' }) }).catch(() => { });
91
- // #endregion
92
- this.initializationTracker.markInitialized(id);
93
- // #region agent log
94
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:100', message: 'marked as initialized', data: { serverId: id, afterMark: this.initializationTracker.isInitialized(id) }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'C' }) }).catch(() => { });
95
- // #endregion
96
- logger.success(`Connected to server: ${id}`);
97
- }
98
- catch (error) {
99
- // #region agent log
100
- fetch('http://127.0.0.1:7243/ingest/198b6a8b-7e4f-4c81-a922-32b1e2e171c8', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ location: 'server-manager.ts:103', message: 'client.connect failed', data: { serverId: id, errorMessage: error instanceof Error ? error.message : String(error), errorStack: error instanceof Error ? error.stack : undefined }, timestamp: Date.now(), sessionId: 'debug-session', runId: 'run1', hypothesisId: 'B' }) }).catch(() => { });
101
- // #endregion
102
- throw error;
103
- }
104
- }
105
- /**
106
- * Get a managed server
107
- */
108
- getServer(id) {
109
- return this.servers.get(id);
110
- }
111
- /**
112
- * Get all managed servers
113
- */
114
- getAllServers() {
115
- return Array.from(this.servers.values());
116
- }
117
- /**
118
- * Get enabled servers
119
- */
120
- getEnabledServers() {
121
- return this.getAllServers().filter((server) => server.config.enabled !== false);
122
- }
123
- /**
124
- * Disconnect from a server
125
- */
126
- async disconnectServer(id) {
127
- const server = this.servers.get(id);
128
- if (!server) {
129
- return;
130
- }
131
- if (server.connected) {
132
- await server.client.close();
133
- server.connected = false;
134
- logger.info(`Disconnected from server: ${id}`);
135
- }
136
- }
137
- /**
138
- * Disconnect from all servers
139
- */
140
- async disconnectAll() {
141
- for (const server of this.servers.values()) {
142
- if (server.connected) {
143
- await server.client.close();
144
- server.connected = false;
145
- }
146
- }
147
- }
148
- }
149
- //# sourceMappingURL=server-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../src/core/server-manager.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { TransportConfig } from "../../types.js";
2
- /**
3
- * Handles initialization and creation of config file
4
- */
5
- export declare class ConfigInitializer {
6
- /**
7
- * Convert internal TransportConfig to Cursor format
8
- */
9
- private convertTransportToCursorFormat;
10
- /**
11
- * Create or update config file from discovered servers (in Cursor format)
12
- */
13
- initConfig(configPath: string, servers: Array<{
14
- id: string;
15
- transport: TransportConfig;
16
- filters?: {
17
- include?: string[];
18
- exclude?: string[];
19
- };
20
- enabled?: boolean;
21
- }>): Promise<{
22
- success: boolean;
23
- path: string;
24
- serversCreated: number;
25
- }>;
26
- /**
27
- * Create config file from CLI usage (for migration)
28
- */
29
- initConfigFromCLI(configPath: string, transport: TransportConfig, patterns: Array<{
30
- type: "include" | "exclude";
31
- pattern: string;
32
- }>): Promise<{
33
- success: boolean;
34
- path: string;
35
- }>;
36
- }
37
- //# sourceMappingURL=config-init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-init.d.ts","sourceRoot":"","sources":["../../../src/features/discovery/config-init.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AAG/F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAoBtC;;OAEG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,eAAe,CAAC;QAC3B,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACrD,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,GACD,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAyCtE;;OAEG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAChE,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAqB/C"}
@@ -1,95 +0,0 @@
1
- import { writeFileSync } from "fs";
2
- import { resolve } from "path";
3
- import { logger } from "../../logger.js";
4
- /**
5
- * Handles initialization and creation of config file
6
- */
7
- export class ConfigInitializer {
8
- /**
9
- * Convert internal TransportConfig to Cursor format
10
- */
11
- convertTransportToCursorFormat(transport) {
12
- if (transport.type === "stdio") {
13
- const stdioTransport = transport;
14
- const [command, ...args] = stdioTransport.command;
15
- return {
16
- command,
17
- args: args.length > 0 ? args : undefined,
18
- env: stdioTransport.env,
19
- };
20
- }
21
- else if (transport.type === "http" || transport.type === "sse") {
22
- const httpTransport = transport;
23
- return {
24
- url: httpTransport.url,
25
- headers: httpTransport.headers,
26
- };
27
- }
28
- const _exhaustive = transport;
29
- throw new Error(`Unsupported transport type: ${_exhaustive.type}`);
30
- }
31
- /**
32
- * Create or update config file from discovered servers (in Cursor format)
33
- */
34
- async initConfig(configPath, servers) {
35
- const fullPath = resolve(process.cwd(), configPath);
36
- // Build config file structure in Cursor format
37
- const config = {
38
- version: "1.0",
39
- mcpServers: {},
40
- discovery: {
41
- enabled: true,
42
- searchMode: "phase",
43
- ragEnabled: false,
44
- },
45
- };
46
- // Add servers to config in Cursor format
47
- for (const server of servers) {
48
- const cursorConfig = {
49
- enabled: server.enabled !== false,
50
- filters: server.filters,
51
- initialized: false,
52
- ...this.convertTransportToCursorFormat(server.transport),
53
- };
54
- config.mcpServers[server.id] = cursorConfig;
55
- }
56
- // Write config file
57
- try {
58
- writeFileSync(fullPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
59
- logger.info(`Created config file: ${fullPath}`);
60
- return {
61
- success: true,
62
- path: fullPath,
63
- serversCreated: servers.length,
64
- };
65
- }
66
- catch (error) {
67
- throw new Error(`Failed to write config file to ${fullPath}: ${error}`);
68
- }
69
- }
70
- /**
71
- * Create config file from CLI usage (for migration)
72
- */
73
- async initConfigFromCLI(configPath, transport, patterns) {
74
- const filters = {};
75
- for (const pattern of patterns) {
76
- if (pattern.type === "include") {
77
- filters.include = filters.include || [];
78
- filters.include.push(pattern.pattern);
79
- }
80
- else {
81
- filters.exclude = filters.exclude || [];
82
- filters.exclude.push(pattern.pattern);
83
- }
84
- }
85
- return await this.initConfig(configPath, [
86
- {
87
- id: "default",
88
- transport,
89
- filters: Object.keys(filters).length > 0 ? filters : undefined,
90
- enabled: true,
91
- },
92
- ]);
93
- }
94
- }
95
- //# sourceMappingURL=config-init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-init.js","sourceRoot":"","sources":["../../../src/features/discovery/config-init.ts"],"names":[],"mappings":"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"}
@@ -1,128 +0,0 @@
1
- import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
- import { ServerManager } from "../../core/server-manager.js";
3
- import { InitializationTracker } from "./initialization.js";
4
- import { OverrideManager } from "../overrides/override-manager.js";
5
- import { ConfigValidationResult } from "../../core/config-schema.js";
6
- export interface DiscoverToolsParams {
7
- query?: string;
8
- serverId?: string;
9
- initialized?: boolean;
10
- limit?: number;
11
- }
12
- export interface DiscoveredTool {
13
- name: string;
14
- serverId: string;
15
- description: string;
16
- initialized: boolean;
17
- arguments?: Array<{
18
- name: string;
19
- description: string;
20
- }>;
21
- }
22
- export interface DiscoverToolsResponse {
23
- tools: DiscoveredTool[];
24
- servers: Array<{
25
- id: string;
26
- initialized: boolean;
27
- toolCount: number;
28
- short_description?: string;
29
- methodNames?: string[];
30
- }>;
31
- summary?: {
32
- totalTools: number;
33
- searchEnabled: boolean;
34
- message: string;
35
- };
36
- }
37
- /**
38
- * Handles discovery-related MCP methods
39
- */
40
- export declare class DiscoveryHandler {
41
- private serverManager;
42
- private initializationTracker;
43
- private overrideManager;
44
- private searchPhase;
45
- private simpleRAG;
46
- private configInitializer;
47
- private validationErrors?;
48
- constructor(serverManager: ServerManager, initializationTracker: InitializationTracker, overrideManager: OverrideManager, validationErrors?: ConfigValidationResult);
49
- /**
50
- * Register discovery methods with the MCP server
51
- */
52
- registerHandlers(server: Server): void;
53
- /**
54
- * Call a specific tool from an upstream MCP server
55
- */
56
- callTool(params: {
57
- toolName: string;
58
- toolArguments?: Record<string, any>;
59
- serverId?: string;
60
- }): Promise<any>;
61
- /**
62
- * Discover tools across all configured servers
63
- */
64
- discoverTools(params: DiscoverToolsParams): Promise<DiscoverToolsResponse>;
65
- /**
66
- * Single unified method: returns initialization instructions if not initialized,
67
- * or returns tool summaries from config if initialized
68
- */
69
- init(configPath?: string, servers?: Array<{
70
- id: string;
71
- transport: any;
72
- filters?: {
73
- include?: string[];
74
- exclude?: string[];
75
- };
76
- enabled?: boolean;
77
- }>): Promise<{
78
- initialized: false;
79
- instructions: {
80
- summary: string;
81
- role?: string;
82
- goal?: string;
83
- context?: string;
84
- servers?: string[];
85
- steps: Array<{
86
- step: number;
87
- action: string;
88
- reason?: string;
89
- note?: string;
90
- }>;
91
- important: string;
92
- validationErrors?: {
93
- message: string;
94
- errors: string[];
95
- help: string;
96
- };
97
- toolOverrides?: {
98
- note: string;
99
- example: string;
100
- };
101
- };
102
- } | {
103
- initialized: true;
104
- summary: {
105
- totalTools: number;
106
- connectedServers: Array<{
107
- id: string;
108
- short_description?: string;
109
- toolCount: number;
110
- methodNames?: string[];
111
- }>;
112
- erroredServers: Array<{
113
- id: string;
114
- short_description?: string;
115
- error?: string;
116
- }>;
117
- };
118
- descriptionPrompt: {
119
- role: string;
120
- goal: string;
121
- context: string;
122
- examples: string[];
123
- };
124
- searchEnabled: boolean;
125
- message: string;
126
- }>;
127
- }
128
- //# sourceMappingURL=discovery-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery-handler.d.ts","sourceRoot":"","sources":["../../../src/features/discovery/discovery-handler.ts"],"names":[],"mappings":"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"}