Multiple DATABASE connectors on one MCP server: tools/list silently exposes only the first connector's tools, and execute_query always routes to the first database
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #1309 di @helpcodeai — integrata
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
Direzione di ricerca
Start with mcp-server.service.ts around lines 109–112, where connectors are ordered, and trace how the MCP endpoint builds tools/list and routes execute_query. The issue also points to the GraphQL and OData prefixing in connectors.controller.ts as an example to compare. Done means all three database tools are exposed per assigned connector and each executes against its own database; add or run endpoint tests for multiple connectors to verify this.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Assigning two or more DATABASE connectors to the same MCP server silently drops all but the first connector's auto-generated tools from tools/list, and every call to the shared tool names (execute_query, get_database_schema, get_example_queries) is executed against the first-registered connector's database. The other databases are not just unlisted — they are completely unreachable through the per-server MCP endpoint, with no error or warning anywhere in the UI.
Multi-connector assignment is a core feature of AnythingMCP (mcp_server_connectors), so a legitimate server configuration serves the wrong (or incomplete) data silently.
Reproduced on self-hosted v0.29.0 (18aa018), and I verified the same code paths are unchanged on current main (6d1d895c, post-0.51.0), so this is not fixed yet.
Steps to Reproduce
- Create two or more DATABASE connectors in one workspace (reproduced with:
mysql-domeos-betaMySQL,service-mesh-rwMySQL,context-forge-pgPostgreSQL). - Assign all of them to one MCP server.
- Call
tools/liston/mcp/{serverId}with a validX-API-Key:
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
- Result: 4 tools —
execute_query,get_database_schema,get_example_queries(all with the first connector's flavor; MySQL in my case) pluskg_how_to_obtain. Expected 9 DB tools (3 per connector). - Call
execute_querywith any SQL — it is always executed against the first-registered connector's database (registration order isorderBy: { id: 'asc' }inmcp-server.service.ts:109-112).
GET /api/mcp-servers/{id} confirms all 3 connectors are assigned (_count.connectors: 3), while /mcp/{id} serves only one connector's tools.
Expected Behavior
- All 9 database tools are exposed (3 per connector), and each routes to its own connector's database.
- Since the SDK requires unique tool names per
McpServerinstance, the natural design (already used elsewhere in the codebase — GraphQL and OData builtins prefix tools with the connector slug, e.g.buildGraphqlBuiltinTools({ prefix: slugifyForPrefix(dto.name) })inconnectors.controller.ts) is to namespace DATABASE builtins per connector, e.g.context_forge_pg_execute_queryor similar. - At minimum, assigning a second DATABASE connector should surface a visible warning, since silent tool dropping is hard to notice.
Actual Behavior
tools/listreturns 4 tools instead of 9+1; six tools silently vanish.- All calls to the shared names route to the first-registered connector — the other databases' data is unreachable, and
execute_queryreturns plausible data from the wrong database, which is worse than an error: nothing suggests anything is missing. - The only trace is a rate-limited (once/hour) backend warn log:
Duplicate tool name "execute_query" on server <id> — skipping the extra copy (check for duplicate connector assignments).
Connector Type
Database
Deployment Method
Docker Compose
Version
No response
Relevant Logs
WARN [McpEndpointController] Duplicate tool name "execute_query" on server <mcpServerId> — skipping the extra copy (check for duplicate connector assignments).
WARN [McpEndpointController] Duplicate tool name "get_database_schema" on server <mcpServerId> — skipping the extra copy (check for duplicate connector assignments).
WARN [McpEndpointController] Duplicate tool name "get_example_queries" on server <mcpServerId> — skipping the extra copy (check for duplicate connector assignments).
Environment
- AnythingMCP v0.29.0, self-hosted
- Connectors: 3× DATABASE (2× MySQL, 1× PostgreSQL)
- MCP client: raw Streamable HTTP with
X-API-Key
- Lingua principale
- TypeScript
- Stelle
- 856
- Fork
- 82
- Merge medio
- 7h 49m
- PR unite (30g)
- 302
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di HelpCode-ai/anythingmcp
-
enhancement good first issue hacktoberfest help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
HelpCode-ai/anythingmcp#982 · 10 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
HelpCode-ai/anythingmcp#1284 ·
I maintainer di solito rispondono entro 1 giorno
-
Translate the rest of the admin UI (DE, IT)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
HelpCode-ai/anythingmcp#1271 ·
I maintainer di solito rispondono entro 1 giorno
-
DATABASE connectors keep a connection-string password in plaintext and return it to the browserForse già presa @Riteesh-2k6 l’ha presa 4 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
HelpCode-ai/anythingmcp#1245 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
🎃 New adapter: SonarQube (code quality, Server or Cloud)Forse già presa @aj-codespy l’ha presa 2 giorni fa. Apertaenhancement hacktoberfest help wanted
Difficoltà 3/5 Mezza giornata Idoneità per principianti 85/100
HelpCode-ai/anythingmcp#1240 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di HelpCode-ai/anythingmcp
Issue simili
-
area:plugins area:security area:skills bug has repro
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
anthropics/claude-code#105911 ·
I maintainer di solito rispondono entro 1 giorno
-
openspec-apply-change skill: when blocked, may select a ready artifact unrelated to missingArtifactsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Fission-AI/OpenSpec#2165 ·
I maintainer di solito rispondono entro 1 giorno
-
🐞 bug 🧐 unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
Tencent/tdesign-vue-next#7032 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
gnosis/gnosis_vpn#661 ·
I maintainer di solito rispondono entro 1 giorno
-
content-freshness: staleOwnedContent doc comments still say 'complete receipt' (follow-up to #7912)Apertatriage:bug-verified
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno