@agenium/mcp-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/dist/bridge.d.ts +66 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +380 -0
- package/dist/bridge.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +122 -0
- package/dist/cli.js.map +1 -0
- package/dist/discovery.d.ts +82 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +154 -0
- package/dist/discovery.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-transport.d.ts +63 -0
- package/dist/mcp-transport.d.ts.map +1 -0
- package/dist/mcp-transport.js +180 -0
- package/dist/mcp-transport.js.map +1 -0
- package/dist/types.d.ts +132 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# @agenium/mcp-server
|
|
2
|
+
|
|
3
|
+
Bridge [MCP](https://modelcontextprotocol.io/) (Model Context Protocol) servers to the [AGENIUM](https://agenium.net) `agent://` network.
|
|
4
|
+
|
|
5
|
+
Any MCP server → discoverable, callable agent on the AGENIUM network.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @agenium/mcp-server
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
### Expose an MCP server as an AGENIUM agent
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { MCPBridge } from '@agenium/mcp-server';
|
|
19
|
+
|
|
20
|
+
const bridge = new MCPBridge({
|
|
21
|
+
name: 'weather-tools',
|
|
22
|
+
mcp: {
|
|
23
|
+
transport: 'stdio',
|
|
24
|
+
command: 'npx',
|
|
25
|
+
args: ['-y', '@modelcontextprotocol/server-weather'],
|
|
26
|
+
},
|
|
27
|
+
agent: {
|
|
28
|
+
publicHost: '203.0.113.1', // Your server's public IP
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
await bridge.start();
|
|
33
|
+
// ✅ MCP server connected
|
|
34
|
+
// ✅ Found 2 tools: get_forecast, get_alerts
|
|
35
|
+
// ✅ AGENIUM agent "weather-tools" started
|
|
36
|
+
// ✅ Registered on AGENIUM DNS as agent://weather-tools
|
|
37
|
+
|
|
38
|
+
console.log(bridge.getTools());
|
|
39
|
+
// [{ name: 'get_forecast', description: '...', inputSchema: {...} }, ...]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Call tools on a remote MCP-bridged agent
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { MCPAgentClient } from '@agenium/mcp-server';
|
|
46
|
+
|
|
47
|
+
const client = new MCPAgentClient('my-agent');
|
|
48
|
+
await client.start();
|
|
49
|
+
|
|
50
|
+
// Discover what tools an agent has
|
|
51
|
+
const info = await client.discover('agent://weather-tools');
|
|
52
|
+
console.log(info.tools);
|
|
53
|
+
|
|
54
|
+
// Call a tool
|
|
55
|
+
const result = await client.callTool('agent://weather-tools', 'get_forecast', {
|
|
56
|
+
city: 'Tehran',
|
|
57
|
+
days: 3,
|
|
58
|
+
});
|
|
59
|
+
console.log(result.content);
|
|
60
|
+
|
|
61
|
+
await client.stop();
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Configuration
|
|
65
|
+
|
|
66
|
+
### MCPBridgeConfig
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
{
|
|
70
|
+
// Agent name on the AGENIUM network
|
|
71
|
+
name: string;
|
|
72
|
+
|
|
73
|
+
// MCP server configuration
|
|
74
|
+
mcp: {
|
|
75
|
+
// stdio: spawn a child process
|
|
76
|
+
transport: 'stdio';
|
|
77
|
+
command: string;
|
|
78
|
+
args?: string[];
|
|
79
|
+
cwd?: string;
|
|
80
|
+
env?: Record<string, string>;
|
|
81
|
+
} | {
|
|
82
|
+
// SSE: connect to running server
|
|
83
|
+
transport: 'sse';
|
|
84
|
+
url: string;
|
|
85
|
+
headers?: Record<string, string>;
|
|
86
|
+
} | {
|
|
87
|
+
// Streamable HTTP (MCP v2)
|
|
88
|
+
transport: 'streamable-http';
|
|
89
|
+
url: string;
|
|
90
|
+
headers?: Record<string, string>;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// AGENIUM agent options
|
|
94
|
+
agent?: {
|
|
95
|
+
port?: number; // Listen port (default: auto)
|
|
96
|
+
dnsServer?: string; // DNS server (default: 185.204.169.26)
|
|
97
|
+
dnsPort?: number; // DNS port (default: 3000)
|
|
98
|
+
autoRegister?: boolean; // Register on DNS (default: true)
|
|
99
|
+
publicHost?: string; // Public IP for registration
|
|
100
|
+
dataDir?: string; // State directory
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Bridge behavior
|
|
104
|
+
bridge?: {
|
|
105
|
+
toolCallTimeoutMs?: number; // Tool call timeout (default: 30s)
|
|
106
|
+
exposeResources?: boolean; // Expose MCP resources (default: true)
|
|
107
|
+
exposePrompts?: boolean; // Expose MCP prompts (default: true)
|
|
108
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Protocol
|
|
114
|
+
|
|
115
|
+
When an MCP server is bridged, it exposes these `agent://` request methods:
|
|
116
|
+
|
|
117
|
+
| Method | Description | Params |
|
|
118
|
+
|--------|-------------|--------|
|
|
119
|
+
| `tools/list` | List available tools | — |
|
|
120
|
+
| `tools/call` | Call a tool | `{ name, arguments? }` |
|
|
121
|
+
| `resources/list` | List available resources | — |
|
|
122
|
+
| `resources/read` | Read a resource | `{ uri }` |
|
|
123
|
+
| `prompts/list` | List available prompts | — |
|
|
124
|
+
| `prompts/get` | Get a prompt | `{ name, arguments? }` |
|
|
125
|
+
| `capabilities` | Get full capability manifest | — |
|
|
126
|
+
| `ping` | Health check | — |
|
|
127
|
+
|
|
128
|
+
## Events
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
bridge.on('ready', ({ tools, resources, prompts }) => { ... });
|
|
132
|
+
bridge.on('registered', ({ name, endpoint }) => { ... });
|
|
133
|
+
bridge.on('tool:call', ({ tool, sessionId }) => { ... });
|
|
134
|
+
bridge.on('tool:result', ({ tool, sessionId, durationMs }) => { ... });
|
|
135
|
+
bridge.on('tool:error', ({ tool, sessionId, error }) => { ... });
|
|
136
|
+
bridge.on('error', (err) => { ... });
|
|
137
|
+
bridge.on('stopped', () => { ... });
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## How It Works
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
┌─────────────┐ agent:// ┌──────────────┐ JSON-RPC ┌────────────┐
|
|
144
|
+
│ Agent Client │ ──────────────▶ │ MCP Bridge │ ──────────────▶ │ MCP Server │
|
|
145
|
+
│ │ │ (@agenium/ │ │ (any tool) │
|
|
146
|
+
│ Any AGENIUM │ ◀────────────── │ mcp-server) │ ◀────────────── │ │
|
|
147
|
+
│ agent │ response │ │ tool result │ │
|
|
148
|
+
└─────────────┘ └──────────────┘ └────────────┘
|
|
149
|
+
│
|
|
150
|
+
│ registers
|
|
151
|
+
▼
|
|
152
|
+
┌──────────────┐
|
|
153
|
+
│ AGENIUM DNS │
|
|
154
|
+
│ 185.204.169.26│
|
|
155
|
+
└──────────────┘
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Python SDK
|
|
159
|
+
|
|
160
|
+
A Python version (`agenium-mcp-server`) is planned. For now, use the npm package.
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
MIT
|
package/dist/bridge.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agenium/mcp-server — MCPBridge
|
|
3
|
+
*
|
|
4
|
+
* The main class that bridges an MCP server to the AGENIUM agent:// network.
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Spawns/connects to an MCP server
|
|
8
|
+
* 2. Discovers its tools, resources, and prompts
|
|
9
|
+
* 3. Creates an AGENIUM agent that exposes these as agent:// capabilities
|
|
10
|
+
* 4. Optionally registers on the AGENIUM DNS
|
|
11
|
+
* 5. Translates incoming agent:// requests to MCP calls
|
|
12
|
+
*/
|
|
13
|
+
import { EventEmitter } from 'node:events';
|
|
14
|
+
import { Agent } from 'agenium';
|
|
15
|
+
import { MCPBridgeConfig, MCPToolInfo, MCPResourceInfo, MCPPromptInfo, BridgeState } from './types.js';
|
|
16
|
+
export declare class MCPBridge extends EventEmitter {
|
|
17
|
+
private config;
|
|
18
|
+
private mcpTransport;
|
|
19
|
+
private agent;
|
|
20
|
+
private state;
|
|
21
|
+
private tools;
|
|
22
|
+
private resources;
|
|
23
|
+
private prompts;
|
|
24
|
+
private stats;
|
|
25
|
+
constructor(config: MCPBridgeConfig);
|
|
26
|
+
/** Start the bridge: connect to MCP server, discover tools, start AGENIUM agent */
|
|
27
|
+
start(): Promise<void>;
|
|
28
|
+
/** Stop the bridge gracefully */
|
|
29
|
+
stop(): Promise<void>;
|
|
30
|
+
/** Discover tools, resources, and prompts from the MCP server */
|
|
31
|
+
private discoverCapabilities;
|
|
32
|
+
/** Create and start the AGENIUM agent, wire up request handlers */
|
|
33
|
+
private startAgent;
|
|
34
|
+
/** Register protocol request handlers on the agent */
|
|
35
|
+
private registerHandlers;
|
|
36
|
+
/** Register this bridge on the AGENIUM DNS */
|
|
37
|
+
private register;
|
|
38
|
+
/** Get current bridge state */
|
|
39
|
+
getState(): BridgeState;
|
|
40
|
+
/** Get discovered tools */
|
|
41
|
+
getTools(): MCPToolInfo[];
|
|
42
|
+
/** Get discovered resources */
|
|
43
|
+
getResources(): MCPResourceInfo[];
|
|
44
|
+
/** Get discovered prompts */
|
|
45
|
+
getPrompts(): MCPPromptInfo[];
|
|
46
|
+
/** Get bridge statistics */
|
|
47
|
+
getStats(): {
|
|
48
|
+
uptimeMs: number;
|
|
49
|
+
toolCalls: number;
|
|
50
|
+
toolErrors: number;
|
|
51
|
+
resourceReads: number;
|
|
52
|
+
promptGets: number;
|
|
53
|
+
startedAt: number;
|
|
54
|
+
state: BridgeState;
|
|
55
|
+
tools: number;
|
|
56
|
+
resources: number;
|
|
57
|
+
prompts: number;
|
|
58
|
+
};
|
|
59
|
+
/** Get the underlying AGENIUM agent (for advanced use) */
|
|
60
|
+
getAgent(): Agent | null;
|
|
61
|
+
/** Get the agent:// URI */
|
|
62
|
+
getURI(): string;
|
|
63
|
+
private setState;
|
|
64
|
+
private log;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAe,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AAqBpB,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,KAAK,CAAiC;IAG9C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAuB;IAGtC,OAAO,CAAC,KAAK,CAMX;gBAEU,MAAM,EAAE,eAAe;IAUnC,mFAAmF;IAC7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC5B,iCAAiC;IAC3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,iEAAiE;YACnD,oBAAoB;IA4BlC,mEAAmE;YACrD,UAAU;IAmBxB,sDAAsD;IACtD,OAAO,CAAC,gBAAgB;IAgJxB,8CAA8C;YAChC,QAAQ;IAiDtB,+BAA+B;IAC/B,QAAQ,IAAI,WAAW;IAIvB,2BAA2B;IAC3B,QAAQ,IAAI,WAAW,EAAE;IAIzB,+BAA+B;IAC/B,YAAY,IAAI,eAAe,EAAE;IAIjC,6BAA6B;IAC7B,UAAU,IAAI,aAAa,EAAE;IAI7B,4BAA4B;IAC5B,QAAQ;;;;;;;;;;;;IAWR,0DAA0D;IAC1D,QAAQ,IAAI,KAAK,GAAG,IAAI;IAIxB,2BAA2B;IAC3B,MAAM,IAAI,MAAM;IAQhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,GAAG;CAaZ"}
|
package/dist/bridge.js
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agenium/mcp-server — MCPBridge
|
|
3
|
+
*
|
|
4
|
+
* The main class that bridges an MCP server to the AGENIUM agent:// network.
|
|
5
|
+
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Spawns/connects to an MCP server
|
|
8
|
+
* 2. Discovers its tools, resources, and prompts
|
|
9
|
+
* 3. Creates an AGENIUM agent that exposes these as agent:// capabilities
|
|
10
|
+
* 4. Optionally registers on the AGENIUM DNS
|
|
11
|
+
* 5. Translates incoming agent:// requests to MCP calls
|
|
12
|
+
*/
|
|
13
|
+
import { EventEmitter } from 'node:events';
|
|
14
|
+
import { createAgent } from 'agenium';
|
|
15
|
+
import { MCPTransportManager } from './mcp-transport.js';
|
|
16
|
+
import { BridgeState, } from './types.js';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Defaults
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const DEFAULTS = {
|
|
21
|
+
port: 0, // auto-assign
|
|
22
|
+
dnsServer: '185.204.169.26',
|
|
23
|
+
dnsPort: 3000,
|
|
24
|
+
autoRegister: true,
|
|
25
|
+
toolCallTimeoutMs: 30_000,
|
|
26
|
+
exposeResources: true,
|
|
27
|
+
exposePrompts: true,
|
|
28
|
+
logLevel: 'info',
|
|
29
|
+
};
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// MCPBridge
|
|
32
|
+
// ============================================================================
|
|
33
|
+
export class MCPBridge extends EventEmitter {
|
|
34
|
+
config;
|
|
35
|
+
mcpTransport;
|
|
36
|
+
agent = null;
|
|
37
|
+
state = BridgeState.IDLE;
|
|
38
|
+
// Discovered capabilities
|
|
39
|
+
tools = [];
|
|
40
|
+
resources = [];
|
|
41
|
+
prompts = [];
|
|
42
|
+
// Stats
|
|
43
|
+
stats = {
|
|
44
|
+
toolCalls: 0,
|
|
45
|
+
toolErrors: 0,
|
|
46
|
+
resourceReads: 0,
|
|
47
|
+
promptGets: 0,
|
|
48
|
+
startedAt: 0,
|
|
49
|
+
};
|
|
50
|
+
constructor(config) {
|
|
51
|
+
super();
|
|
52
|
+
this.config = config;
|
|
53
|
+
this.mcpTransport = new MCPTransportManager(config.mcp);
|
|
54
|
+
}
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Lifecycle
|
|
57
|
+
// ============================================================================
|
|
58
|
+
/** Start the bridge: connect to MCP server, discover tools, start AGENIUM agent */
|
|
59
|
+
async start() {
|
|
60
|
+
if (this.state === BridgeState.READY || this.state === BridgeState.REGISTERED) {
|
|
61
|
+
throw new Error('Bridge already started');
|
|
62
|
+
}
|
|
63
|
+
this.setState(BridgeState.CONNECTING);
|
|
64
|
+
this.stats.startedAt = Date.now();
|
|
65
|
+
try {
|
|
66
|
+
// 1. Connect to MCP server
|
|
67
|
+
this.log('info', `Connecting to MCP server (${this.config.mcp.transport})...`);
|
|
68
|
+
await this.mcpTransport.connect();
|
|
69
|
+
this.log('info', 'MCP server connected');
|
|
70
|
+
// 2. Discover capabilities
|
|
71
|
+
await this.discoverCapabilities();
|
|
72
|
+
// 3. Create and start AGENIUM agent
|
|
73
|
+
await this.startAgent();
|
|
74
|
+
this.setState(BridgeState.READY);
|
|
75
|
+
this.emit('ready', {
|
|
76
|
+
tools: this.tools,
|
|
77
|
+
resources: this.resources,
|
|
78
|
+
prompts: this.prompts,
|
|
79
|
+
});
|
|
80
|
+
// 4. Register on DNS (if configured)
|
|
81
|
+
if (this.config.agent?.autoRegister !== false) {
|
|
82
|
+
await this.register();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
this.setState(BridgeState.ERROR);
|
|
87
|
+
this.emit('error', err);
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Stop the bridge gracefully */
|
|
92
|
+
async stop() {
|
|
93
|
+
this.log('info', 'Stopping bridge...');
|
|
94
|
+
if (this.agent) {
|
|
95
|
+
await this.agent.stop();
|
|
96
|
+
this.agent = null;
|
|
97
|
+
}
|
|
98
|
+
await this.mcpTransport.disconnect();
|
|
99
|
+
this.setState(BridgeState.STOPPED);
|
|
100
|
+
this.emit('stopped');
|
|
101
|
+
}
|
|
102
|
+
// ============================================================================
|
|
103
|
+
// Discovery
|
|
104
|
+
// ============================================================================
|
|
105
|
+
/** Discover tools, resources, and prompts from the MCP server */
|
|
106
|
+
async discoverCapabilities() {
|
|
107
|
+
this.log('info', 'Discovering MCP capabilities...');
|
|
108
|
+
// Tools (always)
|
|
109
|
+
this.tools = await this.mcpTransport.listTools();
|
|
110
|
+
this.log('info', `Found ${this.tools.length} tools: ${this.tools.map((t) => t.name).join(', ')}`);
|
|
111
|
+
// Resources
|
|
112
|
+
if (this.config.bridge?.exposeResources !== false) {
|
|
113
|
+
this.resources = await this.mcpTransport.listResources();
|
|
114
|
+
if (this.resources.length > 0) {
|
|
115
|
+
this.log('info', `Found ${this.resources.length} resources`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Prompts
|
|
119
|
+
if (this.config.bridge?.exposePrompts !== false) {
|
|
120
|
+
this.prompts = await this.mcpTransport.listPrompts();
|
|
121
|
+
if (this.prompts.length > 0) {
|
|
122
|
+
this.log('info', `Found ${this.prompts.length} prompts`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// AGENIUM Agent
|
|
128
|
+
// ============================================================================
|
|
129
|
+
/** Create and start the AGENIUM agent, wire up request handlers */
|
|
130
|
+
async startAgent() {
|
|
131
|
+
const port = this.config.agent?.port ?? DEFAULTS.port;
|
|
132
|
+
const dnsServer = this.config.agent?.dnsServer ?? DEFAULTS.dnsServer;
|
|
133
|
+
const dataDir = this.config.agent?.dataDir;
|
|
134
|
+
this.agent = createAgent(this.config.name, {
|
|
135
|
+
listenPort: port,
|
|
136
|
+
dnsServer,
|
|
137
|
+
persistence: true,
|
|
138
|
+
...(dataDir ? { dataDir } : {}),
|
|
139
|
+
});
|
|
140
|
+
// Wire up protocol handlers
|
|
141
|
+
this.registerHandlers();
|
|
142
|
+
await this.agent.start();
|
|
143
|
+
this.log('info', `AGENIUM agent "${this.config.name}" started`);
|
|
144
|
+
}
|
|
145
|
+
/** Register protocol request handlers on the agent */
|
|
146
|
+
registerHandlers() {
|
|
147
|
+
if (!this.agent)
|
|
148
|
+
return;
|
|
149
|
+
// ---- tools/list ----
|
|
150
|
+
this.agent.onRequest('tools/list', async () => {
|
|
151
|
+
return {
|
|
152
|
+
tools: this.tools.map((t) => ({
|
|
153
|
+
name: t.name,
|
|
154
|
+
description: t.description,
|
|
155
|
+
inputSchema: t.inputSchema,
|
|
156
|
+
})),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
// ---- tools/call ----
|
|
160
|
+
this.agent.onRequest('tools/call', async (_frame, data, sessionId) => {
|
|
161
|
+
const params = data;
|
|
162
|
+
if (!params?.name) {
|
|
163
|
+
return { error: { code: 'INVALID_PARAMS', message: 'Missing tool name' } };
|
|
164
|
+
}
|
|
165
|
+
// Verify tool exists
|
|
166
|
+
const tool = this.tools.find((t) => t.name === params.name);
|
|
167
|
+
if (!tool) {
|
|
168
|
+
return {
|
|
169
|
+
error: {
|
|
170
|
+
code: 'TOOL_NOT_FOUND',
|
|
171
|
+
message: `Tool "${params.name}" not found. Available: ${this.tools.map((t) => t.name).join(', ')}`,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const startTime = Date.now();
|
|
176
|
+
this.stats.toolCalls++;
|
|
177
|
+
this.emit('tool:call', { tool: params.name, sessionId });
|
|
178
|
+
try {
|
|
179
|
+
const result = await this.mcpTransport.callTool(params.name, params.arguments);
|
|
180
|
+
const durationMs = Date.now() - startTime;
|
|
181
|
+
this.emit('tool:result', { tool: params.name, sessionId, durationMs });
|
|
182
|
+
this.log('debug', `Tool ${params.name} completed in ${durationMs}ms`);
|
|
183
|
+
return {
|
|
184
|
+
content: result.content,
|
|
185
|
+
isError: result.isError,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
this.stats.toolErrors++;
|
|
190
|
+
const errorMsg = err.message;
|
|
191
|
+
this.emit('tool:error', { tool: params.name, sessionId, error: errorMsg });
|
|
192
|
+
this.log('error', `Tool ${params.name} failed: ${errorMsg}`);
|
|
193
|
+
return {
|
|
194
|
+
error: { code: 'TOOL_CALL_FAILED', message: errorMsg },
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
// ---- resources/list ----
|
|
199
|
+
this.agent.onRequest('resources/list', async () => {
|
|
200
|
+
return {
|
|
201
|
+
resources: this.resources.map((r) => ({
|
|
202
|
+
uri: r.uri,
|
|
203
|
+
name: r.name,
|
|
204
|
+
description: r.description,
|
|
205
|
+
mimeType: r.mimeType,
|
|
206
|
+
})),
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
// ---- resources/read ----
|
|
210
|
+
this.agent.onRequest('resources/read', async (_frame, data) => {
|
|
211
|
+
const params = data;
|
|
212
|
+
if (!params?.uri) {
|
|
213
|
+
return { error: { code: 'INVALID_PARAMS', message: 'Missing resource URI' } };
|
|
214
|
+
}
|
|
215
|
+
this.stats.resourceReads++;
|
|
216
|
+
try {
|
|
217
|
+
const result = await this.mcpTransport.readResource(params.uri);
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
return {
|
|
222
|
+
error: { code: 'RESOURCE_READ_FAILED', message: err.message },
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
// ---- prompts/list ----
|
|
227
|
+
this.agent.onRequest('prompts/list', async () => {
|
|
228
|
+
return {
|
|
229
|
+
prompts: this.prompts.map((p) => ({
|
|
230
|
+
name: p.name,
|
|
231
|
+
description: p.description,
|
|
232
|
+
arguments: p.arguments,
|
|
233
|
+
})),
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
// ---- prompts/get ----
|
|
237
|
+
this.agent.onRequest('prompts/get', async (_frame, data) => {
|
|
238
|
+
const params = data;
|
|
239
|
+
if (!params?.name) {
|
|
240
|
+
return { error: { code: 'INVALID_PARAMS', message: 'Missing prompt name' } };
|
|
241
|
+
}
|
|
242
|
+
this.stats.promptGets++;
|
|
243
|
+
try {
|
|
244
|
+
const result = await this.mcpTransport.getPrompt(params.name, params.arguments);
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
return {
|
|
249
|
+
error: { code: 'PROMPT_GET_FAILED', message: err.message },
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
// ---- capabilities ----
|
|
254
|
+
this.agent.onRequest('capabilities', async () => {
|
|
255
|
+
return {
|
|
256
|
+
agent: this.config.name,
|
|
257
|
+
protocol: 'mcp-bridge/1.0',
|
|
258
|
+
tools: this.tools.map((t) => t.name),
|
|
259
|
+
resources: this.resources.map((r) => r.uri),
|
|
260
|
+
prompts: this.prompts.map((p) => p.name),
|
|
261
|
+
uptime: Date.now() - this.stats.startedAt,
|
|
262
|
+
stats: { ...this.stats },
|
|
263
|
+
};
|
|
264
|
+
});
|
|
265
|
+
// ---- ping ----
|
|
266
|
+
this.agent.onRequest('ping', async () => {
|
|
267
|
+
return { pong: true, timestamp: Date.now() };
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
// ============================================================================
|
|
271
|
+
// DNS Registration
|
|
272
|
+
// ============================================================================
|
|
273
|
+
/** Register this bridge on the AGENIUM DNS */
|
|
274
|
+
async register() {
|
|
275
|
+
if (!this.agent)
|
|
276
|
+
return;
|
|
277
|
+
const publicHost = this.config.agent?.publicHost;
|
|
278
|
+
if (!publicHost) {
|
|
279
|
+
this.log('warn', 'No publicHost configured — skipping DNS registration. Set agent.publicHost to register on the network.');
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const dnsServer = this.config.agent?.dnsServer ?? DEFAULTS.dnsServer;
|
|
283
|
+
const dnsPort = this.config.agent?.dnsPort ?? DEFAULTS.dnsPort;
|
|
284
|
+
const registration = this.agent.getDNSRegistration(publicHost);
|
|
285
|
+
// Add MCP tools as capabilities
|
|
286
|
+
registration.capabilities = [
|
|
287
|
+
'mcp-bridge',
|
|
288
|
+
...this.tools.map((t) => `tool:${t.name}`),
|
|
289
|
+
...(this.resources.length > 0 ? ['resources'] : []),
|
|
290
|
+
...(this.prompts.length > 0 ? ['prompts'] : []),
|
|
291
|
+
];
|
|
292
|
+
try {
|
|
293
|
+
const url = `http://${dnsServer}:${dnsPort}/agent/register`;
|
|
294
|
+
const response = await fetch(url, {
|
|
295
|
+
method: 'POST',
|
|
296
|
+
headers: { 'Content-Type': 'application/json' },
|
|
297
|
+
body: JSON.stringify(registration),
|
|
298
|
+
});
|
|
299
|
+
if (!response.ok) {
|
|
300
|
+
const body = await response.text();
|
|
301
|
+
this.log('warn', `DNS registration failed (${response.status}): ${body}`);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const endpoint = registration.endpoint;
|
|
305
|
+
this.setState(BridgeState.REGISTERED);
|
|
306
|
+
this.emit('registered', { name: this.config.name, endpoint });
|
|
307
|
+
this.log('info', `Registered on AGENIUM DNS as agent://${this.config.name}`);
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
this.log('warn', `DNS registration failed: ${err.message}`);
|
|
311
|
+
// Not fatal — bridge still works for direct connections
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// ============================================================================
|
|
315
|
+
// Public API
|
|
316
|
+
// ============================================================================
|
|
317
|
+
/** Get current bridge state */
|
|
318
|
+
getState() {
|
|
319
|
+
return this.state;
|
|
320
|
+
}
|
|
321
|
+
/** Get discovered tools */
|
|
322
|
+
getTools() {
|
|
323
|
+
return [...this.tools];
|
|
324
|
+
}
|
|
325
|
+
/** Get discovered resources */
|
|
326
|
+
getResources() {
|
|
327
|
+
return [...this.resources];
|
|
328
|
+
}
|
|
329
|
+
/** Get discovered prompts */
|
|
330
|
+
getPrompts() {
|
|
331
|
+
return [...this.prompts];
|
|
332
|
+
}
|
|
333
|
+
/** Get bridge statistics */
|
|
334
|
+
getStats() {
|
|
335
|
+
return {
|
|
336
|
+
state: this.state,
|
|
337
|
+
tools: this.tools.length,
|
|
338
|
+
resources: this.resources.length,
|
|
339
|
+
prompts: this.prompts.length,
|
|
340
|
+
...this.stats,
|
|
341
|
+
uptimeMs: this.stats.startedAt > 0 ? Date.now() - this.stats.startedAt : 0,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/** Get the underlying AGENIUM agent (for advanced use) */
|
|
345
|
+
getAgent() {
|
|
346
|
+
return this.agent;
|
|
347
|
+
}
|
|
348
|
+
/** Get the agent:// URI */
|
|
349
|
+
getURI() {
|
|
350
|
+
return `agent://${this.config.name}`;
|
|
351
|
+
}
|
|
352
|
+
// ============================================================================
|
|
353
|
+
// Internal
|
|
354
|
+
// ============================================================================
|
|
355
|
+
setState(state) {
|
|
356
|
+
this.state = state;
|
|
357
|
+
}
|
|
358
|
+
log(level, message) {
|
|
359
|
+
const configLevel = this.config.bridge?.logLevel ?? DEFAULTS.logLevel;
|
|
360
|
+
const levels = ['debug', 'info', 'warn', 'error', 'silent'];
|
|
361
|
+
if (levels.indexOf(level) < levels.indexOf(configLevel))
|
|
362
|
+
return;
|
|
363
|
+
const prefix = `[@agenium/mcp-server:${this.config.name}]`;
|
|
364
|
+
switch (level) {
|
|
365
|
+
case 'debug':
|
|
366
|
+
console.debug(prefix, message);
|
|
367
|
+
break;
|
|
368
|
+
case 'info':
|
|
369
|
+
console.log(prefix, message);
|
|
370
|
+
break;
|
|
371
|
+
case 'warn':
|
|
372
|
+
console.warn(prefix, message);
|
|
373
|
+
break;
|
|
374
|
+
case 'error':
|
|
375
|
+
console.error(prefix, message);
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @agenium/mcp-server CLI
|
|
4
|
+
*
|
|
5
|
+
* Quick way to bridge an MCP server to the AGENIUM network.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx @agenium/mcp-server --name weather-tools --command npx --args "-y @modelcontextprotocol/server-weather"
|
|
9
|
+
* npx @agenium/mcp-server --name my-tools --sse http://localhost:3001/sse
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
|