@neuledge/context 0.2.3 → 0.4.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/LICENSE +202 -0
- package/README.md +197 -146
- package/dist/build.d.ts +17 -1
- package/dist/build.js +245 -2
- package/dist/build.js.map +1 -1
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +96 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +20 -0
- package/dist/config.js +54 -0
- package/dist/config.js.map +1 -0
- package/dist/download.d.ts +20 -0
- package/dist/download.js +64 -0
- package/dist/download.js.map +1 -0
- package/dist/git.js +43 -17
- package/dist/git.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/package-builder.d.ts +2 -0
- package/dist/package-builder.js +5 -2
- package/dist/package-builder.js.map +1 -1
- package/dist/server.d.ts +28 -1
- package/dist/server.js +224 -6
- package/dist/server.js.map +1 -1
- package/package.json +9 -11
package/dist/server.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
1
2
|
import { createRequire } from "node:module";
|
|
2
3
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
4
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
5
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
6
|
import { z } from "zod";
|
|
7
|
+
import { getServerUrl } from "./config.js";
|
|
8
|
+
import { downloadPackage, searchPackages } from "./download.js";
|
|
5
9
|
import { search } from "./search.js";
|
|
6
10
|
const require = createRequire(import.meta.url);
|
|
7
11
|
const { version } = require("../package.json");
|
|
@@ -12,6 +16,7 @@ const { version } = require("../package.json");
|
|
|
12
16
|
export class ContextServer {
|
|
13
17
|
mcp;
|
|
14
18
|
store;
|
|
19
|
+
getDocsRegistration = null;
|
|
15
20
|
constructor(store) {
|
|
16
21
|
this.store = store;
|
|
17
22
|
this.mcp = new McpServer({
|
|
@@ -20,24 +25,101 @@ export class ContextServer {
|
|
|
20
25
|
});
|
|
21
26
|
}
|
|
22
27
|
/**
|
|
23
|
-
*
|
|
24
|
-
* Registers the get_docs tool if packages are available.
|
|
28
|
+
* Register all MCP tools. Called before connecting a transport.
|
|
25
29
|
*/
|
|
26
|
-
|
|
30
|
+
registerTools() {
|
|
27
31
|
const packages = this.store.list();
|
|
28
32
|
if (packages.length > 0) {
|
|
29
33
|
this.registerGetDocsTool(packages);
|
|
30
34
|
}
|
|
35
|
+
this.registerSearchPackagesTool();
|
|
36
|
+
this.registerDownloadPackageTool();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Start the server with stdio transport.
|
|
40
|
+
* Registers tools and connects.
|
|
41
|
+
*/
|
|
42
|
+
async start() {
|
|
43
|
+
this.registerTools();
|
|
31
44
|
const transport = new StdioServerTransport();
|
|
32
45
|
await this.mcp.connect(transport);
|
|
33
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Start the server with Streamable HTTP transport.
|
|
49
|
+
* Creates an HTTP server that handles MCP protocol over HTTP,
|
|
50
|
+
* allowing multiple clients on the network to connect.
|
|
51
|
+
*
|
|
52
|
+
* @returns The HTTP server instance and the port it's listening on.
|
|
53
|
+
*/
|
|
54
|
+
async startHTTP(options) {
|
|
55
|
+
this.registerTools();
|
|
56
|
+
const host = options.host ?? "127.0.0.1";
|
|
57
|
+
// Track transports by session ID for multi-client support
|
|
58
|
+
const transports = new Map();
|
|
59
|
+
const httpServer = createServer(async (req, res) => {
|
|
60
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
61
|
+
if (url.pathname !== "/mcp") {
|
|
62
|
+
res.writeHead(404).end("Not Found");
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Handle DELETE for session termination
|
|
66
|
+
if (req.method === "DELETE") {
|
|
67
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
68
|
+
const transport = sessionId ? transports.get(sessionId) : undefined;
|
|
69
|
+
if (sessionId && transport) {
|
|
70
|
+
await transport.close();
|
|
71
|
+
transports.delete(sessionId);
|
|
72
|
+
res.writeHead(200).end();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
res.writeHead(404).end("Session not found");
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// For GET and POST, route to existing transport or create new one
|
|
80
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
81
|
+
if (sessionId && transports.has(sessionId)) {
|
|
82
|
+
// Existing session
|
|
83
|
+
await transports.get(sessionId)?.handleRequest(req, res);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (sessionId && !transports.has(sessionId)) {
|
|
87
|
+
// Invalid session ID
|
|
88
|
+
res.writeHead(404).end("Session not found");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// New session (no session ID header) — create a new transport.
|
|
92
|
+
// Pre-generate the session ID so we can store the transport before
|
|
93
|
+
// handleRequest (which may keep an SSE stream open indefinitely).
|
|
94
|
+
const newSessionId = crypto.randomUUID();
|
|
95
|
+
const transport = new StreamableHTTPServerTransport({
|
|
96
|
+
sessionIdGenerator: () => newSessionId,
|
|
97
|
+
});
|
|
98
|
+
transport.onclose = () => {
|
|
99
|
+
transports.delete(newSessionId);
|
|
100
|
+
};
|
|
101
|
+
transports.set(newSessionId, transport);
|
|
102
|
+
// Each new transport gets its own ContextServer sharing the same store
|
|
103
|
+
const sessionCtx = new ContextServer(this.store);
|
|
104
|
+
sessionCtx.registerTools();
|
|
105
|
+
await sessionCtx.mcp.connect(transport);
|
|
106
|
+
await transport.handleRequest(req, res);
|
|
107
|
+
});
|
|
108
|
+
return new Promise((resolve) => {
|
|
109
|
+
httpServer.listen(options.port, host, () => {
|
|
110
|
+
const addr = httpServer.address();
|
|
111
|
+
const actualPort = typeof addr === "object" && addr ? addr.port : options.port;
|
|
112
|
+
resolve({ server: httpServer, port: actualPort });
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
34
116
|
/** Access the underlying McpServer for testing. */
|
|
35
117
|
get server() {
|
|
36
118
|
return this.mcp;
|
|
37
119
|
}
|
|
38
120
|
registerGetDocsTool(packages) {
|
|
39
121
|
const libraryEnum = packages.map(formatLibraryName);
|
|
40
|
-
this.mcp.registerTool("get_docs", {
|
|
122
|
+
this.getDocsRegistration = this.mcp.registerTool("get_docs", {
|
|
41
123
|
description: "Provides the latest official documentation for installed libraries. Use this as your primary reference when working with library APIs - it contains current, version-specific information that may be more accurate than training data or web searches. Covers API signatures, usage patterns, and best practices. Instant local lookup, no network needed.",
|
|
42
124
|
inputSchema: {
|
|
43
125
|
library: z
|
|
@@ -48,10 +130,41 @@ export class ContextServer {
|
|
|
48
130
|
.describe("What you need help with (e.g., 'middleware authentication', 'server components')"),
|
|
49
131
|
},
|
|
50
132
|
}, async ({ library, topic }) => {
|
|
51
|
-
return this.handleGetDocs(
|
|
133
|
+
return this.handleGetDocs(library, topic);
|
|
52
134
|
});
|
|
53
135
|
}
|
|
54
|
-
|
|
136
|
+
/**
|
|
137
|
+
* Update the get_docs tool to include newly installed packages.
|
|
138
|
+
* If get_docs doesn't exist yet, register it for the first time.
|
|
139
|
+
*/
|
|
140
|
+
refreshGetDocsTool() {
|
|
141
|
+
const packages = this.store.list();
|
|
142
|
+
if (packages.length === 0)
|
|
143
|
+
return;
|
|
144
|
+
const libraryEnum = packages.map(formatLibraryName);
|
|
145
|
+
if (this.getDocsRegistration) {
|
|
146
|
+
// Update existing tool with new enum
|
|
147
|
+
this.getDocsRegistration.update({
|
|
148
|
+
paramsSchema: {
|
|
149
|
+
library: z
|
|
150
|
+
.enum(libraryEnum)
|
|
151
|
+
.describe("The library to search (name@version)"),
|
|
152
|
+
topic: z
|
|
153
|
+
.string()
|
|
154
|
+
.describe("What you need help with (e.g., 'middleware authentication', 'server components')"),
|
|
155
|
+
},
|
|
156
|
+
callback: async ({ library, topic, }) => {
|
|
157
|
+
return this.handleGetDocs(library, topic);
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.registerGetDocsTool(packages);
|
|
163
|
+
}
|
|
164
|
+
this.mcp.sendToolListChanged();
|
|
165
|
+
}
|
|
166
|
+
handleGetDocs(library, topic) {
|
|
167
|
+
const packages = this.store.list();
|
|
55
168
|
const pkg = packages.find((p) => formatLibraryName(p) === library);
|
|
56
169
|
if (!pkg) {
|
|
57
170
|
return {
|
|
@@ -86,6 +199,111 @@ export class ContextServer {
|
|
|
86
199
|
db.close();
|
|
87
200
|
}
|
|
88
201
|
}
|
|
202
|
+
registerSearchPackagesTool() {
|
|
203
|
+
this.mcp.registerTool("search_packages", {
|
|
204
|
+
description: "Search for documentation packages available on the registry server. Use this to discover libraries you can download for offline documentation access.",
|
|
205
|
+
inputSchema: {
|
|
206
|
+
registry: z
|
|
207
|
+
.string()
|
|
208
|
+
.describe('Package registry (e.g., "npm", "pip", "cargo", "go")'),
|
|
209
|
+
name: z
|
|
210
|
+
.string()
|
|
211
|
+
.describe('Package name to search for (e.g., "react", "next")'),
|
|
212
|
+
version: z
|
|
213
|
+
.string()
|
|
214
|
+
.optional()
|
|
215
|
+
.describe("Specific version to search for (optional)"),
|
|
216
|
+
server: z
|
|
217
|
+
.string()
|
|
218
|
+
.optional()
|
|
219
|
+
.describe("Server name from config (optional, uses default if omitted)"),
|
|
220
|
+
},
|
|
221
|
+
}, async ({ registry, name, version, server }) => {
|
|
222
|
+
try {
|
|
223
|
+
const serverUrl = getServerUrl(server);
|
|
224
|
+
const results = await searchPackages(serverUrl, registry, name, version);
|
|
225
|
+
return {
|
|
226
|
+
content: [
|
|
227
|
+
{
|
|
228
|
+
type: "text",
|
|
229
|
+
text: JSON.stringify({
|
|
230
|
+
results,
|
|
231
|
+
count: results.length,
|
|
232
|
+
}),
|
|
233
|
+
},
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
catch (err) {
|
|
238
|
+
return {
|
|
239
|
+
content: [
|
|
240
|
+
{
|
|
241
|
+
type: "text",
|
|
242
|
+
text: JSON.stringify({
|
|
243
|
+
error: err instanceof Error ? err.message : String(err),
|
|
244
|
+
}),
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
registerDownloadPackageTool() {
|
|
252
|
+
this.mcp.registerTool("download_package", {
|
|
253
|
+
description: "Download and install a documentation package from the registry server. Once installed, the package becomes available through the get_docs tool for instant offline documentation lookup.",
|
|
254
|
+
inputSchema: {
|
|
255
|
+
registry: z
|
|
256
|
+
.string()
|
|
257
|
+
.describe('Package registry (e.g., "npm", "pip", "cargo", "go")'),
|
|
258
|
+
name: z.string().describe('Package name (e.g., "react", "next")'),
|
|
259
|
+
version: z
|
|
260
|
+
.string()
|
|
261
|
+
.describe('Package version (e.g., "18.3.1", "15.0.4")'),
|
|
262
|
+
server: z
|
|
263
|
+
.string()
|
|
264
|
+
.optional()
|
|
265
|
+
.describe("Server name from config (optional, uses default if omitted)"),
|
|
266
|
+
},
|
|
267
|
+
}, async ({ registry, name, version, server }) => {
|
|
268
|
+
try {
|
|
269
|
+
const serverUrl = getServerUrl(server);
|
|
270
|
+
const info = await downloadPackage(serverUrl, registry, name, version);
|
|
271
|
+
// Add to the store and refresh the get_docs tool
|
|
272
|
+
this.store.add(info);
|
|
273
|
+
this.refreshGetDocsTool();
|
|
274
|
+
return {
|
|
275
|
+
content: [
|
|
276
|
+
{
|
|
277
|
+
type: "text",
|
|
278
|
+
text: JSON.stringify({
|
|
279
|
+
success: true,
|
|
280
|
+
package: {
|
|
281
|
+
name: info.name,
|
|
282
|
+
version: info.version,
|
|
283
|
+
description: info.description,
|
|
284
|
+
sectionCount: info.sectionCount,
|
|
285
|
+
sizeBytes: info.sizeBytes,
|
|
286
|
+
},
|
|
287
|
+
message: `Installed ${info.name}@${info.version} (${info.sectionCount} sections). It is now available via the get_docs tool.`,
|
|
288
|
+
}),
|
|
289
|
+
},
|
|
290
|
+
],
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
return {
|
|
295
|
+
content: [
|
|
296
|
+
{
|
|
297
|
+
type: "text",
|
|
298
|
+
text: JSON.stringify({
|
|
299
|
+
error: err instanceof Error ? err.message : String(err),
|
|
300
|
+
}),
|
|
301
|
+
},
|
|
302
|
+
],
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}
|
|
89
307
|
}
|
|
90
308
|
function formatLibraryName(pkg) {
|
|
91
309
|
return `${pkg.name}@${pkg.version}`;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,MAAM,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,GAAG,CAAY;IACf,KAAK,CAAe;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neuledge/context",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"mcpName": "io.github.neuledge/context",
|
|
5
5
|
"description": "Context management for Neuledge packages",
|
|
6
6
|
"keywords": [],
|
|
@@ -27,15 +27,6 @@
|
|
|
27
27
|
"README.md",
|
|
28
28
|
"LICENSE"
|
|
29
29
|
],
|
|
30
|
-
"scripts": {
|
|
31
|
-
"build": "rimraf --glob dist/** && tsc -p tsconfig.build.json",
|
|
32
|
-
"test": "vitest run",
|
|
33
|
-
"test:watch": "vitest",
|
|
34
|
-
"lint": "npx biome ci --error-on-warnings",
|
|
35
|
-
"fix": "npx biome check --write",
|
|
36
|
-
"prepare": "npm run build",
|
|
37
|
-
"prepublishOnly": "npm run build && npm run test"
|
|
38
|
-
},
|
|
39
30
|
"publishConfig": {
|
|
40
31
|
"access": "public"
|
|
41
32
|
},
|
|
@@ -69,5 +60,12 @@
|
|
|
69
60
|
"require": [
|
|
70
61
|
"tsconfig-paths/register"
|
|
71
62
|
]
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"build": "rimraf --glob dist/** && tsc -p tsconfig.build.json",
|
|
66
|
+
"test": "vitest run",
|
|
67
|
+
"test:watch": "vitest",
|
|
68
|
+
"lint": "npx biome ci --error-on-warnings",
|
|
69
|
+
"fix": "npx biome check --write"
|
|
72
70
|
}
|
|
73
|
-
}
|
|
71
|
+
}
|