mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-02-06 13:33:11 +00:00
chore: add pre-built dist folder for npx usage
This commit is contained in:
committed by
Romuald Członkowski
parent
a70d96a373
commit
5057481e70
96
dist/utils/mcp-client.js
vendored
Normal file
96
dist/utils/mcp-client.js
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.MCPClient = void 0;
|
||||
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
||||
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
||||
const websocket_js_1 = require("@modelcontextprotocol/sdk/client/websocket.js");
|
||||
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
||||
class MCPClient {
|
||||
constructor(config) {
|
||||
this.connected = false;
|
||||
this.config = config;
|
||||
this.client = new index_js_1.Client({
|
||||
name: 'n8n-mcp-client',
|
||||
version: '1.0.0',
|
||||
}, {
|
||||
capabilities: {},
|
||||
});
|
||||
}
|
||||
async connect() {
|
||||
if (this.connected) {
|
||||
return;
|
||||
}
|
||||
let transport;
|
||||
switch (this.config.connectionType) {
|
||||
case 'websocket':
|
||||
const wsUrl = this.config.serverUrl.replace(/^http/, 'ws');
|
||||
transport = new websocket_js_1.WebSocketClientTransport(new URL(wsUrl));
|
||||
break;
|
||||
case 'stdio':
|
||||
const [command, ...args] = this.config.serverUrl.split(' ');
|
||||
transport = new stdio_js_1.StdioClientTransport({
|
||||
command,
|
||||
args,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
throw new Error(`HTTP transport is not yet supported for MCP clients`);
|
||||
}
|
||||
await this.client.connect(transport);
|
||||
this.connected = true;
|
||||
}
|
||||
async disconnect() {
|
||||
if (this.connected) {
|
||||
await this.client.close();
|
||||
this.connected = false;
|
||||
}
|
||||
}
|
||||
async listTools() {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({ method: 'tools/list' }, types_js_1.ListToolsResultSchema);
|
||||
}
|
||||
async callTool(name, args) {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({
|
||||
method: 'tools/call',
|
||||
params: {
|
||||
name,
|
||||
arguments: args,
|
||||
},
|
||||
}, types_js_1.CallToolResultSchema);
|
||||
}
|
||||
async listResources() {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({ method: 'resources/list' }, types_js_1.ListResourcesResultSchema);
|
||||
}
|
||||
async readResource(uri) {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({
|
||||
method: 'resources/read',
|
||||
params: {
|
||||
uri,
|
||||
},
|
||||
}, types_js_1.ReadResourceResultSchema);
|
||||
}
|
||||
async listPrompts() {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({ method: 'prompts/list' }, types_js_1.ListPromptsResultSchema);
|
||||
}
|
||||
async getPrompt(name, args) {
|
||||
await this.ensureConnected();
|
||||
return await this.client.request({
|
||||
method: 'prompts/get',
|
||||
params: {
|
||||
name,
|
||||
arguments: args,
|
||||
},
|
||||
}, types_js_1.GetPromptResultSchema);
|
||||
}
|
||||
async ensureConnected() {
|
||||
if (!this.connected) {
|
||||
await this.connect();
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.MCPClient = MCPClient;
|
||||
//# sourceMappingURL=mcp-client.js.map
|
||||
Reference in New Issue
Block a user