|
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.
|
|---|
|
|
| docs/api.md |
|---|
| docs/mcp.md |
|---|
| mcp_servers.d/gnexus-creds.json |
|---|
| navi/api/routes/mcp_keys.py |
|---|
| tests/unit/api/test_mcp_keys.py |
|---|
| webclient/dist/assets/index-B6EXLnRo.css 100644 → 0 |
|---|
| webclient/dist/assets/index-DGGrRn8T.css 0 → 100644 |
|---|
| webclient/dist/assets/index-vXGuKJlF.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/assets/index-zyum0AXt.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/components/settings/McpKeysPanel.vue |
|---|
| webclient/tests/unit/components/settings/mcpKeysPanel.test.js |
|---|