MCP settings tab: list every connected server, slot only where declared
The tab was empty on every install: it listed only servers whose config
declares a `user_key` slot, and no config declared one — which read as
"no MCP servers connected" even though five are wired to profiles.

- GET /mcp-keys now returns every server referenced by at least one
  profile, keyed ones first, with `accepts_user_key`, the slot location
  (null when there is none) and the profile ids that connect it. The
  per-user key store is skipped entirely when nothing has a slot.
- gnexus-creds declares `user_key: {header: Authorization, prefix:
  "Bearer "}` — it is the one server carrying a shared credential, so its
  personal-key field is now real: users with a key run under their own,
  users without one fall back to the shared default.
- The panel lists all servers (transport + profiles), dims the keyless
  rows, and shows a key input only for slotted ones, spelling out the
  shared-key fallback.

docs/api.md and docs/mcp.md updated; backend 1367 passed, webclient 148.
1 parent 51804dc commit 10385c6e02664f5e036123873903891f4e2139a0
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 12 hours ago
Showing 13 changed files
View
docs/api.md
View
docs/mcp.md
View
mcp_servers.d/gnexus-creds.json
View
navi/api/routes/mcp_keys.py
View
tests/unit/api/test_mcp_keys.py
View
webclient/dist/assets/index-B6EXLnRo.css 100644 → 0
View
webclient/dist/assets/index-DGGrRn8T.css 0 → 100644
View
webclient/dist/assets/index-vXGuKJlF.js 100644 → 0
Not supported
View
webclient/dist/assets/index-zyum0AXt.js 0 → 100644
Not supported
View
webclient/dist/index.html
View
webclient/dist/sw.js
View
webclient/src/components/settings/McpKeysPanel.vue
View
webclient/tests/unit/components/settings/mcpKeysPanel.test.js