navo-mcp is Navo’s Model Context Protocol server — the agent hatch for living architecture maps. It serves the same ArchitectureMap YAML humans explore in the SPA, via stdio, so coding agents get structured topology instead of pasted diagrams or invented services.
Git remains the system of record. navo-mcp is not a second catalog: default mode is read-only; writes require explicit gates and still land as YAML for humans to PR.
Quick start (Go 1.25+): build navo-mcp, point NAVO_MAPS_DIR at a directory of ArchitectureMap YAML files, and open the hatch with stdio. Use MCP Inspector or your host’s MCP panel to list tools.
cd navo-mcp/navo-mcp
make build # → bin/navo-mcp
export NAVO_MAPS_DIR=$PWD/testdata/maps # or navo/config/systems
export NAVO_MCP_TOOLSETS=default
export NAVO_MCP_READ_ONLY=true
./bin/navo-mcp tool-search
npx @modelcontextprotocol/inspector ./bin/navo-mcp stdio
Default toolsets are read-only. Opt-in write and ops require --allow-write, --read-only=false, and an explicit toolset list.
| Toolset | Access | Tools (summary) |
|---|
| context (default) | Read-only | get_server_info, get_workspace_context |
| maps (default) | Read-only | list_maps, get_map_summary, get_map, search_maps |
| graph (default) | Read-only | get_node, list_nodes, get_edges, find_path, list_groups |
| validate (default) | Read-only | validate_map, validate_yaml |
| write (opt-in) | Write gate | write_map (yaml + dry_run); optional node annotation planned |
| ops (opt-in) | Write gate | scan_codebase, convert_diagram (via navo-cli) |
Resources use the navo:// scheme so hosts can pin charts. Prompts package multi-step crew workflows (onboarding tour, data-flow explanation, SME node review) and must not invent nodes or edges missing from tool results.
| URI / prompt | Role |
|---|
| navo://maps | Catalog of map id, title, version, updatedAt |
| navo://maps/{id} | Single ArchitectureMap (JSON or YAML) |
| navo://schema/categories | Allowed node categories / edge relations |
| architecture_onboarding | High-level tour of a system map |
| explain_data_flow | Explain edge path between components |
| sme_review_node | SME-quality review of node narrative and links |
Moor Cursor (or any stdio host) with absolute paths. Keep NAVO_MCP_READ_ONLY=true for day-to-day agent use.
{
"mcpServers": {
"navo": {
"command": "/ABS/path/to/navo-mcp/bin/navo-mcp",
"args": ["stdio"],
"env": {
"NAVO_MAPS_DIR": "/ABS/path/to/navo/config/systems",
"NAVO_MCP_TOOLSETS": "default",
"NAVO_MCP_READ_ONLY": "true"
}
}
}
}
- Supported harbors: Cursor, VS Code (MCP), Claude Desktop, Claude Code, Gemini CLI, Grok, and other stdio MCP hosts.
- Path sandbox: all chart paths resolve under NAVO_MAPS_DIR; .. escapes are rejected.
- Payload and list caps keep tool results bounded for agent context windows.
- stderr-only logging — stdout is the MCP protocol channel under stdio.
- Pair with operator CLI scan/convert for brownfield maps, then validate in CI before agents trust new topology.
- Product narrative: /features/mcp · full operator guides live in the navo-mcp repo docs.
# Trusted local windlass only — enable write + ops explicitly
navo-mcp stdio \
--toolsets default,write,ops \
--read-only=false \
--allow-write \
--maps-dir ./config/systems