π¦
Neurond
MCP federation proxy β aggregates multiple MCP servers behind a single endpoint with namespaced tool routing.
0 installs
Trust: 34 β Low
Browser
Ask AI about Neurond
Powered by Claude Β· Grounded in docs
I know everything about Neurond. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Loading tools...
Reviews
Documentation
neurond
MCP Federation Proxy β aggregates multiple MCP servers behind a single endpoint with namespaced tool routing.
neurond connects to downstream MCP servers (like mcpd), discovers their tools, prefixes them with a namespace, and exposes them upstream as a unified tool registry.
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββ
β Host β
β β
cortexd βββββββββββ€ βββββββββββββββββββββββββββββββββββββββ β
(fleet) :8443 β β neurond β β
β β β β
β β βββββββββββββββ ββββββββββββββββ β β
β β β upstream/ β β federation/ β β β
β β β β β β β β
β β β ProxyEngine β β manager.rs β β β
β β β β β namespace.rs β β β
β β β security/ β β transport.rs β β β
β β β β β β β β
β β β policy.rs β β β β β
β β β audit.rs β β β β β
β β ββββββββ¬βββββββ ββββββββ¬ββββββββ β β
β β β β β β
β β βββββββββββββββββββ β β
β β β β β
β ββββββββββββββββββββΌββββββββββββββββββββ β
β β β
β ββββββββββββ΄βββββββββββ β
β βΌ βΌ β
β mcpd (localhost:8080) redis-mcp (stdio) β
β namespace: "linux" namespace: "redis" β
β linux.system.info redis.get β
β linux.process.list redis.set β
β linux.service.restart redis.keys β
βββββββββββββββββββββββββββββββββββββββββββββββ
How It Works
- Config β
neurond.tomldeclares downstream MCP servers with namespace prefixes and transport types - Connect β On startup, neurond connects to each downstream and discovers their tools
- Namespace β Each tool is prefixed:
system.infofrom mcpd becomeslinux.system.info - Expose β All namespaced tools are exposed as a single MCP server on
:8443 - Security β All incoming tool calls are evaluated against
policy.tomland recorded inaudit.log - Route β Incoming
linux.system.infocall β strip prefix β forwardsystem.infoto mcpd
Configuration
# neurond.toml
[server]
bind = "127.0.0.1" # localhost until TLS is implemented
port = 8443
# Optional: register with cortexd fleet orchestrator
# [registration]
# cortexd_url = "https://cortexd.example.com:9443"
# heartbeat_interval_secs = 30
# Downstream MCP servers
[[federation.servers]]
namespace = "linux"
transport = "localhost"
url = "http://127.0.0.1:8080/api/v1/mcp"
[[federation.servers]]
namespace = "redis"
transport = "stdio"
command = "/usr/local/bin/redis-mcp"
args = ["--mode", "stdio"]
Transport Types
| Transport | Description | Use Case |
|---|---|---|
localhost | Connect via HTTP to a running MCP server | mcpd, any HTTP MCP server |
stdio | Spawn a child process, communicate via stdin/stdout | Single-binary MCP tools |
Getting Started
Prerequisites
- Linux (Debian 12 / Ubuntu 22.04+)
- Rust 1.75+
- At least one downstream MCP server (e.g., mcpd)
Build & Run
git clone https://github.com/cortexd-labs/neurond.git
cd neurond
cargo build --release
# Create config
cp neurond.toml.example neurond.toml
# Edit neurond.toml to point at your downstream(s)
# Run (development)
cargo run
# Run (production)
./target/release/neurond
Server listens on http://127.0.0.1:8443/api/v1/mcp.
Security
- Deny-by-default policy β
/etc/neurond/policy.tomlcontrols which namespaced tools are allowed. Mutations are blocked unless explicitly enabled. - Audit log β Every tool call is logged as JSONL in
/var/log/neurond/audit.log(timestamp, tool, params, decision, result, duration).
Configure Policy (.toml)
default_action = "deny"
[[rules]]
id = "allow-safe-observability"
effect = "allow"
# You can use wildcards and namespaces
tools = ["linux.system.*", "redis.get", "linux.service.status"]
[[rules]]
id = "allow-linux-restart"
effect = "allow"
tools = ["linux.service.restart"]
Testing
cargo test # 14 tests
cargo clippy -- -W clippy::all
Test with the MCP Inspector:
npx -y @modelcontextprotocol/inspector
# Transport: HTTP+SSE, URL: http://localhost:8443/api/v1/mcp
Project Structure
src/
βββ main.rs # Entry point, config loading, server startup
βββ config.rs # neurond.toml parsing
β
βββ federation/
β βββ manager.rs # Downstream orchestration, tool aggregation, call routing
β βββ connection.rs # Downstream lifecycle state machine
β βββ namespace.rs # Tool name prefixing/stripping/resolution
β βββ transport.rs # Localhost (HTTP) and stdio (child process) transports
β
βββ upstream/
β βββ server.rs # ProxyEngine β MCP ServerHandler exposed to cortexd
β
βββ registration/
βββ register.rs # cortexd registration/deregistration
βββ heartbeat.rs # Background heartbeat task
Related Projects
- mcpd β Linux MCP server exposing 100+ system tools (the primary downstream for neurond)
- cortexd β Fleet orchestrator for managing multiple neurond nodes (planned)
License
MIT
