navra + Goose
Prerequisites
- navra running (
navra serveor systemd service) - A bearer token (generated by
navra initornavra token create) - Goose installed
Configure Goose
Add navra as an extension in ~/.config/goose/config.yaml:
extensions:
navra:
type: sse
uri: http://localhost:9315/mcp
headers:
Authorization: "Bearer mcd_your_token_here"
Goose uses the SSE transport variant of MCP. navra supports both Streamable HTTP and SSE on the same endpoint.
Verify the connection
- Start Goose:
goose session - Ask Goose to list available tools. navra's tools and any upstream tools should appear.
- Run a simple task: "Read the file README.md"
Check navra's audit log:
navra audit --limit 5 --detailUsing navra wrap with Goose
For quick experiments:
navra wrap -- npx @modelcontextprotocol/server-filesystem /tmp
Then configure Goose to point at the printed endpoint.
Multiple upstream servers
Goose can connect to navra as a single extension, while navra proxies multiple upstream MCP servers. This gives Goose access to all tools through one secured endpoint:
# config.toml
[[upstream]]
name = "filesystem"
transport = "stdio"
command = ["npx", "@modelcontextprotocol/server-filesystem", "/home/user"]
[[upstream]]
name = "github"
transport = "stdio"
command = ["npx", "@modelcontextprotocol/server-github"]
Goose sees all tools from both servers through navra, with unified auth, ACLs, and safety filters.
Troubleshooting
Goose cannot connect
- Verify navra is listening:
curl -s http://localhost:9315/health - Check the transport type is
sse(notstdio) - Confirm the token in the YAML matches one registered in navra
Tools appear but calls fail
Check the permission set for your agent. Goose may be calling tools that require approval:
navra audit --limit 10 --detail
If you see requires_approval denials, either pre-approve the tools
or change the permission set to allow them.