Skip to content

LLM Orchestrator V2.1.0

Pre-release
Pre-release

Choose a tag to compare

@Wolfy024 Wolfy024 released this 25 Apr 23:41
· 4 commits to master since this release

Release Notes — v2.1.0: Native MCP Protocol Support

Date: April 26, 2026


What's New

🔌 Native MCP (Model Context Protocol) Client

The orchestrator now speaks MCP natively. You can plug in any standard MCP server — filesystem, Postgres, Brave Search, GitHub, Slack, or any community-built server — by adding a few lines to config.json. No custom wrappers, no code changes.

MCP tools appear alongside native tools as a single unified toolset. The LLM doesn't know or care which tools are local and which are coming from external servers — it just uses them.

Two transport types supported:

  • stdio — for local MCP servers that run as subprocesses (filesystem, git, Postgres, etc.)
  • SSE — for remote MCP servers accessible over HTTP (Brave Search, API gateways, hosted services)

Example config:

{
  "mcp_servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
      "permission": "destructive"
    },
    "brave-search": {
      "transport": "sse",
      "url": "https://your-mcp-proxy.example.com",
      "headers": { "Authorization": "Bearer your_key" },
      "permission": "allow"
    }
  }
}

🔒 MCP Permission Profiles

MCP tools are fully integrated into the existing permission system. Each server gets a permission level:

  • "allow" — tools run freely, like native read-only tools
  • "destructive" (default) — tools require user approval before execution
  • "deny" — tools are discoverable but blocked from running

The ci profile blocks all MCP tools unconditionally. YOLO mode auto-approves destructive MCP tools just like native ones.

🎛️ /mcp Slash Command

New runtime controls for managing MCP connections without restarting:

Command What it does
/mcp Show connected servers and tool counts
/mcp connect Reconnect all servers from config
/mcp disconnect Tear down all connections
/mcp status Detailed view with per-server tool lists

📊 UI Updates

  • Startup banner now shows MCP server count and total external tools
  • /tools displays MCP tools in their own category with server origin labels
  • /help includes the new /mcp command

Post-Install MCP Setup

For users running the pre-built executable: just edit config.json next to the .exe, add your mcp_servers entries, and restart. No rebuild needed.

Prerequisite: Most MCP servers require Node.js (npx). Install from nodejs.org if needed.


Technical Details

New Modules

Module Role
mcp/transport.py Stdio + SSE JSON-RPC 2.0 transports with Content-Length framing
mcp/client.py Per-server lifecycle: initialize handshake → tool discovery → tool execution → shutdown
mcp/manager.py Multi-server coordinator: aggregates schemas, routes calls, manages permissions
repl/commands/mcp.py /mcp slash command handler

Integration Points

  • Tool Registry (tools/registry.py) — get_tool_schemas() merges native + MCP schemas; execute_tool() routes to MCP when the tool isn't in the native registry
  • Tool Executor (agent/executor.py) — MCP tools are marked parallel-safe (they run in isolated processes)
  • Permission System (core/permissions_checks.py) — is_destructive() and is_tool_denied_in_profile() extended to check MCP tool classifications
  • Main (main.py) — MCP servers auto-connect on startup, gracefully disconnect on exit

Name Collision Handling

If a native tool and an MCP tool share the same name, the MCP tool is automatically prefixed as servername__toolname. Native tools always take priority.


No Breaking Changes

  • Default mcp_servers is {} — zero MCP servers configured out of the box
  • All existing native tools, slash commands, and workflows are unchanged
  • No new Python dependencies required (MCP transport uses stdlib subprocess + json)
  • SSE transport reuses the existing httpx dependency

Full Changelog

  • Added backend/mcp/ package (transport, client, manager)
  • Added backend/repl/commands/mcp.py
  • Modified backend/tools/registry.py — MCP schema merging + tool routing
  • Modified backend/agent/executor.py — MCP parallel safety
  • Modified backend/core/permissions_checks.py — MCP permission integration
  • Modified backend/main.py — MCP startup/teardown
  • Modified backend/repl/commands/__init__.py — registered /mcp
  • Modified backend/ui/help.py/mcp in help, MCP category in /tools
  • Modified backend/ui/banner.py — MCP status line
  • Modified config.json — added mcp_servers key
  • Modified llm-orchestrator-setup.spec — MCP hidden imports
  • Modified README.md — full MCP documentation section