@intlayer/mcp 7.0.3-canary.0 → 7.0.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/server/server.cjs +2 -2
- package/dist/cjs/server/server.cjs.map +1 -1
- package/dist/cjs/server/sse.cjs +2 -2
- package/dist/cjs/server/sse.cjs.map +1 -1
- package/dist/cjs/server/stdio.cjs +1 -1
- package/dist/cjs/server/stdio.cjs.map +1 -1
- package/dist/esm/server/server.mjs +2 -2
- package/dist/esm/server/server.mjs.map +1 -1
- package/dist/esm/server/sse.mjs +2 -2
- package/dist/esm/server/sse.mjs.map +1 -1
- package/dist/esm/server/stdio.mjs +1 -1
- package/dist/esm/server/stdio.mjs.map +1 -1
- package/dist/types/server/server.d.ts +3 -1
- package/dist/types/server/server.d.ts.map +1 -1
- package/package.json +18 -18
|
@@ -15,13 +15,13 @@ __modelcontextprotocol_sdk_server_mcp_js = require_rolldown_runtime.__toESM(__mo
|
|
|
15
15
|
//#region src/server/server.ts
|
|
16
16
|
const dirname = __intlayer_config.isESModule ? (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)) : __dirname;
|
|
17
17
|
const packageJson = JSON.parse((0, node_fs.readFileSync)((0, node_path.resolve)(dirname, "../../../package.json"), "utf8"));
|
|
18
|
-
const loadServer = (isLocal) => {
|
|
18
|
+
const loadServer = ({ isLocal }) => {
|
|
19
19
|
const server = new __modelcontextprotocol_sdk_server_mcp_js.McpServer({
|
|
20
20
|
name: "intlayer",
|
|
21
21
|
version: packageJson.version,
|
|
22
22
|
capabilities: { resources: {} }
|
|
23
23
|
});
|
|
24
|
-
if (
|
|
24
|
+
if (isLocal) require_tools_cli.loadCLITools(server);
|
|
25
25
|
require_tools_docs.loadDocsTools(server);
|
|
26
26
|
return server;
|
|
27
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs","names":["dirname: string","isESModule","packageJson: Record<string, any>","loadServer: LoadServer","McpServer"],"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';\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 = (isLocal: boolean) => McpServer;\n\nexport const loadServer: LoadServer = (isLocal) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n });\n\n if (
|
|
1
|
+
{"version":3,"file":"server.cjs","names":["dirname: string","isESModule","packageJson: Record<string, any>","loadServer: LoadServer","McpServer"],"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';\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 capabilities: {\n resources: {},\n },\n });\n\n if (isLocal) {\n loadCLITools(server);\n }\n\n loadDocsTools(server);\n\n return server;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAQA,MAAaA,UAAkBC,gIACe,CAAC,GAC3C;AAEJ,MAAMC,cAAmC,KAAK,uDACvB,SAAS,wBAAwB,EAAE,OAAO,CAChE;AAID,MAAaC,cAA0B,EAAE,cAAc;CACrD,MAAM,SAAS,IAAIC,mDAAU;EAC3B,MAAM;EACN,SAAS,YAAY;EACrB,cAAc,EACZ,WAAW,EAAE,EACd;EACF,CAAC;AAEF,KAAI,QACF,gCAAa,OAAO;AAGtB,kCAAc,OAAO;AAErB,QAAO"}
|
package/dist/cjs/server/sse.cjs
CHANGED
|
@@ -9,8 +9,8 @@ let express = require("express");
|
|
|
9
9
|
express = require_rolldown_runtime.__toESM(express);
|
|
10
10
|
|
|
11
11
|
//#region src/server/sse.ts
|
|
12
|
-
/******* Server Set Up
|
|
13
|
-
const server = require_server_server.loadServer(false);
|
|
12
|
+
/******* Server Set Up ************/
|
|
13
|
+
const server = require_server_server.loadServer({ isLocal: false });
|
|
14
14
|
/******* Express App Set Up *******/
|
|
15
15
|
const app = (0, express.default)();
|
|
16
16
|
const env = app.get("env");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.cjs","names":["loadServer","transports: { [sessionId: string]: SSEServerTransport }","SSEServerTransport"],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n
|
|
1
|
+
{"version":3,"file":"sse.cjs","names":["loadServer","transports: { [sessionId: string]: SSEServerTransport }","SSEServerTransport"],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n/**********************************/\n/******* Server Set Up ************/\n/**********************************/\n\nconst server = loadServer({ isLocal: false });\n\n/**********************************/\n/******* Express App Set Up *******/\n/**********************************/\n\nconst app = express();\n\n// Environment variables\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Enable CORS for development\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\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\n// to support multiple simultaneous connections we have a lookup object from\n// sessionId to transport\nconst transports: { [sessionId: string]: SSEServerTransport } = {};\n\n// endpoint for the client to use for sending messages\nconst POST_ENDPOINT = '/messages';\n\nrouter.post(POST_ENDPOINT, async (req: Request, res: Response) => {\n console.info('message request received: ', req.body);\n // when client sends messages with `SSEClientTransport`,\n // the sessionId will be atomically set as query parameter.\n const sessionId = req.query.sessionId;\n\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\n // IMPORTANT!\n // using `await transport.handlePostMessage(req, res)` will cause\n // `SSE transport error: Error: Error POSTing to endpoint (HTTP 400): InternalServerError: stream is not readable`\n // on the client side\n await transport.handlePostMessage(req, res, req.body);\n\n return;\n});\n\n// initialization:\n// create a new transport to connect and\n// send an endpoint event containing a URI for the client to use for sending messages\nrouter.get('/', async (_req: Request, res: Response) => {\n console.info('connection request received');\n // tells the client to send messages to the `POST_ENDPOINT`\n const transport = new SSEServerTransport(POST_ENDPOINT, res);\n console.info('new transport created with session id: ', transport.sessionId);\n\n transports[transport.sessionId] = transport;\n\n console.info(`${Object.keys(transports).length} sessions active`);\n\n res.on('close', () => {\n console.info('SSE connection closed');\n delete transports[transport.sessionId];\n });\n\n await server.connect(transport);\n\n // an exmaple of a server-sent-event (message) to client\n await sendMessages(transport);\n\n return;\n});\n\nconst sendMessages = async (transport: SSEServerTransport) => {\n try {\n // some messages will proabaly not be able to observed on the client side\n // becasue an open SSE Stream is not yet established\n // by receving the `initialize` POST request and the `notifications/initialized` POST request\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/connection',\n params: { message: 'Stream started' },\n });\n console.info('Stream started');\n\n let messageCount = 0;\n const interval = setInterval(async () => {\n messageCount++;\n\n const message = `Message ${messageCount} at ${new Date().toISOString()}`;\n\n try {\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/message',\n params: { data: message },\n });\n\n console.info(`Sent: ${message}`);\n\n if (messageCount === 2) {\n clearInterval(interval);\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/complete',\n params: { message: 'Stream completed' },\n });\n console.info('Stream completed');\n }\n } catch (error) {\n console.error('Error sending message:', error);\n clearInterval(interval);\n }\n }, 1000);\n } catch (error) {\n console.error('Error in startSending:', error);\n }\n};\n\napp.use('/', router);\n\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\n\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";;;;;;;;;;;;AAWA,MAAM,SAASA,iCAAW,EAAE,SAAS,OAAO,CAAC;;AAM7C,MAAM,4BAAe;AAGrB,MAAM,MAAM,IAAI,IAAI,MAAM;AAE1B,eAAO,OAAO,EACZ,MAAM;CAAC,QAAQ,IAAI;CAAS,QAAQ;CAAO;CAAc;CAAO,EACjE,CAAC;AAGF,IAAI,KAAK,KAAK,KAAK,SAAS;AAC1B,KAAI,OAAO,+BAA+B,IAAI;AAC9C,KAAI,OAAO,gCAAgC,qBAAqB;AAChE,KAAI,OAAO,gCAAgC,eAAe;AAE1D,KAAI,IAAI,WAAW,WAAW;AAC5B,MAAI,WAAW,IAAI;AACnB;;AAGF,OAAM;EACN;AAEF,IAAI,IAAI,gBAAQ,MAAM,CAAC;AACvB,MAAM,SAAS,gBAAQ,QAAQ;AAI/B,MAAMC,aAA0D,EAAE;AAGlE,MAAM,gBAAgB;AAEtB,OAAO,KAAK,eAAe,OAAO,KAAc,QAAkB;AAChE,SAAQ,KAAK,8BAA8B,IAAI,KAAK;CAGpD,MAAM,YAAY,IAAI,MAAM;AAE5B,KAAI,OAAO,cAAc,UAAU;AACjC,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;CAEF,MAAM,YAAY,WAAW;AAC7B,KAAI,CAAC,WAAW;AACd,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,qCAAqC,CAAC;AACvE;;AAOF,OAAM,UAAU,kBAAkB,KAAK,KAAK,IAAI,KAAK;EAGrD;AAKF,OAAO,IAAI,KAAK,OAAO,MAAe,QAAkB;AACtD,SAAQ,KAAK,8BAA8B;CAE3C,MAAM,YAAY,IAAIC,4DAAmB,eAAe,IAAI;AAC5D,SAAQ,KAAK,2CAA2C,UAAU,UAAU;AAE5E,YAAW,UAAU,aAAa;AAElC,SAAQ,KAAK,GAAG,OAAO,KAAK,WAAW,CAAC,OAAO,kBAAkB;AAEjE,KAAI,GAAG,eAAe;AACpB,UAAQ,KAAK,wBAAwB;AACrC,SAAO,WAAW,UAAU;GAC5B;AAEF,OAAM,OAAO,QAAQ,UAAU;AAG/B,OAAM,aAAa,UAAU;EAG7B;AAEF,MAAM,eAAe,OAAO,cAAkC;AAC5D,KAAI;AAIF,QAAM,UAAU,KAAK;GACnB,SAAS;GACT,QAAQ;GACR,QAAQ,EAAE,SAAS,kBAAkB;GACtC,CAAC;AACF,UAAQ,KAAK,iBAAiB;EAE9B,IAAI,eAAe;EACnB,MAAM,WAAW,YAAY,YAAY;AACvC;GAEA,MAAM,UAAU,WAAW,aAAa,uBAAM,IAAI,MAAM,EAAC,aAAa;AAEtE,OAAI;AACF,UAAM,UAAU,KAAK;KACnB,SAAS;KACT,QAAQ;KACR,QAAQ,EAAE,MAAM,SAAS;KAC1B,CAAC;AAEF,YAAQ,KAAK,SAAS,UAAU;AAEhC,QAAI,iBAAiB,GAAG;AACtB,mBAAc,SAAS;AACvB,WAAM,UAAU,KAAK;MACnB,SAAS;MACT,QAAQ;MACR,QAAQ,EAAE,SAAS,oBAAoB;MACxC,CAAC;AACF,aAAQ,KAAK,mBAAmB;;YAE3B,OAAO;AACd,YAAQ,MAAM,0BAA0B,MAAM;AAC9C,kBAAc,SAAS;;KAExB,IAAK;UACD,OAAO;AACd,UAAQ,MAAM,0BAA0B,MAAM;;;AAIlD,IAAI,IAAI,KAAK,OAAO;AAEpB,IAAI,IAAI,YAAY,MAAe,QAAkB;AACnD,KAAI,KAAK,KAAK;EACd;AAEF,MAAM,OAAO,QAAQ,IAAI,QAAQ;AAEjC,IAAI,OAAO,YAAY;AACrB,SAAQ,KAAK,gDAAgD,OAAO;EACpE"}
|
|
@@ -5,7 +5,7 @@ let __modelcontextprotocol_sdk_server_stdio_js = require("@modelcontextprotocol/
|
|
|
5
5
|
__modelcontextprotocol_sdk_server_stdio_js = require_rolldown_runtime.__toESM(__modelcontextprotocol_sdk_server_stdio_js);
|
|
6
6
|
|
|
7
7
|
//#region src/server/stdio.ts
|
|
8
|
-
const server = require_server_server.loadServer(true);
|
|
8
|
+
const server = require_server_server.loadServer({ isLocal: true });
|
|
9
9
|
const main = async () => {
|
|
10
10
|
const transport = new __modelcontextprotocol_sdk_server_stdio_js.StdioServerTransport();
|
|
11
11
|
await server.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.cjs","names":["loadServer","StdioServerTransport"],"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(true);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\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":";;;;;;;AAKA,MAAM,SAASA,iCAAW,
|
|
1
|
+
{"version":3,"file":"stdio.cjs","names":["loadServer","StdioServerTransport"],"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":";;;;;;;AAKA,MAAM,SAASA,iCAAW,EAAE,SAAS,MAAM,CAAC;AAE5C,MAAM,OAAO,YAAY;CACvB,MAAM,YAAY,IAAIC,iEAAsB;AAC5C,OAAM,OAAO,QAAQ,UAAU;AAE/B,SAAQ,MAAM,uCAAuC;;AAGvD,MAAM,CAAC,OAAO,UAAU;AACtB,SAAQ,MAAM,0BAA0B,MAAM;AAC9C,SAAQ,KAAK,EAAE;EACf"}
|
|
@@ -9,13 +9,13 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
9
9
|
//#region src/server/server.ts
|
|
10
10
|
const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
|
|
11
11
|
const packageJson = JSON.parse(readFileSync(resolve(dirname, "../../../package.json"), "utf8"));
|
|
12
|
-
const loadServer = (isLocal) => {
|
|
12
|
+
const loadServer = ({ isLocal }) => {
|
|
13
13
|
const server = new McpServer({
|
|
14
14
|
name: "intlayer",
|
|
15
15
|
version: packageJson.version,
|
|
16
16
|
capabilities: { resources: {} }
|
|
17
17
|
});
|
|
18
|
-
if (
|
|
18
|
+
if (isLocal) loadCLITools(server);
|
|
19
19
|
loadDocsTools(server);
|
|
20
20
|
return server;
|
|
21
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["dirname: string","pathDirname","packageJson: Record<string, any>","loadServer: LoadServer"],"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';\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 = (isLocal: boolean) => McpServer;\n\nexport const loadServer: LoadServer = (isLocal) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n });\n\n if (
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["dirname: string","pathDirname","packageJson: Record<string, any>","loadServer: LoadServer"],"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';\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 capabilities: {\n resources: {},\n },\n });\n\n if (isLocal) {\n loadCLITools(server);\n }\n\n loadDocsTools(server);\n\n return server;\n};\n"],"mappings":";;;;;;;;;AAQA,MAAaA,UAAkB,aAC3BC,UAAY,cAAc,OAAO,KAAK,IAAI,CAAC,GAC3C;AAEJ,MAAMC,cAAmC,KAAK,MAC5C,aAAa,QAAQ,SAAS,wBAAwB,EAAE,OAAO,CAChE;AAID,MAAaC,cAA0B,EAAE,cAAc;CACrD,MAAM,SAAS,IAAI,UAAU;EAC3B,MAAM;EACN,SAAS,YAAY;EACrB,cAAc,EACZ,WAAW,EAAE,EACd;EACF,CAAC;AAEF,KAAI,QACF,cAAa,OAAO;AAGtB,eAAc,OAAO;AAErB,QAAO"}
|
package/dist/esm/server/sse.mjs
CHANGED
|
@@ -5,8 +5,8 @@ import dotenv from "dotenv";
|
|
|
5
5
|
import express from "express";
|
|
6
6
|
|
|
7
7
|
//#region src/server/sse.ts
|
|
8
|
-
/******* Server Set Up
|
|
9
|
-
const server = loadServer(false);
|
|
8
|
+
/******* Server Set Up ************/
|
|
9
|
+
const server = loadServer({ isLocal: false });
|
|
10
10
|
/******* Express App Set Up *******/
|
|
11
11
|
const app = express();
|
|
12
12
|
const env = app.get("env");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.mjs","names":["transports: { [sessionId: string]: SSEServerTransport }"],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n
|
|
1
|
+
{"version":3,"file":"sse.mjs","names":["transports: { [sessionId: string]: SSEServerTransport }"],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n/**********************************/\n/******* Server Set Up ************/\n/**********************************/\n\nconst server = loadServer({ isLocal: false });\n\n/**********************************/\n/******* Express App Set Up *******/\n/**********************************/\n\nconst app = express();\n\n// Environment variables\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Enable CORS for development\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\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\n// to support multiple simultaneous connections we have a lookup object from\n// sessionId to transport\nconst transports: { [sessionId: string]: SSEServerTransport } = {};\n\n// endpoint for the client to use for sending messages\nconst POST_ENDPOINT = '/messages';\n\nrouter.post(POST_ENDPOINT, async (req: Request, res: Response) => {\n console.info('message request received: ', req.body);\n // when client sends messages with `SSEClientTransport`,\n // the sessionId will be atomically set as query parameter.\n const sessionId = req.query.sessionId;\n\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\n // IMPORTANT!\n // using `await transport.handlePostMessage(req, res)` will cause\n // `SSE transport error: Error: Error POSTing to endpoint (HTTP 400): InternalServerError: stream is not readable`\n // on the client side\n await transport.handlePostMessage(req, res, req.body);\n\n return;\n});\n\n// initialization:\n// create a new transport to connect and\n// send an endpoint event containing a URI for the client to use for sending messages\nrouter.get('/', async (_req: Request, res: Response) => {\n console.info('connection request received');\n // tells the client to send messages to the `POST_ENDPOINT`\n const transport = new SSEServerTransport(POST_ENDPOINT, res);\n console.info('new transport created with session id: ', transport.sessionId);\n\n transports[transport.sessionId] = transport;\n\n console.info(`${Object.keys(transports).length} sessions active`);\n\n res.on('close', () => {\n console.info('SSE connection closed');\n delete transports[transport.sessionId];\n });\n\n await server.connect(transport);\n\n // an exmaple of a server-sent-event (message) to client\n await sendMessages(transport);\n\n return;\n});\n\nconst sendMessages = async (transport: SSEServerTransport) => {\n try {\n // some messages will proabaly not be able to observed on the client side\n // becasue an open SSE Stream is not yet established\n // by receving the `initialize` POST request and the `notifications/initialized` POST request\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/connection',\n params: { message: 'Stream started' },\n });\n console.info('Stream started');\n\n let messageCount = 0;\n const interval = setInterval(async () => {\n messageCount++;\n\n const message = `Message ${messageCount} at ${new Date().toISOString()}`;\n\n try {\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/message',\n params: { data: message },\n });\n\n console.info(`Sent: ${message}`);\n\n if (messageCount === 2) {\n clearInterval(interval);\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/complete',\n params: { message: 'Stream completed' },\n });\n console.info('Stream completed');\n }\n } catch (error) {\n console.error('Error sending message:', error);\n clearInterval(interval);\n }\n }, 1000);\n } catch (error) {\n console.error('Error in startSending:', error);\n }\n};\n\napp.use('/', router);\n\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\n\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";;;;;;;;AAWA,MAAM,SAAS,WAAW,EAAE,SAAS,OAAO,CAAC;;AAM7C,MAAM,MAAM,SAAS;AAGrB,MAAM,MAAM,IAAI,IAAI,MAAM;AAE1B,OAAO,OAAO,EACZ,MAAM;CAAC,QAAQ,IAAI;CAAS,QAAQ;CAAO;CAAc;CAAO,EACjE,CAAC;AAGF,IAAI,KAAK,KAAK,KAAK,SAAS;AAC1B,KAAI,OAAO,+BAA+B,IAAI;AAC9C,KAAI,OAAO,gCAAgC,qBAAqB;AAChE,KAAI,OAAO,gCAAgC,eAAe;AAE1D,KAAI,IAAI,WAAW,WAAW;AAC5B,MAAI,WAAW,IAAI;AACnB;;AAGF,OAAM;EACN;AAEF,IAAI,IAAI,QAAQ,MAAM,CAAC;AACvB,MAAM,SAAS,QAAQ,QAAQ;AAI/B,MAAMA,aAA0D,EAAE;AAGlE,MAAM,gBAAgB;AAEtB,OAAO,KAAK,eAAe,OAAO,KAAc,QAAkB;AAChE,SAAQ,KAAK,8BAA8B,IAAI,KAAK;CAGpD,MAAM,YAAY,IAAI,MAAM;AAE5B,KAAI,OAAO,cAAc,UAAU;AACjC,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;CAEF,MAAM,YAAY,WAAW;AAC7B,KAAI,CAAC,WAAW;AACd,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,qCAAqC,CAAC;AACvE;;AAOF,OAAM,UAAU,kBAAkB,KAAK,KAAK,IAAI,KAAK;EAGrD;AAKF,OAAO,IAAI,KAAK,OAAO,MAAe,QAAkB;AACtD,SAAQ,KAAK,8BAA8B;CAE3C,MAAM,YAAY,IAAI,mBAAmB,eAAe,IAAI;AAC5D,SAAQ,KAAK,2CAA2C,UAAU,UAAU;AAE5E,YAAW,UAAU,aAAa;AAElC,SAAQ,KAAK,GAAG,OAAO,KAAK,WAAW,CAAC,OAAO,kBAAkB;AAEjE,KAAI,GAAG,eAAe;AACpB,UAAQ,KAAK,wBAAwB;AACrC,SAAO,WAAW,UAAU;GAC5B;AAEF,OAAM,OAAO,QAAQ,UAAU;AAG/B,OAAM,aAAa,UAAU;EAG7B;AAEF,MAAM,eAAe,OAAO,cAAkC;AAC5D,KAAI;AAIF,QAAM,UAAU,KAAK;GACnB,SAAS;GACT,QAAQ;GACR,QAAQ,EAAE,SAAS,kBAAkB;GACtC,CAAC;AACF,UAAQ,KAAK,iBAAiB;EAE9B,IAAI,eAAe;EACnB,MAAM,WAAW,YAAY,YAAY;AACvC;GAEA,MAAM,UAAU,WAAW,aAAa,uBAAM,IAAI,MAAM,EAAC,aAAa;AAEtE,OAAI;AACF,UAAM,UAAU,KAAK;KACnB,SAAS;KACT,QAAQ;KACR,QAAQ,EAAE,MAAM,SAAS;KAC1B,CAAC;AAEF,YAAQ,KAAK,SAAS,UAAU;AAEhC,QAAI,iBAAiB,GAAG;AACtB,mBAAc,SAAS;AACvB,WAAM,UAAU,KAAK;MACnB,SAAS;MACT,QAAQ;MACR,QAAQ,EAAE,SAAS,oBAAoB;MACxC,CAAC;AACF,aAAQ,KAAK,mBAAmB;;YAE3B,OAAO;AACd,YAAQ,MAAM,0BAA0B,MAAM;AAC9C,kBAAc,SAAS;;KAExB,IAAK;UACD,OAAO;AACd,UAAQ,MAAM,0BAA0B,MAAM;;;AAIlD,IAAI,IAAI,KAAK,OAAO;AAEpB,IAAI,IAAI,YAAY,MAAe,QAAkB;AACnD,KAAI,KAAK,KAAK;EACd;AAEF,MAAM,OAAO,QAAQ,IAAI,QAAQ;AAEjC,IAAI,OAAO,YAAY;AACrB,SAAQ,KAAK,gDAAgD,OAAO;EACpE"}
|
|
@@ -3,7 +3,7 @@ import { loadServer } from "./server.mjs";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
|
|
5
5
|
//#region src/server/stdio.ts
|
|
6
|
-
const server = loadServer(true);
|
|
6
|
+
const server = loadServer({ isLocal: true });
|
|
7
7
|
const main = async () => {
|
|
8
8
|
const transport = new StdioServerTransport();
|
|
9
9
|
await server.connect(transport);
|
|
@@ -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(true);\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\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":";;;;;AAKA,MAAM,SAAS,WAAW,
|
|
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":";;;;;AAKA,MAAM,SAAS,WAAW,EAAE,SAAS,MAAM,CAAC;AAE5C,MAAM,OAAO,YAAY;CACvB,MAAM,YAAY,IAAI,sBAAsB;AAC5C,OAAM,OAAO,QAAQ,UAAU;AAE/B,SAAQ,MAAM,uCAAuC;;AAGvD,MAAM,CAAC,OAAO,UAAU;AACtB,SAAQ,MAAM,0BAA0B,MAAM;AAC9C,SAAQ,KAAK,EAAE;EACf"}
|
|
@@ -2,7 +2,9 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
2
2
|
|
|
3
3
|
//#region src/server/server.d.ts
|
|
4
4
|
declare const dirname: string;
|
|
5
|
-
type LoadServer = (
|
|
5
|
+
type LoadServer = (options: {
|
|
6
|
+
isLocal: boolean;
|
|
7
|
+
}) => McpServer;
|
|
6
8
|
declare const loadServer: LoadServer;
|
|
7
9
|
//#endregion
|
|
8
10
|
export { dirname, loadServer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","names":["dirname: string","loadServer: LoadServer"],"sources":["../../../src/server/server.ts"],"sourcesContent":[],"mappings":";;;cAQaA;KAQR,UAAA,
|
|
1
|
+
{"version":3,"file":"server.d.ts","names":["dirname: string","loadServer: LoadServer"],"sources":["../../../src/server/server.ts"],"sourcesContent":[],"mappings":";;;cAQaA;KAQR,UAAA;EARL,OAAaA,EAAAA,OAAAA;AAAAA,CAAAA,EAAAA,GAQwC,SAAhD;AAEQC,cAAAA,UAAY,EAAA,UAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/mcp",
|
|
3
|
-
"version": "7.0.3
|
|
3
|
+
"version": "7.0.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Intlayer MCP server. Handle MCP to help IDE to use Intlayer. It build, fill, pull, push, dictionaries",
|
|
6
6
|
"keywords": [
|
|
@@ -92,32 +92,32 @@
|
|
|
92
92
|
"typecheck": "tsc --noEmit --project tsconfig.types.json"
|
|
93
93
|
},
|
|
94
94
|
"dependencies": {
|
|
95
|
-
"@intlayer/cli": "7.0.3
|
|
96
|
-
"@intlayer/config": "7.0.3
|
|
97
|
-
"@intlayer/docs": "7.0.3
|
|
98
|
-
"@intlayer/types": "7.0.3
|
|
99
|
-
"@modelcontextprotocol/sdk": "1.15.
|
|
95
|
+
"@intlayer/cli": "7.0.3",
|
|
96
|
+
"@intlayer/config": "7.0.3",
|
|
97
|
+
"@intlayer/docs": "7.0.3",
|
|
98
|
+
"@intlayer/types": "7.0.3",
|
|
99
|
+
"@modelcontextprotocol/sdk": "1.15.1",
|
|
100
100
|
"dotenv": "16.6.1",
|
|
101
101
|
"express": "5.1.0",
|
|
102
102
|
"zod": "3.25.76"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@modelcontextprotocol/inspector": "0.17.
|
|
106
|
-
"@types/express": "5.0.
|
|
107
|
-
"@types/node": "24.9.
|
|
108
|
-
"@utils/ts-config": "7.0.3
|
|
109
|
-
"@utils/ts-config-types": "7.0.3
|
|
110
|
-
"@utils/tsdown-config": "7.0.3
|
|
105
|
+
"@modelcontextprotocol/inspector": "0.17.2",
|
|
106
|
+
"@types/express": "5.0.5",
|
|
107
|
+
"@types/node": "24.9.2",
|
|
108
|
+
"@utils/ts-config": "7.0.3",
|
|
109
|
+
"@utils/ts-config-types": "7.0.3",
|
|
110
|
+
"@utils/tsdown-config": "7.0.3",
|
|
111
111
|
"rimraf": "6.0.1",
|
|
112
|
-
"tsdown": "0.15.
|
|
112
|
+
"tsdown": "0.15.11",
|
|
113
113
|
"typescript": "5.9.3",
|
|
114
|
-
"vitest": "4.0.
|
|
114
|
+
"vitest": "4.0.5"
|
|
115
115
|
},
|
|
116
116
|
"peerDependencies": {
|
|
117
|
-
"@intlayer/cli": "7.0.3
|
|
118
|
-
"@intlayer/config": "7.0.3
|
|
119
|
-
"@intlayer/docs": "7.0.3
|
|
120
|
-
"@intlayer/types": "7.0.3
|
|
117
|
+
"@intlayer/cli": "7.0.3",
|
|
118
|
+
"@intlayer/config": "7.0.3",
|
|
119
|
+
"@intlayer/docs": "7.0.3",
|
|
120
|
+
"@intlayer/types": "7.0.3"
|
|
121
121
|
},
|
|
122
122
|
"engines": {
|
|
123
123
|
"node": ">=14.18"
|