Skip to the content.

MCP client recipes

Use the low-token router profile for day-to-day clients:

CENTRALMCP_ROUTER_MODE=minimal
CENTRALMCP_TOOLSETS=central,glp,rag

This exposes only find_tool, invoke_read_tool, and invoke_tool in minimal mode while still letting the router reach the backend catalog on demand.

Pick a connection style

Style Use when Config
stdio Your client launches the MCP server process .mcp.json.example, .cursor/mcp.json, .vscode/mcp.json.example, .claude/launch.json
streamable HTTP Your client connects to an already-running local MCP server .mcp.http.json.example + scripts/run_http_router.sh

Generic stdio client

python3 scripts/setup_wizard.py --yes --skip-credentials

Or copy the generic file manually:

cp .mcp.json.example .mcp.json

Edit .mcp.json and replace /path/to/centralmcp with your local clone path. Keep:

{
  "CENTRALMCP_ROUTER_MODE": "minimal",
  "CENTRALMCP_TOOLSETS": "central,glp,rag"
}

Cursor

The committed .cursor/mcp.json is already the default low-token router profile.

Use .cursor/mcp.dev.json only when debugging direct backend servers. It exposes the six core Aruba servers directly, so it costs more tool-list context than the router profile.

VS Code

cp .vscode/mcp.json.example .vscode/mcp.json

Then keep the aruba-tool-router server entry enabled for normal use.

Included .claude launch profiles

Use .claude/launch.json. The first configuration is:

aruba-tool-router MCP server (minimal)

The remaining direct-server profiles are for debugging individual backends.

Streamable HTTP

Start the local HTTP router:

python3 scripts/setup_wizard.py --yes --skip-credentials
MCP_PORT=8010 bash scripts/run_http_router.sh

Copy the generic HTTP client snippet:

cp .mcp.http.json.example .mcp.http.json

Point your MCP client to:

http://127.0.0.1:8010/mcp

If you change MCP_HOST or MCP_PORT, update .mcp.http.json to match. The HTTP helper safely loads expected local .env assignments first, so optional products selected in the wizard are available to the router process. Its startup banner prints the selected products and CENTRALMCP_PRODUCT_ACCESS mode so lab write visibility is obvious before connecting a client.

Optional product clients

Keep optional products disabled unless you want them in the current MCP session. The wizard can enable only the starters you choose, write the matching local .env, and add the product selector to local stdio MCP configs:

python3 scripts/setup_wizard.py --products clearpass,mist

Use --with-products only when you want every starter backend enabled. Add --product-access read-write only for trusted lab sessions that need guarded write tools visible.

Verify local setup

Run the local doctor before opening the client:

uv run python scripts/doctor.py

It does not call Central, GLP, or optional product APIs. It checks copied local configs, placeholder paths, HTTP URL/transport mismatch, low-token router profile drift, optional product env, local indexes, RAG source-manifest drift, and listener status.

First useful MCP call flow

find_tool("show critical alerts")
invoke_read_tool("list_active_alerts", {"severity": "CRITICAL", "limit": 20})

Use invoke_read_tool for investigations. Use invoke_tool only after intentional write/destructive user intent.

For more copy/paste examples, see example-prompts.md.