[Feature]: Scope MCP tool discovery to a server
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 58/100
Research direction
Trace the MCP find_mcp_tools implementation, REST POST /api/v1/mcps/find, and the Python SDK’s sync and async discovery calls. First read the existing registration validation and authorization rules for private and account-shared tool roots. Implement the optional server_name filter before ranking and limiting; done means coverage for both roots, unknown and invalid names, omitted parameters, and the limit=1 regression described in the issue.
Written by the indexing model from the issue text.
Description
Issue Origin
Inferred by an AI agent and not observed or reproduced
Problem Statement
find_mcp_tools ranks tools across the caller’s visible catalog. An agent that already knows the server it wants cannot scope discovery to that server. With a small result limit, tools from other servers can fill the result set.
Proposed Solution
Add an optional server_name to the MCP find_mcp_tools tool and REST POST /api/v1/mcps/find. Expose it as an optional keyword in the Python SDK’s existing sync and async discovery calls.
- Validate names using the existing registration rules and match the complete name case-sensitively.
- Filter the candidate set within each authorized tool root before ranking and applying
limit. With the default scope, an exact name may match both the caller’s private root and the account-shared root. The existing RESTtarget_urican still narrow discovery to one authorized root. - Return an empty result for a valid name with no visible matches, and a validation error for an invalid name. Omitting the field preserves the existing request behavior and response shape.
Alternatives Considered
No response
Feature Area
Retrieval/Search
Use Case
An agent configured to use the weather MCP server can discover a forecast tool from that server without losing its result slots to similarly described tools registered on other servers.
Example API (Optional)
find_mcp_tools(query="forecast", limit=3, server_name="weather")
# Equivalent JSON body for POST /api/v1/mcps/find
{"query": "forecast", "limit": 3, "server_name": "weather"}
Additional Context
A regression should put a higher-scoring tool on a different, similarly named server and verify that the selected server still supplies the result with limit=1. Also cover the private and shared roots, an unknown name, and requests that omit the parameter.
I’d like to implement this once the API scope is confirmed. Does the proposed behavior for the same name in both visible roots match the intended discovery contract?
Contribution
- I am willing to contribute to implementing this feature
- Dominant language
- Python
- Stars
- 41.8k
- Forks
- 3.4k
- Avg merge
- 19h 29m
- Merged PRs (30d)
- 500
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from volcengine/OpenViking
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
volcengine/OpenViking#7485 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
volcengine/OpenViking#7210 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
volcengine/OpenViking#7205 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: Retrieval rerank fallback statistics stay zero after provider failurePossibly taken @97Three claimed this 8 days ago. Openbug kernel
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
volcengine/OpenViking#7014 ·
Maintainers usually reply within 1 day
-
[Bug]: memory.prefetch_search_topn is inert above 5 (call site omits limit), plus two docstrings state the wrong defaultsPossibly taken @peterzhang987723 claimed this 8 days ago. Openkernel
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
volcengine/OpenViking#6923 · 2 comments ·
Maintainers usually reply within 1 day
All issues in volcengine/OpenViking
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
FinanceFlash/unvibecode#699 ·
Maintainers usually reply within 1 day
-
enhancement Website
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
OWASP/OWASP-Hunting#96 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
micropython/micropython#19942 ·
Maintainers usually reply within 1 day
-
A rebuild posts "not part of this build" success to the commit's failed `nix-build` gate and effectsPossibly taken @Padraic-O-Mhuiris claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
`epoch.Integer` raises a raw OverflowError for integers too large to convert to a floatPossibly taken @arindam77 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
pydantic/pydantic-extra-types#479 ·
Maintainers usually reply within 1 day