indusagi 0.12.12 → 0.12.15
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.md +22 -0
- package/dist/agent/tools/registry.d.ts +1 -1
- package/dist/agent/tools/registry.d.ts.map +1 -1
- package/dist/agent/types.d.ts +1 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/ai/models.generated.d.ts +621 -53
- package/dist/ai/models.generated.d.ts.map +1 -1
- package/dist/ai/models.generated.js +553 -5
- package/dist/ai/models.generated.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/client-pool.d.ts +106 -0
- package/dist/mcp/client-pool.d.ts.map +1 -0
- package/dist/mcp/client-pool.js +233 -0
- package/dist/mcp/client-pool.js.map +1 -0
- package/dist/mcp/client.d.ts +158 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +586 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +61 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +250 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/errors.d.ts +104 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +138 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/index.d.ts +56 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +83 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/schema-converter.d.ts +68 -0
- package/dist/mcp/schema-converter.d.ts.map +1 -0
- package/dist/mcp/schema-converter.js +230 -0
- package/dist/mcp/schema-converter.js.map +1 -0
- package/dist/mcp/server.d.ts +111 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +300 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tool-factory.d.ts +63 -0
- package/dist/mcp/tool-factory.d.ts.map +1 -0
- package/dist/mcp/tool-factory.js +228 -0
- package/dist/mcp/tool-factory.js.map +1 -0
- package/dist/mcp/types.d.ts +289 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +8 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mcp.d.ts +6 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +6 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory/embedder/base.d.ts +41 -0
- package/dist/memory/embedder/base.d.ts.map +1 -0
- package/dist/memory/embedder/base.js +10 -0
- package/dist/memory/embedder/base.js.map +1 -0
- package/dist/memory/embedder/index.d.ts +8 -0
- package/dist/memory/embedder/index.d.ts.map +1 -0
- package/dist/memory/embedder/index.js +6 -0
- package/dist/memory/embedder/index.js.map +1 -0
- package/dist/memory/embedder/openai.d.ts +35 -0
- package/dist/memory/embedder/openai.d.ts.map +1 -0
- package/dist/memory/embedder/openai.js +103 -0
- package/dist/memory/embedder/openai.js.map +1 -0
- package/dist/memory/index.d.ts +33 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +31 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory.d.ts +126 -0
- package/dist/memory/memory.d.ts.map +1 -0
- package/dist/memory/memory.js +280 -0
- package/dist/memory/memory.js.map +1 -0
- package/dist/memory/processors/base.d.ts +42 -0
- package/dist/memory/processors/base.d.ts.map +1 -0
- package/dist/memory/processors/base.js +6 -0
- package/dist/memory/processors/base.js.map +1 -0
- package/dist/memory/processors/index.d.ts +16 -0
- package/dist/memory/processors/index.d.ts.map +1 -0
- package/dist/memory/processors/index.js +18 -0
- package/dist/memory/processors/index.js.map +1 -0
- package/dist/memory/processors/message-history.d.ts +35 -0
- package/dist/memory/processors/message-history.d.ts.map +1 -0
- package/dist/memory/processors/message-history.js +51 -0
- package/dist/memory/processors/message-history.js.map +1 -0
- package/dist/memory/processors/observational-memory/index.d.ts +82 -0
- package/dist/memory/processors/observational-memory/index.d.ts.map +1 -0
- package/dist/memory/processors/observational-memory/index.js +234 -0
- package/dist/memory/processors/observational-memory/index.js.map +1 -0
- package/dist/memory/processors/observational-memory/observer-agent.d.ts +64 -0
- package/dist/memory/processors/observational-memory/observer-agent.d.ts.map +1 -0
- package/dist/memory/processors/observational-memory/observer-agent.js +362 -0
- package/dist/memory/processors/observational-memory/observer-agent.js.map +1 -0
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts +38 -0
- package/dist/memory/processors/observational-memory/reflector-agent.d.ts.map +1 -0
- package/dist/memory/processors/observational-memory/reflector-agent.js +213 -0
- package/dist/memory/processors/observational-memory/reflector-agent.js.map +1 -0
- package/dist/memory/processors/observational-memory/token-counter.d.ts +35 -0
- package/dist/memory/processors/observational-memory/token-counter.d.ts.map +1 -0
- package/dist/memory/processors/observational-memory/token-counter.js +90 -0
- package/dist/memory/processors/observational-memory/token-counter.js.map +1 -0
- package/dist/memory/processors/semantic-recall.d.ts +55 -0
- package/dist/memory/processors/semantic-recall.d.ts.map +1 -0
- package/dist/memory/processors/semantic-recall.js +143 -0
- package/dist/memory/processors/semantic-recall.js.map +1 -0
- package/dist/memory/processors/working-memory.d.ts +41 -0
- package/dist/memory/processors/working-memory.d.ts.map +1 -0
- package/dist/memory/processors/working-memory.js +82 -0
- package/dist/memory/processors/working-memory.js.map +1 -0
- package/dist/memory/storage/base.d.ts +288 -0
- package/dist/memory/storage/base.d.ts.map +1 -0
- package/dist/memory/storage/base.js +211 -0
- package/dist/memory/storage/base.js.map +1 -0
- package/dist/memory/storage/index.d.ts +9 -0
- package/dist/memory/storage/index.d.ts.map +1 -0
- package/dist/memory/storage/index.js +7 -0
- package/dist/memory/storage/index.js.map +1 -0
- package/dist/memory/storage/inmemory.d.ts +93 -0
- package/dist/memory/storage/inmemory.d.ts.map +1 -0
- package/dist/memory/storage/inmemory.js +646 -0
- package/dist/memory/storage/inmemory.js.map +1 -0
- package/dist/memory/tools/working-memory.d.ts +100 -0
- package/dist/memory/tools/working-memory.d.ts.map +1 -0
- package/dist/memory/tools/working-memory.js +237 -0
- package/dist/memory/tools/working-memory.js.map +1 -0
- package/dist/memory/types.d.ts +386 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +58 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/vector/base.d.ts +145 -0
- package/dist/memory/vector/base.d.ts.map +1 -0
- package/dist/memory/vector/base.js +83 -0
- package/dist/memory/vector/base.js.map +1 -0
- package/dist/memory/vector/index.d.ts +8 -0
- package/dist/memory/vector/index.d.ts.map +1 -0
- package/dist/memory/vector/index.js +7 -0
- package/dist/memory/vector/index.js.map +1 -0
- package/dist/memory/vector/inmemory.d.ts +47 -0
- package/dist/memory/vector/inmemory.d.ts.map +1 -0
- package/dist/memory/vector/inmemory.js +234 -0
- package/dist/memory/vector/inmemory.js.map +1 -0
- package/package.json +32 -2
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Configuration Loading
|
|
3
|
+
*
|
|
4
|
+
* Loads MCP server configurations from XDG-compliant paths:
|
|
5
|
+
* - Project: ./.indusagi/mcp.json
|
|
6
|
+
* - User: ~/.config/indusagi/mcp.json (XDG)
|
|
7
|
+
* - Legacy: ~/.indusagi/agent/mcp.json
|
|
8
|
+
*
|
|
9
|
+
* Reference: @mastra/mcp configuration patterns
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync, mkdirSync } from "fs";
|
|
12
|
+
import { join, dirname } from "path";
|
|
13
|
+
import { homedir } from "os";
|
|
14
|
+
import { MCPError, MCPErrorCode } from "./errors.js";
|
|
15
|
+
/**
|
|
16
|
+
* Load MCP configuration from all sources.
|
|
17
|
+
*
|
|
18
|
+
* If a specific file path is provided, loads from that file directly.
|
|
19
|
+
* Otherwise merges configurations from:
|
|
20
|
+
* 1. Project-level config: ./.indusagi/mcp.json
|
|
21
|
+
* 2. User-level (XDG): ~/.config/indusagi/mcp.json
|
|
22
|
+
* 3. Legacy: ~/.indusagi/agent/mcp.json or ~/.indusagi/agent/mcp-servers.json
|
|
23
|
+
*
|
|
24
|
+
* @param configPathOrCwd - Either a specific config file path, or a working directory
|
|
25
|
+
* @returns Array of MCP connection options
|
|
26
|
+
*/
|
|
27
|
+
export function loadMCPConfig(configPathOrCwd = process.cwd()) {
|
|
28
|
+
const configs = [];
|
|
29
|
+
// Check if the path is a specific config file (exists and is a file, not directory)
|
|
30
|
+
if (existsSync(configPathOrCwd)) {
|
|
31
|
+
try {
|
|
32
|
+
const stats = require("fs").statSync(configPathOrCwd);
|
|
33
|
+
if (stats.isFile()) {
|
|
34
|
+
const fileConfigs = parseConfigFile(configPathOrCwd);
|
|
35
|
+
configs.push(...fileConfigs);
|
|
36
|
+
return configs;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Not a valid file, continue with directory-based loading
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const cwd = configPathOrCwd;
|
|
44
|
+
// 1. Project-level config: ./.indusagi/mcp.json
|
|
45
|
+
const projectConfig = join(cwd, ".indusagi", "mcp.json");
|
|
46
|
+
if (existsSync(projectConfig)) {
|
|
47
|
+
try {
|
|
48
|
+
const projectConfigs = parseConfigFile(projectConfig);
|
|
49
|
+
configs.push(...projectConfigs);
|
|
50
|
+
console.log(`[MCP] Loaded ${projectConfigs.length} servers from project config`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error(`[MCP] Error loading project config:`, error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// 2. User-level config: ~/.config/indusagi/mcp.json (XDG)
|
|
57
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
58
|
+
const userConfig = join(xdgConfigHome, "indusagi", "mcp.json");
|
|
59
|
+
if (existsSync(userConfig)) {
|
|
60
|
+
try {
|
|
61
|
+
const userConfigs = parseConfigFile(userConfig);
|
|
62
|
+
configs.push(...userConfigs);
|
|
63
|
+
console.log(`[MCP] Loaded ${userConfigs.length} servers from user config`);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(`[MCP] Error loading user config:`, error);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// 3. Legacy: ~/.indusagi/agent/mcp.json (for backwards compatibility)
|
|
70
|
+
const legacyConfig = join(homedir(), ".indusagi", "agent", "mcp.json");
|
|
71
|
+
if (existsSync(legacyConfig)) {
|
|
72
|
+
try {
|
|
73
|
+
const legacyConfigs = parseConfigFile(legacyConfig);
|
|
74
|
+
configs.push(...legacyConfigs);
|
|
75
|
+
console.log(`[MCP] Loaded ${legacyConfigs.length} servers from legacy config`);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error(`[MCP] Error loading legacy config:`, error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// 4. Also check mcp-servers.json (alternative legacy name)
|
|
82
|
+
const legacyServersConfig = join(homedir(), ".indusagi", "agent", "mcp-servers.json");
|
|
83
|
+
if (existsSync(legacyServersConfig)) {
|
|
84
|
+
try {
|
|
85
|
+
const legacyConfigs = parseConfigFile(legacyServersConfig);
|
|
86
|
+
configs.push(...legacyConfigs);
|
|
87
|
+
console.log(`[MCP] Loaded ${legacyConfigs.length} servers from mcp-servers.json`);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(`[MCP] Error loading mcp-servers.json:`, error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return configs;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parse a configuration file.
|
|
97
|
+
* Supports both array and object formats for servers:
|
|
98
|
+
* - Array: { "servers": [{ "name": "github", "command": "npx", ... }] }
|
|
99
|
+
* - Object: { "servers": { "github": { "command": "npx", ... } } }
|
|
100
|
+
*/
|
|
101
|
+
function parseConfigFile(path) {
|
|
102
|
+
const content = readFileSync(path, "utf-8");
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
+
const config = JSON.parse(content);
|
|
105
|
+
if (!config.servers) {
|
|
106
|
+
console.warn(`[MCP] Invalid config file ${path}: missing "servers" field`);
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
// Handle both array and object formats
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
111
|
+
let serversArray;
|
|
112
|
+
if (Array.isArray(config.servers)) {
|
|
113
|
+
serversArray = config.servers;
|
|
114
|
+
}
|
|
115
|
+
else if (typeof config.servers === "object") {
|
|
116
|
+
// Convert object format to array
|
|
117
|
+
serversArray = Object.entries(config.servers).map(([name, serverConfig]) => ({
|
|
118
|
+
name,
|
|
119
|
+
...serverConfig,
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.warn(`[MCP] Invalid config file ${path}: "servers" must be array or object`);
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
return serversArray
|
|
127
|
+
.filter((server) => server.enabled !== false)
|
|
128
|
+
.map((server) => {
|
|
129
|
+
if (server.url) {
|
|
130
|
+
// HTTP transport
|
|
131
|
+
return {
|
|
132
|
+
name: server.name,
|
|
133
|
+
config: {
|
|
134
|
+
url: new URL(server.url),
|
|
135
|
+
headers: server.headers,
|
|
136
|
+
},
|
|
137
|
+
timeout: server.timeout,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
else if (server.command) {
|
|
141
|
+
// Stdio transport
|
|
142
|
+
return {
|
|
143
|
+
name: server.name,
|
|
144
|
+
config: {
|
|
145
|
+
command: server.command,
|
|
146
|
+
args: server.args,
|
|
147
|
+
env: server.env,
|
|
148
|
+
},
|
|
149
|
+
timeout: server.timeout,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
throw new MCPError(`Invalid server config: ${server.name}`, MCPErrorCode.CONFIG_ERROR, { server });
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the path where user config should be saved.
|
|
157
|
+
*/
|
|
158
|
+
export function getUserConfigPath() {
|
|
159
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
160
|
+
return join(xdgConfigHome, "indusagi", "mcp.json");
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get the path where project config should be saved.
|
|
164
|
+
*/
|
|
165
|
+
export function getProjectConfigPath(cwd = process.cwd()) {
|
|
166
|
+
return join(cwd, ".indusagi", "mcp.json");
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Ensure the user config directory exists.
|
|
170
|
+
*/
|
|
171
|
+
export function ensureUserConfigDir() {
|
|
172
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
173
|
+
const configDir = join(xdgConfigHome, "indusagi");
|
|
174
|
+
if (!existsSync(configDir)) {
|
|
175
|
+
mkdirSync(configDir, { recursive: true });
|
|
176
|
+
}
|
|
177
|
+
return configDir;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Ensure the project config directory exists.
|
|
181
|
+
*/
|
|
182
|
+
export function ensureProjectConfigDir(cwd = process.cwd()) {
|
|
183
|
+
const configDir = join(cwd, ".indusagi");
|
|
184
|
+
if (!existsSync(configDir)) {
|
|
185
|
+
mkdirSync(configDir, { recursive: true });
|
|
186
|
+
}
|
|
187
|
+
return configDir;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Save configuration to a file.
|
|
191
|
+
*/
|
|
192
|
+
export function saveConfig(path, config) {
|
|
193
|
+
const dir = dirname(path);
|
|
194
|
+
if (!existsSync(dir)) {
|
|
195
|
+
mkdirSync(dir, { recursive: true });
|
|
196
|
+
}
|
|
197
|
+
const content = JSON.stringify(config, null, 2);
|
|
198
|
+
require("fs").writeFileSync(path, content, "utf-8");
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Save user configuration.
|
|
202
|
+
*/
|
|
203
|
+
export function saveUserConfig(config) {
|
|
204
|
+
saveConfig(getUserConfigPath(), config);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Save project configuration.
|
|
208
|
+
*/
|
|
209
|
+
export function saveProjectConfig(config, cwd = process.cwd()) {
|
|
210
|
+
saveConfig(getProjectConfigPath(cwd), config);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Create a default configuration.
|
|
214
|
+
*/
|
|
215
|
+
export function createDefaultConfig() {
|
|
216
|
+
return {
|
|
217
|
+
servers: [],
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Example configuration for documentation.
|
|
222
|
+
*/
|
|
223
|
+
export const EXAMPLE_CONFIG = {
|
|
224
|
+
servers: [
|
|
225
|
+
{
|
|
226
|
+
name: "filesystem",
|
|
227
|
+
command: "npx",
|
|
228
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"],
|
|
229
|
+
enabled: true,
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
name: "github",
|
|
233
|
+
command: "npx",
|
|
234
|
+
args: ["-y", "@modelcontextprotocol/server-github"],
|
|
235
|
+
env: {
|
|
236
|
+
GITHUB_TOKEN: "your-github-token",
|
|
237
|
+
},
|
|
238
|
+
enabled: true,
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "remote-server",
|
|
242
|
+
url: "http://localhost:8080/mcp",
|
|
243
|
+
headers: {
|
|
244
|
+
Authorization: "Bearer your-token",
|
|
245
|
+
},
|
|
246
|
+
enabled: false,
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Error Types
|
|
3
|
+
*
|
|
4
|
+
* Reference: @mastra/core error handling patterns
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Error codes for MCP operations.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum MCPErrorCode {
|
|
10
|
+
/** Failed to connect to MCP server */
|
|
11
|
+
CONNECTION_FAILED = "CONNECTION_FAILED",
|
|
12
|
+
/** Request timed out */
|
|
13
|
+
TIMEOUT = "TIMEOUT",
|
|
14
|
+
/** Tool not found on server */
|
|
15
|
+
TOOL_NOT_FOUND = "TOOL_NOT_FOUND",
|
|
16
|
+
/** Invalid parameters for tool call */
|
|
17
|
+
INVALID_PARAMETERS = "INVALID_PARAMETERS",
|
|
18
|
+
/** Server returned an error */
|
|
19
|
+
SERVER_ERROR = "SERVER_ERROR",
|
|
20
|
+
/** Transport layer error */
|
|
21
|
+
TRANSPORT_ERROR = "TRANSPORT_ERROR",
|
|
22
|
+
/** Not connected to server */
|
|
23
|
+
NOT_CONNECTED = "NOT_CONNECTED",
|
|
24
|
+
/** Protocol error */
|
|
25
|
+
PROTOCOL_ERROR = "PROTOCOL_ERROR",
|
|
26
|
+
/** Configuration error */
|
|
27
|
+
CONFIG_ERROR = "CONFIG_ERROR",
|
|
28
|
+
/** Schema conversion error */
|
|
29
|
+
SCHEMA_CONVERSION_ERROR = "SCHEMA_CONVERSION_ERROR",
|
|
30
|
+
/** Resource not found */
|
|
31
|
+
RESOURCE_NOT_FOUND = "RESOURCE_NOT_FOUND",
|
|
32
|
+
/** Prompt not found */
|
|
33
|
+
PROMPT_NOT_FOUND = "PROMPT_NOT_FOUND",
|
|
34
|
+
/** Session error (requires reconnection) */
|
|
35
|
+
SESSION_ERROR = "SESSION_ERROR"
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Error class for MCP operations.
|
|
39
|
+
* Provides structured error information with error codes and details.
|
|
40
|
+
*/
|
|
41
|
+
export declare class MCPError extends Error {
|
|
42
|
+
/** Error code */
|
|
43
|
+
readonly code: MCPErrorCode;
|
|
44
|
+
/** Additional error details */
|
|
45
|
+
readonly details?: unknown;
|
|
46
|
+
/** Server name where error occurred */
|
|
47
|
+
readonly serverName?: string;
|
|
48
|
+
/** Tool name if error occurred during tool execution */
|
|
49
|
+
readonly toolName?: string;
|
|
50
|
+
constructor(message: string, code: MCPErrorCode, details?: unknown, options?: {
|
|
51
|
+
serverName?: string;
|
|
52
|
+
toolName?: string;
|
|
53
|
+
cause?: Error;
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Convert error to JSON for logging/serialization.
|
|
57
|
+
*/
|
|
58
|
+
toJSON(): Record<string, unknown>;
|
|
59
|
+
/**
|
|
60
|
+
* Create a string representation of the error.
|
|
61
|
+
*/
|
|
62
|
+
toString(): string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Type guard to check if an error is an MCPError.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isMCPError(error: unknown): error is MCPError;
|
|
68
|
+
/**
|
|
69
|
+
* Check if an error indicates a session problem requiring reconnection.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isSessionError(error: unknown): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Create a connection failed error.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createConnectionError(serverName: string, cause?: Error): MCPError;
|
|
76
|
+
/**
|
|
77
|
+
* Create a timeout error.
|
|
78
|
+
*/
|
|
79
|
+
export declare function createTimeoutError(operation: string, serverName?: string): MCPError;
|
|
80
|
+
/**
|
|
81
|
+
* Create a tool not found error.
|
|
82
|
+
*/
|
|
83
|
+
export declare function createToolNotFoundError(toolName: string, serverName?: string): MCPError;
|
|
84
|
+
/**
|
|
85
|
+
* Create an invalid parameters error.
|
|
86
|
+
*/
|
|
87
|
+
export declare function createInvalidParametersError(toolName: string, details: unknown, serverName?: string): MCPError;
|
|
88
|
+
/**
|
|
89
|
+
* Create a server error.
|
|
90
|
+
*/
|
|
91
|
+
export declare function createServerError(message: string, serverName?: string, details?: unknown): MCPError;
|
|
92
|
+
/**
|
|
93
|
+
* Create a not connected error.
|
|
94
|
+
*/
|
|
95
|
+
export declare function createNotConnectedError(serverName?: string): MCPError;
|
|
96
|
+
/**
|
|
97
|
+
* Create a config error.
|
|
98
|
+
*/
|
|
99
|
+
export declare function createConfigError(message: string, details?: unknown): MCPError;
|
|
100
|
+
/**
|
|
101
|
+
* Create a schema conversion error.
|
|
102
|
+
*/
|
|
103
|
+
export declare function createSchemaConversionError(toolName: string, details: unknown, serverName?: string): MCPError;
|
|
104
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,oBAAY,YAAY;IACtB,sCAAsC;IACtC,iBAAiB,sBAAsB;IACvC,wBAAwB;IACxB,OAAO,YAAY;IACnB,+BAA+B;IAC/B,cAAc,mBAAmB;IACjC,uCAAuC;IACvC,kBAAkB,uBAAuB;IACzC,+BAA+B;IAC/B,YAAY,iBAAiB;IAC7B,4BAA4B;IAC5B,eAAe,oBAAoB;IACnC,8BAA8B;IAC9B,aAAa,kBAAkB;IAC/B,qBAAqB;IACrB,cAAc,mBAAmB;IACjC,0BAA0B;IAC1B,YAAY,iBAAiB;IAC7B,8BAA8B;IAC9B,uBAAuB,4BAA4B;IACnD,yBAAyB;IACzB,kBAAkB,uBAAuB;IACzC,uBAAuB;IACvB,gBAAgB,qBAAqB;IACrC,4CAA4C;IAC5C,aAAa,kBAAkB;CAChC;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,iBAAiB;IACjB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAUrE;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWjC;;OAEG;IACM,QAAQ,IAAI,MAAM;CAM5B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAOjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEvF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAO9G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAEnG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAErE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAE9E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAO7G"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Error Types
|
|
3
|
+
*
|
|
4
|
+
* Reference: @mastra/core error handling patterns
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Error codes for MCP operations.
|
|
8
|
+
*/
|
|
9
|
+
export var MCPErrorCode;
|
|
10
|
+
(function (MCPErrorCode) {
|
|
11
|
+
/** Failed to connect to MCP server */
|
|
12
|
+
MCPErrorCode["CONNECTION_FAILED"] = "CONNECTION_FAILED";
|
|
13
|
+
/** Request timed out */
|
|
14
|
+
MCPErrorCode["TIMEOUT"] = "TIMEOUT";
|
|
15
|
+
/** Tool not found on server */
|
|
16
|
+
MCPErrorCode["TOOL_NOT_FOUND"] = "TOOL_NOT_FOUND";
|
|
17
|
+
/** Invalid parameters for tool call */
|
|
18
|
+
MCPErrorCode["INVALID_PARAMETERS"] = "INVALID_PARAMETERS";
|
|
19
|
+
/** Server returned an error */
|
|
20
|
+
MCPErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
|
|
21
|
+
/** Transport layer error */
|
|
22
|
+
MCPErrorCode["TRANSPORT_ERROR"] = "TRANSPORT_ERROR";
|
|
23
|
+
/** Not connected to server */
|
|
24
|
+
MCPErrorCode["NOT_CONNECTED"] = "NOT_CONNECTED";
|
|
25
|
+
/** Protocol error */
|
|
26
|
+
MCPErrorCode["PROTOCOL_ERROR"] = "PROTOCOL_ERROR";
|
|
27
|
+
/** Configuration error */
|
|
28
|
+
MCPErrorCode["CONFIG_ERROR"] = "CONFIG_ERROR";
|
|
29
|
+
/** Schema conversion error */
|
|
30
|
+
MCPErrorCode["SCHEMA_CONVERSION_ERROR"] = "SCHEMA_CONVERSION_ERROR";
|
|
31
|
+
/** Resource not found */
|
|
32
|
+
MCPErrorCode["RESOURCE_NOT_FOUND"] = "RESOURCE_NOT_FOUND";
|
|
33
|
+
/** Prompt not found */
|
|
34
|
+
MCPErrorCode["PROMPT_NOT_FOUND"] = "PROMPT_NOT_FOUND";
|
|
35
|
+
/** Session error (requires reconnection) */
|
|
36
|
+
MCPErrorCode["SESSION_ERROR"] = "SESSION_ERROR";
|
|
37
|
+
})(MCPErrorCode || (MCPErrorCode = {}));
|
|
38
|
+
/**
|
|
39
|
+
* Error class for MCP operations.
|
|
40
|
+
* Provides structured error information with error codes and details.
|
|
41
|
+
*/
|
|
42
|
+
export class MCPError extends Error {
|
|
43
|
+
constructor(message, code, details, options) {
|
|
44
|
+
super(message, options?.cause ? { cause: options.cause } : undefined);
|
|
45
|
+
this.name = "MCPError";
|
|
46
|
+
this.code = code;
|
|
47
|
+
this.details = details;
|
|
48
|
+
this.serverName = options?.serverName;
|
|
49
|
+
this.toolName = options?.toolName;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert error to JSON for logging/serialization.
|
|
53
|
+
*/
|
|
54
|
+
toJSON() {
|
|
55
|
+
return {
|
|
56
|
+
name: this.name,
|
|
57
|
+
message: this.message,
|
|
58
|
+
code: this.code,
|
|
59
|
+
details: this.details,
|
|
60
|
+
serverName: this.serverName,
|
|
61
|
+
toolName: this.toolName,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a string representation of the error.
|
|
66
|
+
*/
|
|
67
|
+
toString() {
|
|
68
|
+
let str = `${this.name} [${this.code}]: ${this.message}`;
|
|
69
|
+
if (this.serverName)
|
|
70
|
+
str += ` (server: ${this.serverName})`;
|
|
71
|
+
if (this.toolName)
|
|
72
|
+
str += ` (tool: ${this.toolName})`;
|
|
73
|
+
return str;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Type guard to check if an error is an MCPError.
|
|
78
|
+
*/
|
|
79
|
+
export function isMCPError(error) {
|
|
80
|
+
return error instanceof MCPError;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if an error indicates a session problem requiring reconnection.
|
|
84
|
+
*/
|
|
85
|
+
export function isSessionError(error) {
|
|
86
|
+
if (!isMCPError(error))
|
|
87
|
+
return false;
|
|
88
|
+
return error.code === MCPErrorCode.SESSION_ERROR || error.code === MCPErrorCode.NOT_CONNECTED;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a connection failed error.
|
|
92
|
+
*/
|
|
93
|
+
export function createConnectionError(serverName, cause) {
|
|
94
|
+
return new MCPError(`Failed to connect to MCP server: ${serverName}`, MCPErrorCode.CONNECTION_FAILED, { cause: cause?.message }, { serverName, cause });
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a timeout error.
|
|
98
|
+
*/
|
|
99
|
+
export function createTimeoutError(operation, serverName) {
|
|
100
|
+
return new MCPError(`Operation timed out: ${operation}`, MCPErrorCode.TIMEOUT, { operation }, { serverName });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a tool not found error.
|
|
104
|
+
*/
|
|
105
|
+
export function createToolNotFoundError(toolName, serverName) {
|
|
106
|
+
return new MCPError(`Tool not found: ${toolName}`, MCPErrorCode.TOOL_NOT_FOUND, { toolName }, { serverName, toolName });
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create an invalid parameters error.
|
|
110
|
+
*/
|
|
111
|
+
export function createInvalidParametersError(toolName, details, serverName) {
|
|
112
|
+
return new MCPError(`Invalid parameters for tool: ${toolName}`, MCPErrorCode.INVALID_PARAMETERS, details, { serverName, toolName });
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Create a server error.
|
|
116
|
+
*/
|
|
117
|
+
export function createServerError(message, serverName, details) {
|
|
118
|
+
return new MCPError(message, MCPErrorCode.SERVER_ERROR, details, { serverName });
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a not connected error.
|
|
122
|
+
*/
|
|
123
|
+
export function createNotConnectedError(serverName) {
|
|
124
|
+
return new MCPError("Not connected to MCP server", MCPErrorCode.NOT_CONNECTED, undefined, { serverName });
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a config error.
|
|
128
|
+
*/
|
|
129
|
+
export function createConfigError(message, details) {
|
|
130
|
+
return new MCPError(message, MCPErrorCode.CONFIG_ERROR, details);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a schema conversion error.
|
|
134
|
+
*/
|
|
135
|
+
export function createSchemaConversionError(toolName, details, serverName) {
|
|
136
|
+
return new MCPError(`Failed to convert schema for tool: ${toolName}`, MCPErrorCode.SCHEMA_CONVERSION_ERROR, details, { serverName, toolName });
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Module - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides Model Context Protocol (MCP) support for new_indusagi.
|
|
5
|
+
* It allows connecting to MCP servers and using their tools as AgentTools.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { MCPClient, MCPClientPool, loadMCPConfig } from "new_indusagi/mcp";
|
|
10
|
+
* import { ToolRegistry } from "new_indusagi/agent";
|
|
11
|
+
*
|
|
12
|
+
* // Load config from file
|
|
13
|
+
* const configs = loadMCPConfig(process.cwd());
|
|
14
|
+
*
|
|
15
|
+
* // Create a client pool
|
|
16
|
+
* const pool = new MCPClientPool({ servers: configs });
|
|
17
|
+
* await pool.connectAll();
|
|
18
|
+
*
|
|
19
|
+
* // Register tools
|
|
20
|
+
* const registry = new ToolRegistry();
|
|
21
|
+
* for (const client of pool.getAllClients()) {
|
|
22
|
+
* const tools = await client.listTools();
|
|
23
|
+
* await registerMCPToolsInRegistry(registry, client, tools);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
import { MCPClientPool } from "./client-pool.js";
|
|
28
|
+
export { MCPClient, type MCPClientOptions } from "./client.js";
|
|
29
|
+
export { MCPClientPool, type MCPClientPoolOptions, type MCPServerStatus } from "./client-pool.js";
|
|
30
|
+
export { MCPServer, createMCPServer, type MCPServerOptions } from "./server.js";
|
|
31
|
+
export { createMCPAgentToolFactory, registerMCPToolsInRegistry, createMCPToolsMap, createMCPToolsRecord, type MCPToolClient, } from "./tool-factory.js";
|
|
32
|
+
export { jsonSchemaToTypeBox, applyPassthrough, convertMCPInputSchema, convertMCPOutputSchema, } from "./schema-converter.js";
|
|
33
|
+
export { loadMCPConfig, getUserConfigPath, getProjectConfigPath, ensureUserConfigDir, ensureProjectConfigDir, saveConfig, saveUserConfig, saveProjectConfig, createDefaultConfig, EXAMPLE_CONFIG, } from "./config.js";
|
|
34
|
+
export { MCPError, MCPErrorCode, isMCPError, isSessionError, createConnectionError, createTimeoutError, createToolNotFoundError, createInvalidParametersError, createServerError, createNotConnectedError, createConfigError, createSchemaConversionError, } from "./errors.js";
|
|
35
|
+
export type { StdioServerConfig, HttpServerConfig, MCPServerConfig, MCPConnectionOptions, MCPToolDefinition, MCPResource, MCPPrompt, MCPInitializeResult, MCPClientState, MCPToolCallRequest, MCPContentBlock, MCPToolCallResult, MCPServerConfigEntry, MCPConfigFile, MCPLoggingLevel, MCPLogMessage, MCPLogHandler, MCPProgressNotification, MCPProgressHandler, MCPElicitRequest, MCPElicitResult, MCPElicitationHandler, MCPRoot, BaseServerOptions, } from "./types.js";
|
|
36
|
+
/**
|
|
37
|
+
* Convenience function: Initialize MCP and register tools.
|
|
38
|
+
*
|
|
39
|
+
* This is the simplest way to add MCP support to an agent.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* import { initializeMCP } from "new_indusagi/mcp";
|
|
44
|
+
* import { ToolRegistry, Agent } from "new_indusagi/agent";
|
|
45
|
+
*
|
|
46
|
+
* const registry = new ToolRegistry();
|
|
47
|
+
* const { pool, toolCount } = await initializeMCP(registry, process.cwd());
|
|
48
|
+
*
|
|
49
|
+
* console.log(`Connected to ${pool.getAllClients().length} servers with ${toolCount} tools`);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function initializeMCP(registry: import("../agent/tools/registry.js").ToolRegistry, cwd?: string): Promise<{
|
|
53
|
+
pool: MCPClientPool;
|
|
54
|
+
toolCount: number;
|
|
55
|
+
}>;
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGhF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAGrB,YAAY,EAEV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EAEpB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,mBAAmB,EAEnB,cAAc,EAEd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAEjB,oBAAoB,EACpB,aAAa,EAEb,eAAe,EACf,aAAa,EACb,aAAa,EAEb,uBAAuB,EACvB,kBAAkB,EAElB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EAErB,OAAO,EAEP,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,OAAO,4BAA4B,EAAE,YAAY,EAC3D,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BrD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Module - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* This module provides Model Context Protocol (MCP) support for new_indusagi.
|
|
5
|
+
* It allows connecting to MCP servers and using their tools as AgentTools.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { MCPClient, MCPClientPool, loadMCPConfig } from "new_indusagi/mcp";
|
|
10
|
+
* import { ToolRegistry } from "new_indusagi/agent";
|
|
11
|
+
*
|
|
12
|
+
* // Load config from file
|
|
13
|
+
* const configs = loadMCPConfig(process.cwd());
|
|
14
|
+
*
|
|
15
|
+
* // Create a client pool
|
|
16
|
+
* const pool = new MCPClientPool({ servers: configs });
|
|
17
|
+
* await pool.connectAll();
|
|
18
|
+
*
|
|
19
|
+
* // Register tools
|
|
20
|
+
* const registry = new ToolRegistry();
|
|
21
|
+
* for (const client of pool.getAllClients()) {
|
|
22
|
+
* const tools = await client.listTools();
|
|
23
|
+
* await registerMCPToolsInRegistry(registry, client, tools);
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
// Internal imports for use in this module
|
|
28
|
+
import { MCPClientPool } from "./client-pool.js";
|
|
29
|
+
import { loadMCPConfig } from "./config.js";
|
|
30
|
+
import { registerMCPToolsInRegistry } from "./tool-factory.js";
|
|
31
|
+
// Client components
|
|
32
|
+
export { MCPClient } from "./client.js";
|
|
33
|
+
export { MCPClientPool } from "./client-pool.js";
|
|
34
|
+
// Server component
|
|
35
|
+
export { MCPServer, createMCPServer } from "./server.js";
|
|
36
|
+
// Tool factory
|
|
37
|
+
export { createMCPAgentToolFactory, registerMCPToolsInRegistry, createMCPToolsMap, createMCPToolsRecord, } from "./tool-factory.js";
|
|
38
|
+
// Schema conversion
|
|
39
|
+
export { jsonSchemaToTypeBox, applyPassthrough, convertMCPInputSchema, convertMCPOutputSchema, } from "./schema-converter.js";
|
|
40
|
+
// Configuration
|
|
41
|
+
export { loadMCPConfig, getUserConfigPath, getProjectConfigPath, ensureUserConfigDir, ensureProjectConfigDir, saveConfig, saveUserConfig, saveProjectConfig, createDefaultConfig, EXAMPLE_CONFIG, } from "./config.js";
|
|
42
|
+
// Errors
|
|
43
|
+
export { MCPError, MCPErrorCode, isMCPError, isSessionError, createConnectionError, createTimeoutError, createToolNotFoundError, createInvalidParametersError, createServerError, createNotConnectedError, createConfigError, createSchemaConversionError, } from "./errors.js";
|
|
44
|
+
/**
|
|
45
|
+
* Convenience function: Initialize MCP and register tools.
|
|
46
|
+
*
|
|
47
|
+
* This is the simplest way to add MCP support to an agent.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* import { initializeMCP } from "new_indusagi/mcp";
|
|
52
|
+
* import { ToolRegistry, Agent } from "new_indusagi/agent";
|
|
53
|
+
*
|
|
54
|
+
* const registry = new ToolRegistry();
|
|
55
|
+
* const { pool, toolCount } = await initializeMCP(registry, process.cwd());
|
|
56
|
+
*
|
|
57
|
+
* console.log(`Connected to ${pool.getAllClients().length} servers with ${toolCount} tools`);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export async function initializeMCP(registry, cwd = process.cwd()) {
|
|
61
|
+
const configs = loadMCPConfig(cwd);
|
|
62
|
+
if (configs.length === 0) {
|
|
63
|
+
console.log("[MCP] No servers configured");
|
|
64
|
+
return { pool: new MCPClientPool({ servers: [] }), toolCount: 0 };
|
|
65
|
+
}
|
|
66
|
+
const pool = new MCPClientPool({ servers: configs });
|
|
67
|
+
await pool.connectAll();
|
|
68
|
+
let totalTools = 0;
|
|
69
|
+
// Register tools from all connected clients
|
|
70
|
+
for (const client of pool.getAllClients()) {
|
|
71
|
+
try {
|
|
72
|
+
const tools = await client.listTools();
|
|
73
|
+
const count = await registerMCPToolsInRegistry(registry, client, tools);
|
|
74
|
+
totalTools += count;
|
|
75
|
+
console.log(`[MCP] Registered ${count} tools from ${client.serverName}`);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.error(`[MCP] Failed to register tools from ${client.serverName}:`, error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { pool, toolCount: totalTools };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAE/D,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAyB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAmD,MAAM,kBAAkB,CAAC;AAElG,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AAEhF,eAAe;AACf,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAE3B,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,gBAAgB;AAChB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAwCrB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAA2D,EAC3D,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAExB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,4CAA4C;IAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACxE,UAAU,IAAI,KAAK,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACzC,CAAC"}
|