@intlayer/mcp 8.1.2 → 8.1.3
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/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -29
- package/dist/cjs/client/client.cjs +1 -19
- package/dist/cjs/client/client.cjs.map +1 -1
- package/dist/cjs/client/sse.cjs +1 -60
- package/dist/cjs/client/sse.cjs.map +1 -1
- package/dist/cjs/server/server.cjs +1 -36
- package/dist/cjs/server/server.cjs.map +1 -1
- package/dist/cjs/server/sse.cjs +1 -69
- package/dist/cjs/server/sse.cjs.map +1 -1
- package/dist/cjs/server/stdio.cjs +1 -17
- package/dist/cjs/server/stdio.cjs.map +1 -1
- package/dist/cjs/tools/cli.cjs +1 -326
- package/dist/cjs/tools/cli.cjs.map +1 -1
- package/dist/cjs/tools/docs.cjs +2 -110
- package/dist/cjs/tools/docs.cjs.map +1 -1
- package/dist/cjs/tools/installSkills.cjs +3 -146
- package/dist/cjs/tools/installSkills.cjs.map +1 -1
- package/dist/esm/client/client.mjs +1 -16
- package/dist/esm/client/client.mjs.map +1 -1
- package/dist/esm/client/sse.mjs +1 -59
- package/dist/esm/client/sse.mjs.map +1 -1
- package/dist/esm/server/server.mjs +1 -33
- package/dist/esm/server/server.mjs.map +1 -1
- package/dist/esm/server/sse.mjs +1 -66
- package/dist/esm/server/sse.mjs.map +1 -1
- package/dist/esm/server/stdio.mjs +1 -16
- package/dist/esm/server/stdio.mjs.map +1 -1
- package/dist/esm/tools/cli.mjs +1 -323
- package/dist/esm/tools/cli.mjs.map +1 -1
- package/dist/esm/tools/docs.mjs +2 -107
- package/dist/esm/tools/docs.mjs.map +1 -1
- package/dist/esm/tools/installSkills.mjs +3 -141
- package/dist/esm/tools/installSkills.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -1,147 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
let node_readline = require("node:readline");
|
|
5
|
-
node_readline = require_runtime.__toESM(node_readline);
|
|
6
|
-
let zod = require("zod");
|
|
7
|
-
zod = require_runtime.__toESM(zod);
|
|
8
|
-
|
|
9
|
-
//#region src/tools/installSkills.ts
|
|
10
|
-
const loadInstallSkillsTool = (server) => {
|
|
11
|
-
server.registerTool("intlayer-install-skills", {
|
|
12
|
-
title: "Install Intlayer Skills",
|
|
13
|
-
description: "Install Intlayer documentation and skills to the project to assist AI agents. Ask the user for the platform (Cursor, VSCode, OpenCode, Claude, etc.) and which skills they want to install before calling this tool.",
|
|
14
|
-
inputSchema: {
|
|
15
|
-
platform: zod.default.enum([
|
|
16
|
-
"Cursor",
|
|
17
|
-
"Windsurf",
|
|
18
|
-
"Trae",
|
|
19
|
-
"OpenCode",
|
|
20
|
-
"GitHub",
|
|
21
|
-
"Claude",
|
|
22
|
-
"VSCode",
|
|
23
|
-
"Antigravity",
|
|
24
|
-
"Augment",
|
|
25
|
-
"OpenClaw",
|
|
26
|
-
"Cline",
|
|
27
|
-
"CodeBuddy",
|
|
28
|
-
"CommandCode",
|
|
29
|
-
"Continue",
|
|
30
|
-
"Crush",
|
|
31
|
-
"Droid",
|
|
32
|
-
"Goose",
|
|
33
|
-
"Junie",
|
|
34
|
-
"IFlow",
|
|
35
|
-
"KiloCode",
|
|
36
|
-
"Kiro",
|
|
37
|
-
"Kode",
|
|
38
|
-
"MCPJam",
|
|
39
|
-
"MistralVibe",
|
|
40
|
-
"Mux",
|
|
41
|
-
"OpenHands",
|
|
42
|
-
"Pi",
|
|
43
|
-
"Qoder",
|
|
44
|
-
"Qwen",
|
|
45
|
-
"RooCode",
|
|
46
|
-
"TraeCN",
|
|
47
|
-
"Zencoder",
|
|
48
|
-
"Neovate",
|
|
49
|
-
"Pochi",
|
|
50
|
-
"Other"
|
|
51
|
-
]).describe("The platform to install skills for"),
|
|
52
|
-
skills: zod.default.array(zod.default.enum(_intlayer_chokidar_cli.SKILLS)).describe("List of skills to install"),
|
|
53
|
-
projectRoot: zod.default.string().optional().describe("Root directory of the project. Defaults to current directory.")
|
|
54
|
-
}
|
|
55
|
-
}, async ({ platform, skills, projectRoot }) => {
|
|
56
|
-
try {
|
|
57
|
-
return { content: [{
|
|
58
|
-
type: "text",
|
|
59
|
-
text: await (0, _intlayer_chokidar_cli.installSkills)(projectRoot || process.cwd(), platform, skills)
|
|
60
|
-
}] };
|
|
61
|
-
} catch (error) {
|
|
62
|
-
return {
|
|
63
|
-
content: [{
|
|
64
|
-
type: "text",
|
|
65
|
-
text: `Failed to install skills: ${error instanceof Error ? error.message : String(error)}`
|
|
66
|
-
}],
|
|
67
|
-
isError: true
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
const runInstallSkillsCLI = async () => {
|
|
73
|
-
const rl = node_readline.createInterface({
|
|
74
|
-
input: process.stdin,
|
|
75
|
-
output: process.stdout
|
|
76
|
-
});
|
|
77
|
-
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
|
|
78
|
-
try {
|
|
79
|
-
console.log("Install Intlayer Skills");
|
|
80
|
-
console.log("-----------------------");
|
|
81
|
-
const platformInput = await question("Which platform are you using? (Cursor, Windsurf, Trae, OpenCode, GitHub, Claude, VSCode, Cline, RooCode, etc. or \"Other\"): ");
|
|
82
|
-
const platform = [
|
|
83
|
-
"Cursor",
|
|
84
|
-
"Windsurf",
|
|
85
|
-
"Trae",
|
|
86
|
-
"OpenCode",
|
|
87
|
-
"GitHub",
|
|
88
|
-
"Claude",
|
|
89
|
-
"VSCode",
|
|
90
|
-
"Antigravity",
|
|
91
|
-
"Augment",
|
|
92
|
-
"OpenClaw",
|
|
93
|
-
"Cline",
|
|
94
|
-
"CodeBuddy",
|
|
95
|
-
"CommandCode",
|
|
96
|
-
"Continue",
|
|
97
|
-
"Crush",
|
|
98
|
-
"Droid",
|
|
99
|
-
"Goose",
|
|
100
|
-
"Junie",
|
|
101
|
-
"IFlow",
|
|
102
|
-
"KiloCode",
|
|
103
|
-
"Kiro",
|
|
104
|
-
"Kode",
|
|
105
|
-
"MCPJam",
|
|
106
|
-
"MistralVibe",
|
|
107
|
-
"Mux",
|
|
108
|
-
"OpenHands",
|
|
109
|
-
"Pi",
|
|
110
|
-
"Qoder",
|
|
111
|
-
"Qwen",
|
|
112
|
-
"RooCode",
|
|
113
|
-
"TraeCN",
|
|
114
|
-
"Zencoder",
|
|
115
|
-
"Neovate",
|
|
116
|
-
"Pochi",
|
|
117
|
-
"Other"
|
|
118
|
-
].find((p) => p.toLowerCase() === platformInput.trim().toLowerCase()) || "Other";
|
|
119
|
-
console.log(`Selected platform: ${platform}`);
|
|
120
|
-
const availableSkills = _intlayer_chokidar_cli.SKILLS;
|
|
121
|
-
console.log("\nAvailable skills:");
|
|
122
|
-
availableSkills.forEach((s, i) => {
|
|
123
|
-
console.log(`${i + 1}. ${s}`);
|
|
124
|
-
});
|
|
125
|
-
const skillsInput = await question("\nWhich skills do you want to install? (comma separated numbers, e.g. 1,2,3 or \"all\"): ");
|
|
126
|
-
let selectedSkills = [];
|
|
127
|
-
if (skillsInput.trim().toLowerCase() === "all") selectedSkills = [...availableSkills];
|
|
128
|
-
else selectedSkills = skillsInput.split(",").map((s) => parseInt(s.trim()) - 1).filter((i) => !isNaN(i) && i >= 0 && i < availableSkills.length).map((i) => availableSkills[i]);
|
|
129
|
-
if (selectedSkills.length === 0) {
|
|
130
|
-
console.log("No valid skills selected. Exiting.");
|
|
131
|
-
rl.close();
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
console.log(`Installing skills: ${selectedSkills.join(", ")}...`);
|
|
135
|
-
const result = await (0, _intlayer_chokidar_cli.installSkills)(process.cwd(), platform, selectedSkills);
|
|
136
|
-
console.log(result);
|
|
137
|
-
} catch (error) {
|
|
138
|
-
console.error("Error:", error);
|
|
139
|
-
} finally {
|
|
140
|
-
rl.close();
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
//#endregion
|
|
145
|
-
exports.loadInstallSkillsTool = loadInstallSkillsTool;
|
|
146
|
-
exports.runInstallSkillsCLI = runInstallSkillsCLI;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`@intlayer/chokidar/cli`),n=require(`node:readline`);n=e.__toESM(n);let r=require(`zod`);r=e.__toESM(r);const i=e=>{e.registerTool(`intlayer-install-skills`,{title:`Install Intlayer Skills`,description:`Install Intlayer documentation and skills to the project to assist AI agents. Ask the user for the platform (Cursor, VSCode, OpenCode, Claude, etc.) and which skills they want to install before calling this tool.`,inputSchema:{platform:r.default.enum(`Cursor.Windsurf.Trae.OpenCode.GitHub.Claude.VSCode.Antigravity.Augment.OpenClaw.Cline.CodeBuddy.CommandCode.Continue.Crush.Droid.Goose.Junie.IFlow.KiloCode.Kiro.Kode.MCPJam.MistralVibe.Mux.OpenHands.Pi.Qoder.Qwen.RooCode.TraeCN.Zencoder.Neovate.Pochi.Other`.split(`.`)).describe(`The platform to install skills for`),skills:r.default.array(r.default.enum(t.SKILLS)).describe(`List of skills to install`),projectRoot:r.default.string().optional().describe(`Root directory of the project. Defaults to current directory.`)}},async({platform:e,skills:n,projectRoot:r})=>{try{return{content:[{type:`text`,text:await(0,t.installSkills)(r||process.cwd(),e,n)}]}}catch(e){return{content:[{type:`text`,text:`Failed to install skills: ${e instanceof Error?e.message:String(e)}`}],isError:!0}}})},a=async()=>{let e=n.createInterface({input:process.stdin,output:process.stdout}),r=t=>new Promise(n=>e.question(t,n));try{console.log(`Install Intlayer Skills`),console.log(`-----------------------`);let n=await r(`Which platform are you using? (Cursor, Windsurf, Trae, OpenCode, GitHub, Claude, VSCode, Cline, RooCode, etc. or "Other"): `),i=`Cursor.Windsurf.Trae.OpenCode.GitHub.Claude.VSCode.Antigravity.Augment.OpenClaw.Cline.CodeBuddy.CommandCode.Continue.Crush.Droid.Goose.Junie.IFlow.KiloCode.Kiro.Kode.MCPJam.MistralVibe.Mux.OpenHands.Pi.Qoder.Qwen.RooCode.TraeCN.Zencoder.Neovate.Pochi.Other`.split(`.`).find(e=>e.toLowerCase()===n.trim().toLowerCase())||`Other`;console.log(`Selected platform: ${i}`);let a=t.SKILLS;console.log(`
|
|
2
|
+
Available skills:`),a.forEach((e,t)=>{console.log(`${t+1}. ${e}`)});let o=await r(`
|
|
3
|
+
Which skills do you want to install? (comma separated numbers, e.g. 1,2,3 or "all"): `),s=[];if(s=o.trim().toLowerCase()===`all`?[...a]:o.split(`,`).map(e=>parseInt(e.trim())-1).filter(e=>!isNaN(e)&&e>=0&&e<a.length).map(e=>a[e]),s.length===0){console.log(`No valid skills selected. Exiting.`),e.close();return}console.log(`Installing skills: ${s.join(`, `)}...`);let c=await(0,t.installSkills)(process.cwd(),i,s);console.log(c)}catch(e){console.error(`Error:`,e)}finally{e.close()}};exports.loadInstallSkillsTool=i,exports.runInstallSkillsCLI=a;
|
|
147
4
|
//# sourceMappingURL=installSkills.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installSkills.cjs","names":["z","SKILLS","readline"],"sources":["../../../src/tools/installSkills.ts"],"sourcesContent":["import * as readline from 'node:readline';\nimport { installSkills, SKILLS, type Skill } from '@intlayer/chokidar/cli';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport z from 'zod';\n\nexport const loadInstallSkillsTool = (server: McpServer): void => {\n server.registerTool(\n 'intlayer-install-skills',\n {\n title: 'Install Intlayer Skills',\n description:\n 'Install Intlayer documentation and skills to the project to assist AI agents. Ask the user for the platform (Cursor, VSCode, OpenCode, Claude, etc.) and which skills they want to install before calling this tool.',\n inputSchema: {\n platform: z\n .enum([\n 'Cursor',\n 'Windsurf',\n 'Trae',\n 'OpenCode',\n 'GitHub',\n 'Claude',\n 'VSCode',\n 'Antigravity',\n 'Augment',\n 'OpenClaw',\n 'Cline',\n 'CodeBuddy',\n 'CommandCode',\n 'Continue',\n 'Crush',\n 'Droid',\n 'Goose',\n 'Junie',\n 'IFlow',\n 'KiloCode',\n 'Kiro',\n 'Kode',\n 'MCPJam',\n 'MistralVibe',\n 'Mux',\n 'OpenHands',\n 'Pi',\n 'Qoder',\n 'Qwen',\n 'RooCode',\n 'TraeCN',\n 'Zencoder',\n 'Neovate',\n 'Pochi',\n 'Other',\n ])\n .describe('The platform to install skills for'),\n skills: z.array(z.enum(SKILLS)).describe('List of skills to install'),\n projectRoot: z\n .string()\n .optional()\n .describe(\n 'Root directory of the project. Defaults to current directory.'\n ),\n },\n },\n async ({ platform, skills, projectRoot }) => {\n try {\n const root = projectRoot || process.cwd();\n const message = await installSkills(\n root,\n platform as any,\n skills as any\n );\n\n return {\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Failed to install skills: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n isError: true,\n };\n }\n }\n );\n};\n\nexport const runInstallSkillsCLI = async (): Promise<void> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const question = (query: string): Promise<string> =>\n new Promise((resolve) => rl.question(query, resolve));\n\n try {\n console.log('Install Intlayer Skills');\n console.log('-----------------------');\n\n const platformInput = await question(\n 'Which platform are you using? (Cursor, Windsurf, Trae, OpenCode, GitHub, Claude, VSCode, Cline, RooCode, etc. or \"Other\"): '\n );\n const platform = ([\n 'Cursor',\n 'Windsurf',\n 'Trae',\n 'OpenCode',\n 'GitHub',\n 'Claude',\n 'VSCode',\n 'Antigravity',\n 'Augment',\n 'OpenClaw',\n 'Cline',\n 'CodeBuddy',\n 'CommandCode',\n 'Continue',\n 'Crush',\n 'Droid',\n 'Goose',\n 'Junie',\n 'IFlow',\n 'KiloCode',\n 'Kiro',\n 'Kode',\n 'MCPJam',\n 'MistralVibe',\n 'Mux',\n 'OpenHands',\n 'Pi',\n 'Qoder',\n 'Qwen',\n 'RooCode',\n 'TraeCN',\n 'Zencoder',\n 'Neovate',\n 'Pochi',\n 'Other',\n ].find((p) => p.toLowerCase() === platformInput.trim().toLowerCase()) ||\n 'Other') as\n | 'Cursor'\n | 'Windsurf'\n | 'Trae'\n | 'OpenCode'\n | 'GitHub'\n | 'Claude'\n | 'VSCode'\n | 'Antigravity'\n | 'Augment'\n | 'OpenClaw'\n | 'Cline'\n | 'CodeBuddy'\n | 'CommandCode'\n | 'Continue'\n | 'Crush'\n | 'Droid'\n | 'Goose'\n | 'Junie'\n | 'IFlow'\n | 'KiloCode'\n | 'Kiro'\n | 'Kode'\n | 'MCPJam'\n | 'MistralVibe'\n | 'Mux'\n | 'OpenHands'\n | 'Pi'\n | 'Qoder'\n | 'Qwen'\n | 'RooCode'\n | 'TraeCN'\n | 'Zencoder'\n | 'Neovate'\n | 'Pochi'\n | 'Other';\n\n console.log(`Selected platform: ${platform}`);\n\n const availableSkills = SKILLS;\n console.log('\\nAvailable skills:');\n availableSkills.forEach((s, i) => {\n console.log(`${i + 1}. ${s}`);\n });\n\n const skillsInput = await question(\n '\\nWhich skills do you want to install? (comma separated numbers, e.g. 1,2,3 or \"all\"): '\n );\n\n let selectedSkills: Skill[] = [];\n if (skillsInput.trim().toLowerCase() === 'all') {\n selectedSkills = [...availableSkills];\n } else {\n const indices = skillsInput\n .split(',')\n .map((s) => parseInt(s.trim()) - 1)\n .filter((i) => !isNaN(i) && i >= 0 && i < availableSkills.length);\n selectedSkills = indices.map((i) => availableSkills[i] as any);\n }\n\n if (selectedSkills.length === 0) {\n console.log('No valid skills selected. Exiting.');\n rl.close();\n return;\n }\n\n console.log(`Installing skills: ${selectedSkills.join(', ')}...`);\n const result = await installSkills(process.cwd(), platform, selectedSkills);\n console.log(result);\n } catch (error) {\n console.error('Error:', error);\n } finally {\n rl.close();\n }\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"installSkills.cjs","names":["z","SKILLS","readline"],"sources":["../../../src/tools/installSkills.ts"],"sourcesContent":["import * as readline from 'node:readline';\nimport { installSkills, SKILLS, type Skill } from '@intlayer/chokidar/cli';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport z from 'zod';\n\nexport const loadInstallSkillsTool = (server: McpServer): void => {\n server.registerTool(\n 'intlayer-install-skills',\n {\n title: 'Install Intlayer Skills',\n description:\n 'Install Intlayer documentation and skills to the project to assist AI agents. Ask the user for the platform (Cursor, VSCode, OpenCode, Claude, etc.) and which skills they want to install before calling this tool.',\n inputSchema: {\n platform: z\n .enum([\n 'Cursor',\n 'Windsurf',\n 'Trae',\n 'OpenCode',\n 'GitHub',\n 'Claude',\n 'VSCode',\n 'Antigravity',\n 'Augment',\n 'OpenClaw',\n 'Cline',\n 'CodeBuddy',\n 'CommandCode',\n 'Continue',\n 'Crush',\n 'Droid',\n 'Goose',\n 'Junie',\n 'IFlow',\n 'KiloCode',\n 'Kiro',\n 'Kode',\n 'MCPJam',\n 'MistralVibe',\n 'Mux',\n 'OpenHands',\n 'Pi',\n 'Qoder',\n 'Qwen',\n 'RooCode',\n 'TraeCN',\n 'Zencoder',\n 'Neovate',\n 'Pochi',\n 'Other',\n ])\n .describe('The platform to install skills for'),\n skills: z.array(z.enum(SKILLS)).describe('List of skills to install'),\n projectRoot: z\n .string()\n .optional()\n .describe(\n 'Root directory of the project. Defaults to current directory.'\n ),\n },\n },\n async ({ platform, skills, projectRoot }) => {\n try {\n const root = projectRoot || process.cwd();\n const message = await installSkills(\n root,\n platform as any,\n skills as any\n );\n\n return {\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Failed to install skills: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n isError: true,\n };\n }\n }\n );\n};\n\nexport const runInstallSkillsCLI = async (): Promise<void> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const question = (query: string): Promise<string> =>\n new Promise((resolve) => rl.question(query, resolve));\n\n try {\n console.log('Install Intlayer Skills');\n console.log('-----------------------');\n\n const platformInput = await question(\n 'Which platform are you using? (Cursor, Windsurf, Trae, OpenCode, GitHub, Claude, VSCode, Cline, RooCode, etc. or \"Other\"): '\n );\n const platform = ([\n 'Cursor',\n 'Windsurf',\n 'Trae',\n 'OpenCode',\n 'GitHub',\n 'Claude',\n 'VSCode',\n 'Antigravity',\n 'Augment',\n 'OpenClaw',\n 'Cline',\n 'CodeBuddy',\n 'CommandCode',\n 'Continue',\n 'Crush',\n 'Droid',\n 'Goose',\n 'Junie',\n 'IFlow',\n 'KiloCode',\n 'Kiro',\n 'Kode',\n 'MCPJam',\n 'MistralVibe',\n 'Mux',\n 'OpenHands',\n 'Pi',\n 'Qoder',\n 'Qwen',\n 'RooCode',\n 'TraeCN',\n 'Zencoder',\n 'Neovate',\n 'Pochi',\n 'Other',\n ].find((p) => p.toLowerCase() === platformInput.trim().toLowerCase()) ||\n 'Other') as\n | 'Cursor'\n | 'Windsurf'\n | 'Trae'\n | 'OpenCode'\n | 'GitHub'\n | 'Claude'\n | 'VSCode'\n | 'Antigravity'\n | 'Augment'\n | 'OpenClaw'\n | 'Cline'\n | 'CodeBuddy'\n | 'CommandCode'\n | 'Continue'\n | 'Crush'\n | 'Droid'\n | 'Goose'\n | 'Junie'\n | 'IFlow'\n | 'KiloCode'\n | 'Kiro'\n | 'Kode'\n | 'MCPJam'\n | 'MistralVibe'\n | 'Mux'\n | 'OpenHands'\n | 'Pi'\n | 'Qoder'\n | 'Qwen'\n | 'RooCode'\n | 'TraeCN'\n | 'Zencoder'\n | 'Neovate'\n | 'Pochi'\n | 'Other';\n\n console.log(`Selected platform: ${platform}`);\n\n const availableSkills = SKILLS;\n console.log('\\nAvailable skills:');\n availableSkills.forEach((s, i) => {\n console.log(`${i + 1}. ${s}`);\n });\n\n const skillsInput = await question(\n '\\nWhich skills do you want to install? (comma separated numbers, e.g. 1,2,3 or \"all\"): '\n );\n\n let selectedSkills: Skill[] = [];\n if (skillsInput.trim().toLowerCase() === 'all') {\n selectedSkills = [...availableSkills];\n } else {\n const indices = skillsInput\n .split(',')\n .map((s) => parseInt(s.trim()) - 1)\n .filter((i) => !isNaN(i) && i >= 0 && i < availableSkills.length);\n selectedSkills = indices.map((i) => availableSkills[i] as any);\n }\n\n if (selectedSkills.length === 0) {\n console.log('No valid skills selected. Exiting.');\n rl.close();\n return;\n }\n\n console.log(`Installing skills: ${selectedSkills.join(', ')}...`);\n const result = await installSkills(process.cwd(), platform, selectedSkills);\n console.log(result);\n } catch (error) {\n console.error('Error:', error);\n } finally {\n rl.close();\n }\n};\n"],"mappings":"8OAKA,MAAa,EAAyB,GAA4B,CAChE,EAAO,aACL,0BACA,CACE,MAAO,0BACP,YACE,uNACF,YAAa,CACX,SAAUA,EAAAA,QACP,KAAK,6QAoCL,CAAC,CACD,SAAS,qCAAqC,CACjD,OAAQA,EAAAA,QAAE,MAAMA,EAAAA,QAAE,KAAKC,EAAAA,OAAO,CAAC,CAAC,SAAS,4BAA4B,CACrE,YAAaD,EAAAA,QACV,QAAQ,CACR,UAAU,CACV,SACC,gEACD,CACJ,CACF,CACD,MAAO,CAAE,WAAU,SAAQ,iBAAkB,CAC3C,GAAI,CAQF,MAAO,CACL,QAAS,CACP,CACE,KAAM,OACN,KAVU,MAAA,EAAA,EAAA,eADH,GAAe,QAAQ,KAAK,CAGvC,EACA,EACD,CAOI,CACF,CACF,OACM,EAAO,CACd,MAAO,CACL,QAAS,CACP,CACE,KAAM,OACN,KAAM,6BAA6B,aAAiB,MAAQ,EAAM,QAAU,OAAO,EAAM,GAC1F,CACF,CACD,QAAS,GACV,GAGN,EAGU,EAAsB,SAA2B,CAC5D,IAAM,EAAKE,EAAS,gBAAgB,CAClC,MAAO,QAAQ,MACf,OAAQ,QAAQ,OACjB,CAAC,CAEI,EAAY,GAChB,IAAI,QAAS,GAAY,EAAG,SAAS,EAAO,EAAQ,CAAC,CAEvD,GAAI,CACF,QAAQ,IAAI,0BAA0B,CACtC,QAAQ,IAAI,0BAA0B,CAEtC,IAAM,EAAgB,MAAM,EAC1B,8HACD,CACK,EAAY,6QAoCjB,CAAC,KAAM,GAAM,EAAE,aAAa,GAAK,EAAc,MAAM,CAAC,aAAa,CAAC,EACnE,QAqCF,QAAQ,IAAI,sBAAsB,IAAW,CAE7C,IAAM,EAAkBD,EAAAA,OACxB,QAAQ,IAAI;mBAAsB,CAClC,EAAgB,SAAS,EAAG,IAAM,CAChC,QAAQ,IAAI,GAAG,EAAI,EAAE,IAAI,IAAI,EAC7B,CAEF,IAAM,EAAc,MAAM,EACxB;uFACD,CAEG,EAA0B,EAAE,CAWhC,GAVA,AAOE,EAPE,EAAY,MAAM,CAAC,aAAa,GAAK,MACtB,CAAC,GAAG,EAAgB,CAErB,EACb,MAAM,IAAI,CACV,IAAK,GAAM,SAAS,EAAE,MAAM,CAAC,CAAG,EAAE,CAClC,OAAQ,GAAM,CAAC,MAAM,EAAE,EAAI,GAAK,GAAK,EAAI,EAAgB,OAAO,CAC1C,IAAK,GAAM,EAAgB,GAAU,CAG5D,EAAe,SAAW,EAAG,CAC/B,QAAQ,IAAI,qCAAqC,CACjD,EAAG,OAAO,CACV,OAGF,QAAQ,IAAI,sBAAsB,EAAe,KAAK,KAAK,CAAC,KAAK,CACjE,IAAM,EAAS,MAAA,EAAA,EAAA,eAAoB,QAAQ,KAAK,CAAE,EAAU,EAAe,CAC3E,QAAQ,IAAI,EAAO,OACZ,EAAO,CACd,QAAQ,MAAM,SAAU,EAAM,QACtB,CACR,EAAG,OAAO"}
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { dirname as dirname$1, resolve } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { isESModule } from "@intlayer/config";
|
|
5
|
-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
6
|
-
|
|
7
|
-
//#region src/client/client.ts
|
|
8
|
-
const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
|
|
9
|
-
const packageJson = JSON.parse(readFileSync(resolve(dirname, "../../../package.json"), "utf8"));
|
|
10
|
-
const loadClient = () => new Client({
|
|
11
|
-
name: `mcp-client-for-intlayer-mcp-server`,
|
|
12
|
-
version: packageJson.version
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
//#endregion
|
|
16
|
-
export { dirname, loadClient };
|
|
1
|
+
import{readFileSync as e}from"node:fs";import{dirname as t,resolve as n}from"node:path";import{fileURLToPath as r}from"node:url";import{isESModule as i}from"@intlayer/config/utils";import{Client as a}from"@modelcontextprotocol/sdk/client/index.js";const o=i?t(r(import.meta.url)):__dirname,s=JSON.parse(e(n(o,`../../../package.json`),`utf8`)),c=()=>new a({name:`mcp-client-for-intlayer-mcp-server`,version:s.version});export{o as dirname,c as loadClient};
|
|
17
2
|
//# sourceMappingURL=client.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","names":["pathDirname"],"sources":["../../../src/client/client.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadClient = () => Client;\n\nexport const loadClient: LoadClient = () =>\n new Client({\n name: `mcp-client-for-intlayer-mcp-server`,\n version: packageJson.version,\n });\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.mjs","names":["pathDirname"],"sources":["../../../src/client/client.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config/utils';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadClient = () => Client;\n\nexport const loadClient: LoadClient = () =>\n new Client({\n name: `mcp-client-for-intlayer-mcp-server`,\n version: packageJson.version,\n });\n"],"mappings":"wPAMA,MAAa,EAAkB,EAC3BA,EAAY,EAAc,OAAO,KAAK,IAAI,CAAC,CAC3C,UAEE,EAAmC,KAAK,MAC5C,EAAa,EAAQ,EAAS,wBAAwB,CAAE,OAAO,CAChE,CAIY,MACX,IAAI,EAAO,CACT,KAAM,qCACN,QAAS,EAAY,QACtB,CAAC"}
|
package/dist/esm/client/sse.mjs
CHANGED
|
@@ -1,60 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { URL } from "node:url";
|
|
3
|
-
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
4
|
-
|
|
5
|
-
//#region src/client/sse.ts
|
|
6
|
-
var SSEClient = class {
|
|
7
|
-
client;
|
|
8
|
-
transport = null;
|
|
9
|
-
isCompleted = false;
|
|
10
|
-
constructor() {
|
|
11
|
-
this.client = loadClient();
|
|
12
|
-
}
|
|
13
|
-
async connectToServer() {
|
|
14
|
-
const mcpServerURL = process.env.MCP_SERVER_URL ?? "https://mcp.intlayer.org";
|
|
15
|
-
const url = new URL(mcpServerURL);
|
|
16
|
-
try {
|
|
17
|
-
console.info(`Connecting to server - ${mcpServerURL}`);
|
|
18
|
-
this.transport = new SSEClientTransport(url);
|
|
19
|
-
await this.client.connect(this.transport);
|
|
20
|
-
console.info("Connected to MCP server");
|
|
21
|
-
this.setUpTransport();
|
|
22
|
-
} catch (e) {
|
|
23
|
-
console.info("Failed to connect to MCP server: ", e);
|
|
24
|
-
throw e;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
setUpTransport() {
|
|
28
|
-
if (this.transport === null) return;
|
|
29
|
-
this.transport.onclose = () => {
|
|
30
|
-
console.info("SSE transport closed.");
|
|
31
|
-
this.isCompleted = true;
|
|
32
|
-
};
|
|
33
|
-
this.transport.onerror = async (error) => {
|
|
34
|
-
console.info("SSE transport error: ", error);
|
|
35
|
-
await this.cleanup();
|
|
36
|
-
};
|
|
37
|
-
this.transport.onmessage = (message) => {
|
|
38
|
-
console.info("message received: ", message);
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
async waitForCompletion() {
|
|
42
|
-
while (!this.isCompleted) await new Promise((resolve) => setTimeout(resolve, 100));
|
|
43
|
-
}
|
|
44
|
-
async cleanup() {
|
|
45
|
-
await this.client.close();
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
const main = async () => {
|
|
49
|
-
const client = new SSEClient();
|
|
50
|
-
try {
|
|
51
|
-
await client.connectToServer();
|
|
52
|
-
await client.waitForCompletion();
|
|
53
|
-
} finally {
|
|
54
|
-
await client.cleanup();
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
main();
|
|
58
|
-
|
|
59
|
-
//#endregion
|
|
1
|
+
import{loadClient as e}from"./client.mjs";import{URL as t}from"node:url";import{SSEClientTransport as n}from"@modelcontextprotocol/sdk/client/sse.js";var r=class{client;transport=null;isCompleted=!1;constructor(){this.client=e()}async connectToServer(){let e=process.env.MCP_SERVER_URL??`https://mcp.intlayer.org`,r=new t(e);try{console.info(`Connecting to server - ${e}`),this.transport=new n(r),await this.client.connect(this.transport),console.info(`Connected to MCP server`),this.setUpTransport()}catch(e){throw console.info(`Failed to connect to MCP server: `,e),e}}setUpTransport(){this.transport!==null&&(this.transport.onclose=()=>{console.info(`SSE transport closed.`),this.isCompleted=!0},this.transport.onerror=async e=>{console.info(`SSE transport error: `,e),await this.cleanup()},this.transport.onmessage=e=>{console.info(`message received: `,e)})}async waitForCompletion(){for(;!this.isCompleted;)await new Promise(e=>setTimeout(e,100))}async cleanup(){await this.client.close()}};(async()=>{let e=new r;try{await e.connectToServer(),await e.waitForCompletion()}finally{await e.cleanup()}})();
|
|
60
2
|
//# sourceMappingURL=sse.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/client/sse.ts"],"sourcesContent":["import { URL } from 'node:url';\nimport type { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { loadClient } from './client';\n\nclass SSEClient {\n private client: Client;\n private transport: Transport | null = null;\n private isCompleted = false;\n\n constructor() {\n this.client = loadClient();\n }\n\n async connectToServer() {\n const mcpServerURL =\n process.env.MCP_SERVER_URL ?? 'https://mcp.intlayer.org';\n\n const url = new URL(mcpServerURL);\n try {\n console.info(`Connecting to server - ${mcpServerURL}`);\n this.transport = new SSEClientTransport(url);\n await this.client.connect(this.transport);\n console.info('Connected to MCP server');\n\n this.setUpTransport();\n } catch (e) {\n console.info('Failed to connect to MCP server: ', e);\n throw e;\n }\n }\n\n private setUpTransport() {\n if (this.transport === null) {\n return;\n }\n this.transport.onclose = () => {\n console.info('SSE transport closed.');\n this.isCompleted = true;\n };\n\n this.transport.onerror = async (error) => {\n console.info('SSE transport error: ', error);\n await this.cleanup();\n };\n\n this.transport.onmessage = (message) => {\n console.info('message received: ', message);\n };\n }\n\n async waitForCompletion() {\n while (!this.isCompleted) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n async cleanup() {\n await this.client.close();\n }\n}\n\nconst main = async () => {\n const client = new SSEClient();\n\n try {\n await client.connectToServer();\n await client.waitForCompletion();\n } finally {\n await client.cleanup();\n }\n};\n\nmain();\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/client/sse.ts"],"sourcesContent":["import { URL } from 'node:url';\nimport type { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { loadClient } from './client';\n\nclass SSEClient {\n private client: Client;\n private transport: Transport | null = null;\n private isCompleted = false;\n\n constructor() {\n this.client = loadClient();\n }\n\n async connectToServer() {\n const mcpServerURL =\n process.env.MCP_SERVER_URL ?? 'https://mcp.intlayer.org';\n\n const url = new URL(mcpServerURL);\n try {\n console.info(`Connecting to server - ${mcpServerURL}`);\n this.transport = new SSEClientTransport(url);\n await this.client.connect(this.transport);\n console.info('Connected to MCP server');\n\n this.setUpTransport();\n } catch (e) {\n console.info('Failed to connect to MCP server: ', e);\n throw e;\n }\n }\n\n private setUpTransport() {\n if (this.transport === null) {\n return;\n }\n this.transport.onclose = () => {\n console.info('SSE transport closed.');\n this.isCompleted = true;\n };\n\n this.transport.onerror = async (error) => {\n console.info('SSE transport error: ', error);\n await this.cleanup();\n };\n\n this.transport.onmessage = (message) => {\n console.info('message received: ', message);\n };\n }\n\n async waitForCompletion() {\n while (!this.isCompleted) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n async cleanup() {\n await this.client.close();\n }\n}\n\nconst main = async () => {\n const client = new SSEClient();\n\n try {\n await client.connectToServer();\n await client.waitForCompletion();\n } finally {\n await client.cleanup();\n }\n};\n\nmain();\n"],"mappings":"sJAMA,IAAM,EAAN,KAAgB,CACd,OACA,UAAsC,KACtC,YAAsB,GAEtB,aAAc,CACZ,KAAK,OAAS,GAAY,CAG5B,MAAM,iBAAkB,CACtB,IAAM,EACJ,QAAQ,IAAI,gBAAkB,2BAE1B,EAAM,IAAI,EAAI,EAAa,CACjC,GAAI,CACF,QAAQ,KAAK,0BAA0B,IAAe,CACtD,KAAK,UAAY,IAAI,EAAmB,EAAI,CAC5C,MAAM,KAAK,OAAO,QAAQ,KAAK,UAAU,CACzC,QAAQ,KAAK,0BAA0B,CAEvC,KAAK,gBAAgB,OACd,EAAG,CAEV,MADA,QAAQ,KAAK,oCAAqC,EAAE,CAC9C,GAIV,gBAAyB,CACnB,KAAK,YAAc,OAGvB,KAAK,UAAU,YAAgB,CAC7B,QAAQ,KAAK,wBAAwB,CACrC,KAAK,YAAc,IAGrB,KAAK,UAAU,QAAU,KAAO,IAAU,CACxC,QAAQ,KAAK,wBAAyB,EAAM,CAC5C,MAAM,KAAK,SAAS,EAGtB,KAAK,UAAU,UAAa,GAAY,CACtC,QAAQ,KAAK,qBAAsB,EAAQ,GAI/C,MAAM,mBAAoB,CACxB,KAAO,CAAC,KAAK,aACX,MAAM,IAAI,QAAS,GAAY,WAAW,EAAS,IAAI,CAAC,CAI5D,MAAM,SAAU,CACd,MAAM,KAAK,OAAO,OAAO,IAIhB,SAAY,CACvB,IAAM,EAAS,IAAI,EAEnB,GAAI,CACF,MAAM,EAAO,iBAAiB,CAC9B,MAAM,EAAO,mBAAmB,QACxB,CACR,MAAM,EAAO,SAAS,KAIpB"}
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { loadDocsTools } from "../tools/docs.mjs";
|
|
3
|
-
import { loadInstallSkillsTool } from "../tools/installSkills.mjs";
|
|
4
|
-
import { readFileSync } from "node:fs";
|
|
5
|
-
import { dirname as dirname$1, resolve } from "node:path";
|
|
6
|
-
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { isESModule } from "@intlayer/config";
|
|
8
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
-
|
|
10
|
-
//#region src/server/server.ts
|
|
11
|
-
const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
|
|
12
|
-
const packageJson = JSON.parse(readFileSync(resolve(dirname, "../../../package.json"), "utf8"));
|
|
13
|
-
const loadServer = ({ isLocal }) => {
|
|
14
|
-
const server = new McpServer({
|
|
15
|
-
name: "intlayer",
|
|
16
|
-
version: packageJson.version
|
|
17
|
-
});
|
|
18
|
-
if (isLocal) try {
|
|
19
|
-
loadCLITools(server);
|
|
20
|
-
loadInstallSkillsTool(server);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
console.error("Error loading CLI tools:", error);
|
|
23
|
-
}
|
|
24
|
-
try {
|
|
25
|
-
loadDocsTools(server);
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error("Error loading docs tools:", error);
|
|
28
|
-
}
|
|
29
|
-
return server;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
//#endregion
|
|
33
|
-
export { dirname, loadServer };
|
|
1
|
+
import{loadCLITools as e}from"../tools/cli.mjs";import{loadDocsTools as t}from"../tools/docs.mjs";import{loadInstallSkillsTool as n}from"../tools/installSkills.mjs";import{readFileSync as r}from"node:fs";import{dirname as i,resolve as a}from"node:path";import{fileURLToPath as o}from"node:url";import{isESModule as s}from"@intlayer/config/utils";import{McpServer as c}from"@modelcontextprotocol/sdk/server/mcp.js";const l=s?i(o(import.meta.url)):__dirname,u=JSON.parse(r(a(l,`../../../package.json`),`utf8`)),d=({isLocal:r})=>{let i=new c({name:`intlayer`,version:u.version});if(r)try{e(i),n(i)}catch(e){console.error(`Error loading CLI tools:`,e)}try{t(i)}catch(e){console.error(`Error loading docs tools:`,e)}return i};export{l as dirname,d as loadServer};
|
|
34
2
|
//# sourceMappingURL=server.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["pathDirname"],"sources":["../../../src/server/server.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\nimport { loadInstallSkillsTool } from '../tools/installSkills';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadServer = (options: { isLocal: boolean }) => McpServer;\n\nexport const loadServer: LoadServer = ({ isLocal }) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n });\n\n if (isLocal) {\n try {\n loadCLITools(server);\n loadInstallSkillsTool(server);\n } catch (error) {\n console.error('Error loading CLI tools:', error);\n }\n }\n\n try {\n loadDocsTools(server);\n } catch (error) {\n console.error('Error loading docs tools:', error);\n }\n\n return server;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["pathDirname"],"sources":["../../../src/server/server.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config/utils';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\nimport { loadInstallSkillsTool } from '../tools/installSkills';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadServer = (options: { isLocal: boolean }) => McpServer;\n\nexport const loadServer: LoadServer = ({ isLocal }) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n });\n\n if (isLocal) {\n try {\n loadCLITools(server);\n loadInstallSkillsTool(server);\n } catch (error) {\n console.error('Error loading CLI tools:', error);\n }\n }\n\n try {\n loadDocsTools(server);\n } catch (error) {\n console.error('Error loading docs tools:', error);\n }\n\n return server;\n};\n"],"mappings":"8ZASA,MAAa,EAAkB,EAC3BA,EAAY,EAAc,OAAO,KAAK,IAAI,CAAC,CAC3C,UAEE,EAAmC,KAAK,MAC5C,EAAa,EAAQ,EAAS,wBAAwB,CAAE,OAAO,CAChE,CAIY,GAA0B,CAAE,aAAc,CACrD,IAAM,EAAS,IAAI,EAAU,CAC3B,KAAM,WACN,QAAS,EAAY,QACtB,CAAC,CAEF,GAAI,EACF,GAAI,CACF,EAAa,EAAO,CACpB,EAAsB,EAAO,OACtB,EAAO,CACd,QAAQ,MAAM,2BAA4B,EAAM,CAIpD,GAAI,CACF,EAAc,EAAO,OACd,EAAO,CACd,QAAQ,MAAM,4BAA6B,EAAM,CAGnD,OAAO"}
|
package/dist/esm/server/sse.mjs
CHANGED
|
@@ -1,68 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
|
-
import dotenv from "dotenv";
|
|
5
|
-
import express from "express";
|
|
6
|
-
|
|
7
|
-
//#region src/server/sse.ts
|
|
8
|
-
const server = loadServer({ isLocal: false });
|
|
9
|
-
const app = express();
|
|
10
|
-
const env = app.get("env");
|
|
11
|
-
dotenv.config({
|
|
12
|
-
path: [
|
|
13
|
-
`.env.${env}.local`,
|
|
14
|
-
`.env.${env}`,
|
|
15
|
-
".env.local",
|
|
16
|
-
".env"
|
|
17
|
-
],
|
|
18
|
-
quiet: true
|
|
19
|
-
});
|
|
20
|
-
app.use((req, res, next) => {
|
|
21
|
-
res.header("Access-Control-Allow-Origin", "*");
|
|
22
|
-
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
23
|
-
res.header("Access-Control-Allow-Headers", "Content-Type");
|
|
24
|
-
if (req.method === "OPTIONS") {
|
|
25
|
-
res.sendStatus(200);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
next();
|
|
29
|
-
});
|
|
30
|
-
app.use(express.json());
|
|
31
|
-
const router = express.Router();
|
|
32
|
-
const sessionIdGenerator = () => Math.random().toString(36).slice(2);
|
|
33
|
-
const transports = {};
|
|
34
|
-
router.all("/", async (req, res) => {
|
|
35
|
-
if (req.method === "GET") {
|
|
36
|
-
const sessionId = sessionIdGenerator();
|
|
37
|
-
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: () => sessionId });
|
|
38
|
-
transports[sessionId] = transport;
|
|
39
|
-
res.on("close", () => {
|
|
40
|
-
delete transports[sessionId];
|
|
41
|
-
});
|
|
42
|
-
await server.connect(transport);
|
|
43
|
-
await transport.handleRequest(req, res);
|
|
44
|
-
} else if (req.method === "POST") {
|
|
45
|
-
const sessionId = req.query.sessionId;
|
|
46
|
-
if (typeof sessionId !== "string") {
|
|
47
|
-
res.status(400).send({ messages: "Bad session id." });
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const transport = transports[sessionId];
|
|
51
|
-
if (!transport) {
|
|
52
|
-
res.status(400).send({ messages: "No transport found for sessionId." });
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
await transport.handleRequest(req, res, req.body);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
app.use("/", router);
|
|
59
|
-
app.use("/health", (_req, res) => {
|
|
60
|
-
res.send("OK");
|
|
61
|
-
});
|
|
62
|
-
const PORT = process.env.PORT ?? 3e3;
|
|
63
|
-
app.listen(PORT, () => {
|
|
64
|
-
console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
//#endregion
|
|
2
|
+
import{loadServer as e}from"./server.mjs";import{StreamableHTTPServerTransport as t}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import n from"dotenv";import r from"express";const i=e({isLocal:!1}),a=r(),o=a.get(`env`);n.config({path:[`.env.${o}.local`,`.env.${o}`,`.env.local`,`.env`],quiet:!0}),a.use((e,t,n)=>{if(t.header(`Access-Control-Allow-Origin`,`*`),t.header(`Access-Control-Allow-Methods`,`GET, POST, OPTIONS`),t.header(`Access-Control-Allow-Headers`,`Content-Type`),e.method===`OPTIONS`){t.sendStatus(200);return}n()}),a.use(r.json());const s=r.Router(),c=()=>Math.random().toString(36).slice(2),l={};s.all(`/`,async(e,n)=>{if(e.method===`GET`){let r=c(),a=new t({sessionIdGenerator:()=>r});l[r]=a,n.on(`close`,()=>{delete l[r]}),await i.connect(a),await a.handleRequest(e,n)}else if(e.method===`POST`){let t=e.query.sessionId;if(typeof t!=`string`){n.status(400).send({messages:`Bad session id.`});return}let r=l[t];if(!r){n.status(400).send({messages:`No transport found for sessionId.`});return}await r.handleRequest(e,n,e.body)}}),a.use(`/`,s),a.use(`/health`,(e,t)=>{t.send(`OK`)});const u=process.env.PORT??3e3;a.listen(u,()=>{console.info(`MCP Streamable HTTP Server listening on port ${u}`)});
|
|
68
3
|
//# sourceMappingURL=sse.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: false });\nconst app = express();\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n});\n\napp.use((req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\nconst sessionIdGenerator = () => Math.random().toString(36).slice(2);\nconst transports: { [sessionId: string]: StreamableHTTPServerTransport } = {};\n\nrouter.all('/', async (req: Request, res: Response) => {\n if (req.method === 'GET') {\n const sessionId = sessionIdGenerator();\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => sessionId,\n });\n transports[sessionId] = transport;\n res.on('close', () => {\n delete transports[sessionId];\n });\n await server.connect(transport);\n await transport.handleRequest(req, res);\n } else if (req.method === 'POST') {\n const sessionId = req.query.sessionId;\n if (typeof sessionId !== 'string') {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n const transport = transports[sessionId];\n if (!transport) {\n res.status(400).send({ messages: 'No transport found for sessionId.' });\n return;\n }\n await transport.handleRequest(req, res, req.body);\n }\n});\n\napp.use('/', router);\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: false });\nconst app = express();\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n});\n\napp.use((req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\nconst sessionIdGenerator = () => Math.random().toString(36).slice(2);\nconst transports: { [sessionId: string]: StreamableHTTPServerTransport } = {};\n\nrouter.all('/', async (req: Request, res: Response) => {\n if (req.method === 'GET') {\n const sessionId = sessionIdGenerator();\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => sessionId,\n });\n transports[sessionId] = transport;\n res.on('close', () => {\n delete transports[sessionId];\n });\n await server.connect(transport);\n await transport.handleRequest(req, res);\n } else if (req.method === 'POST') {\n const sessionId = req.query.sessionId;\n if (typeof sessionId !== 'string') {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n const transport = transports[sessionId];\n if (!transport) {\n res.status(400).send({ messages: 'No transport found for sessionId.' });\n return;\n }\n await transport.handleRequest(req, res, req.body);\n }\n});\n\napp.use('/', router);\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";0LAOA,MAAM,EAAS,EAAW,CAAE,QAAS,GAAO,CAAC,CACvC,EAAM,GAAS,CACf,EAAM,EAAI,IAAI,MAAM,CAE1B,EAAO,OAAO,CACZ,KAAM,CAAC,QAAQ,EAAI,QAAS,QAAQ,IAAO,aAAc,OAAO,CAChE,MAAO,GACR,CAAC,CAEF,EAAI,KAAK,EAAK,EAAK,IAAS,CAI1B,GAHA,EAAI,OAAO,8BAA+B,IAAI,CAC9C,EAAI,OAAO,+BAAgC,qBAAqB,CAChE,EAAI,OAAO,+BAAgC,eAAe,CACtD,EAAI,SAAW,UAAW,CAC5B,EAAI,WAAW,IAAI,CACnB,OAEF,GAAM,EACN,CAEF,EAAI,IAAI,EAAQ,MAAM,CAAC,CACvB,MAAM,EAAS,EAAQ,QAAQ,CAEzB,MAA2B,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAC9D,EAAqE,EAAE,CAE7E,EAAO,IAAI,IAAK,MAAO,EAAc,IAAkB,CACrD,GAAI,EAAI,SAAW,MAAO,CACxB,IAAM,EAAY,GAAoB,CAChC,EAAY,IAAI,EAA8B,CAClD,uBAA0B,EAC3B,CAAC,CACF,EAAW,GAAa,EACxB,EAAI,GAAG,YAAe,CACpB,OAAO,EAAW,IAClB,CACF,MAAM,EAAO,QAAQ,EAAU,CAC/B,MAAM,EAAU,cAAc,EAAK,EAAI,SAC9B,EAAI,SAAW,OAAQ,CAChC,IAAM,EAAY,EAAI,MAAM,UAC5B,GAAI,OAAO,GAAc,SAAU,CACjC,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,SAAU,kBAAmB,CAAC,CACrD,OAEF,IAAM,EAAY,EAAW,GAC7B,GAAI,CAAC,EAAW,CACd,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,SAAU,oCAAqC,CAAC,CACvE,OAEF,MAAM,EAAU,cAAc,EAAK,EAAK,EAAI,KAAK,GAEnD,CAEF,EAAI,IAAI,IAAK,EAAO,CACpB,EAAI,IAAI,WAAY,EAAe,IAAkB,CACnD,EAAI,KAAK,KAAK,EACd,CAEF,MAAM,EAAO,QAAQ,IAAI,MAAQ,IACjC,EAAI,OAAO,MAAY,CACrB,QAAQ,KAAK,gDAAgD,IAAO,EACpE"}
|
|
@@ -1,18 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
-
|
|
5
|
-
//#region src/server/stdio.ts
|
|
6
|
-
const server = loadServer({ isLocal: true });
|
|
7
|
-
const main = async () => {
|
|
8
|
-
const transport = new StdioServerTransport();
|
|
9
|
-
await server.connect(transport);
|
|
10
|
-
console.error("Intlayer MCP Server running on stdio");
|
|
11
|
-
};
|
|
12
|
-
main().catch((error) => {
|
|
13
|
-
console.error("Fatal error in main():", error);
|
|
14
|
-
process.exit(1);
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
2
|
+
import{loadServer as e}from"./server.mjs";import{StdioServerTransport as t}from"@modelcontextprotocol/sdk/server/stdio.js";const n=e({isLocal:!0});(async()=>{let e=new t;await n.connect(e),console.error(`Intlayer MCP Server running on stdio`)})().catch(e=>{console.error(`Fatal error in main():`,e),process.exit(1)});
|
|
18
3
|
//# sourceMappingURL=stdio.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.mjs","names":[],"sources":["../../../src/server/stdio.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: true });\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"stdio.mjs","names":[],"sources":["../../../src/server/stdio.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: true });\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":";2HAKA,MAAM,EAAS,EAAW,CAAE,QAAS,GAAM,CAAC,EAE/B,SAAY,CACvB,IAAM,EAAY,IAAI,EACtB,MAAM,EAAO,QAAQ,EAAU,CAE/B,QAAQ,MAAM,uCAAuC,IAGjD,CAAC,MAAO,GAAU,CACtB,QAAQ,MAAM,yBAA0B,EAAM,CAC9C,QAAQ,KAAK,EAAE,EACf"}
|