@branch42-labs/netraptor-mcp 0.3.1 → 0.3.2
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/cli.d.ts +1 -1
- package/dist/cli.js +1 -43
- package/dist/cli.js.map +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.js +64 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp-server.js +4 -2
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export
|
|
2
|
+
export {};
|
package/dist/cli.js
CHANGED
|
@@ -1,47 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { ExtensionBridgeServer } from "./bridge-server.js";
|
|
4
|
-
import { createMcpServer } from "./mcp-server.js";
|
|
5
|
-
import { readPairingConfig, writePairingConfig } from "./pairing.js";
|
|
6
|
-
function usage() {
|
|
7
|
-
return `Netraptor local MCP server
|
|
8
|
-
|
|
9
|
-
Usage:
|
|
10
|
-
netraptor-mcp Start the stdio MCP server and localhost bridge
|
|
11
|
-
netraptor-mcp pair <CODE> Pair this computer with the Netraptor extension
|
|
12
|
-
netraptor-mcp --help Show this help
|
|
13
|
-
|
|
14
|
-
Environment:
|
|
15
|
-
NETRAPTOR_MCP_PORT WebSocket port (default: 47321)
|
|
16
|
-
NETRAPTOR_HOME Config directory override (tests/advanced use)`;
|
|
17
|
-
}
|
|
18
|
-
export async function main(argv = process.argv.slice(2)) {
|
|
19
|
-
if (argv[0] === "--help" || argv[0] === "-h" || argv[0] === "help") {
|
|
20
|
-
process.stdout.write(`${usage()}\n`);
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
if (argv[0] === "pair") {
|
|
24
|
-
if (!argv[1])
|
|
25
|
-
throw new Error("Usage: netraptor-mcp pair <CODE>");
|
|
26
|
-
await writePairingConfig(argv.slice(1).join(""));
|
|
27
|
-
process.stdout.write("Paired with Netraptor.\n");
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (argv.length > 0)
|
|
31
|
-
throw new Error(`Unknown command: ${argv[0]}\n\n${usage()}`);
|
|
32
|
-
const rawPort = process.env.NETRAPTOR_MCP_PORT ?? "47321";
|
|
33
|
-
const port = Number(rawPort);
|
|
34
|
-
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
35
|
-
throw new Error(`Invalid NETRAPTOR_MCP_PORT: ${rawPort}`);
|
|
36
|
-
}
|
|
37
|
-
const bridge = new ExtensionBridgeServer(await readPairingConfig(), "127.0.0.1", port, undefined, () => readPairingConfig());
|
|
38
|
-
await bridge.listen();
|
|
39
|
-
const mcp = createMcpServer(bridge);
|
|
40
|
-
await mcp.connect(new StdioServerTransport());
|
|
41
|
-
const shutdown = () => void bridge.close().finally(() => process.exit(0));
|
|
42
|
-
process.once("SIGINT", shutdown);
|
|
43
|
-
process.once("SIGTERM", shutdown);
|
|
44
|
-
}
|
|
2
|
+
import { main } from "./main.js";
|
|
45
3
|
main().catch((error) => {
|
|
46
4
|
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
47
5
|
process.exitCode = 1;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(argv?: string[]): Promise<void>;
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
|
|
2
|
+
import { ExtensionBridgeServer } from "./bridge-server.js";
|
|
3
|
+
import { createMcpServer } from "./mcp-server.js";
|
|
4
|
+
import { readPairingConfig, writePairingConfig } from "./pairing.js";
|
|
5
|
+
function usage() {
|
|
6
|
+
return `Netraptor local MCP server
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
netraptor-mcp Start the stdio MCP server and localhost bridge
|
|
10
|
+
netraptor-mcp pair <CODE> Pair this computer with the Netraptor extension
|
|
11
|
+
netraptor-mcp --help Show this help
|
|
12
|
+
|
|
13
|
+
Environment:
|
|
14
|
+
NETRAPTOR_MCP_PORT WebSocket port (default: 47321)
|
|
15
|
+
NETRAPTOR_HOME Config directory override (tests/advanced use)`;
|
|
16
|
+
}
|
|
17
|
+
export async function main(argv = process.argv.slice(2)) {
|
|
18
|
+
if (argv[0] === "--help" || argv[0] === "-h" || argv[0] === "help") {
|
|
19
|
+
process.stdout.write(`${usage()}\n`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (argv[0] === "pair") {
|
|
23
|
+
if (!argv[1])
|
|
24
|
+
throw new Error("Usage: netraptor-mcp pair <CODE>");
|
|
25
|
+
await writePairingConfig(argv.slice(1).join(""));
|
|
26
|
+
process.stdout.write("Paired with Netraptor.\n");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (argv.length > 0)
|
|
30
|
+
throw new Error(`Unknown command: ${argv[0]}\n\n${usage()}`);
|
|
31
|
+
const rawPort = process.env.NETRAPTOR_MCP_PORT ?? "47321";
|
|
32
|
+
const port = Number(rawPort);
|
|
33
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
34
|
+
throw new Error(`Invalid NETRAPTOR_MCP_PORT: ${rawPort}`);
|
|
35
|
+
}
|
|
36
|
+
const bridge = new ExtensionBridgeServer(await readPairingConfig(), "127.0.0.1", port, undefined, () => readPairingConfig());
|
|
37
|
+
try {
|
|
38
|
+
await bridge.listen();
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof Error && "code" in error && error.code === "EADDRINUSE") {
|
|
42
|
+
throw new Error(`Another netraptor-mcp is already listening on 127.0.0.1:${port} (possibly an orphaned instance). Stop it or set NETRAPTOR_MCP_PORT to a different port.`);
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
const mcp = createMcpServer(bridge);
|
|
47
|
+
await mcp.connect(new StdioServerTransport());
|
|
48
|
+
let closing = false;
|
|
49
|
+
const shutdown = () => {
|
|
50
|
+
if (closing)
|
|
51
|
+
return;
|
|
52
|
+
closing = true;
|
|
53
|
+
void bridge.close().finally(() => process.exit(0));
|
|
54
|
+
};
|
|
55
|
+
const onclose = mcp.server.onclose;
|
|
56
|
+
mcp.server.onclose = () => {
|
|
57
|
+
onclose?.();
|
|
58
|
+
shutdown();
|
|
59
|
+
};
|
|
60
|
+
process.stdin.once("end", shutdown);
|
|
61
|
+
process.once("SIGINT", shutdown);
|
|
62
|
+
process.once("SIGTERM", shutdown);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
1
2
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
3
|
import * as z from "zod/v4";
|
|
4
|
+
const { version } = createRequire(import.meta.url)("../package.json");
|
|
3
5
|
function text(value) {
|
|
4
6
|
return {
|
|
5
7
|
content: [{
|
|
@@ -9,13 +11,13 @@ function text(value) {
|
|
|
9
11
|
};
|
|
10
12
|
}
|
|
11
13
|
export function createMcpServer(bridge) {
|
|
12
|
-
const server = new McpServer({ name: "netraptor", version
|
|
14
|
+
const server = new McpServer({ name: "netraptor", version });
|
|
13
15
|
const proxy = async (method, params) => {
|
|
14
16
|
try {
|
|
15
17
|
return text(await bridge.request(method, params));
|
|
16
18
|
}
|
|
17
19
|
catch (error) {
|
|
18
|
-
return text(error instanceof Error ? error.message : String(error));
|
|
20
|
+
return { ...text(error instanceof Error ? error.message : String(error)), isError: true };
|
|
19
21
|
}
|
|
20
22
|
};
|
|
21
23
|
server.registerTool("list_sessions", {
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACzE,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA8C;IAC5E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|