Skip to content

Commit e0ddb22

Browse files
committed
feat: add MCP server mode with --mcp flag for IDE integration
Add stdio-based MCP server support to OmniRoute CLI, enabling AI agents in VS Code, Cursor, Claude Desktop, and Copilot to interact with OmniRoute tools (health, combos, quota, routing). Update help text, gitignore vscode-extension subproject, and include MCP/A2A strategy report.
1 parent e5142c6 commit e0ddb22

File tree

15 files changed

+2793
-10
lines changed

15 files changed

+2793
-10
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,6 @@ electron/package-lock.json
113113
electron/dist-electron/
114114
electron/node_modules/
115115
icon.iconset/
116+
117+
# VS Code Extension (independent Git repo)
118+
vscode-extension/

bin/omniroute.mjs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* omniroute Start the server (default port 20128)
88
* omniroute --port 3000 Start on custom port
99
* omniroute --no-open Start without opening browser
10+
* omniroute --mcp Start MCP server (stdio transport for IDEs)
1011
* omniroute --help Show help
1112
* omniroute --version Show version
1213
*/
@@ -86,9 +87,17 @@ if (args.includes("--help") || args.includes("-h")) {
8687
omniroute Start the server
8788
omniroute --port <port> Use custom API port (default: 20128)
8889
omniroute --no-open Don't open browser automatically
90+
omniroute --mcp Start MCP server (stdio transport for IDEs)
8991
omniroute --help Show this help
9092
omniroute --version Show version
9193
94+
\x1b[1mMCP Integration:\x1b[0m
95+
The --mcp flag starts an MCP server over stdio, exposing OmniRoute
96+
tools for AI agents in VS Code, Cursor, Claude Desktop, and Copilot.
97+
98+
Available tools: omniroute_get_health, omniroute_list_combos,
99+
omniroute_check_quota, omniroute_route_request, and more.
100+
92101
\x1b[1mConfig:\x1b[0m
93102
Loads .env from: ~/.omniroute/.env or ./.env
94103
Memory limit: OMNIROUTE_MEMORY_MB (default: 512)
@@ -116,6 +125,19 @@ if (args.includes("--version") || args.includes("-v")) {
116125
process.exit(0);
117126
}
118127

128+
// ── MCP Server Mode ───────────────────────────────────────
129+
if (args.includes("--mcp")) {
130+
try {
131+
const { startMcpStdio } = await import(join(ROOT, "open-sse", "mcp-server", "server.ts"));
132+
await startMcpStdio();
133+
} catch (err) {
134+
console.error("\x1b[31m✖ Failed to start MCP server:\x1b[0m", err.message || err);
135+
process.exit(1);
136+
}
137+
// MCP server runs indefinitely via stdio — don't fall through to Next.js server
138+
await new Promise(() => {}); // Keep process alive
139+
}
140+
119141
function parsePort(value, fallback) {
120142
const parsed = parseInt(String(value), 10);
121143
return Number.isFinite(parsed) && parsed > 0 && parsed <= 65535 ? parsed : fallback;

0 commit comments

Comments
 (0)