MCP server: silent wrong matches on ambiguous/near-miss names, noisy query_graph, misleading list_prs error
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- backend-api-design, devtools
Research direction
Start by reproducing the listed calls against the explicit graph.json, then trace the MCP tool entry points get_node, query_graph, get_community, list_prs, get_pr_impact, and get_neighbors. Done means ambiguous and non-exact labels are explicit, graph results are relevance-aware, communities are labelled, repository errors explain repo=, and neighbor truncation preserves incoming edges.
Written by the indexing model from the issue text.
Description
Version: graphifyy 0.9.71 (installed via uv tool), graphify-mcp over stdio, started with an explicit graph.json path.
Codebase: PHP / Symfony bundle, ~11k nodes / ~33k edges, 614 communities.
1. get_node silently picks one match for an ambiguous name
- Steps:
get_node(label="edit")on a graph where several classes defineedit(). - Actual: returns a single node (
Controller/VisitController.php L427) with no hint that other candidates exist. - Expected: a list of the candidates (path + line), or an explicit "ambiguous, N matches" error. The caller can't tell whether the answer is the right
edit().
2. get_node silently resolves a non-existent name to a different node
- Steps:
get_node(label="MailController")when noMailControllerexists in the codebase. - Actual: returns
EmailControlleras if it were an exact match. - Expected: "no exact match", optionally followed by fuzzy suggestions clearly labelled as such.
Side note: the path::symbol form works (Controller/VisitController.php::edit → found). get_node(node_id=...) does not find a generated-looking id for a non-existent symbol, which is correct.
3. query_graph is dominated by god nodes
- Steps:
query_graph(question="who sends the convocation emails?"), default depth 3. - Actual: BFS starts from 5 seeds and reaches 2,708 nodes. The output is TRUNCATED and mostly made of the highest-degree nodes (framework interfaces, core entities, enums). With
token_budget=8000it is still truncated (240 of 2,708). Withcontext_filter=['call']only 20 nodes remain, all unrelated test helpers. - Expected: rank results by relevance or distance to the seeds rather than degree, or damp hubs during traversal (similar to
exclude_hubs_percentileingod_nodes).
4. get_community returns no community label
get_community(3) returns "Community 3 (205 nodes)" with no name or summary. A generated label (e.g. dominant class or directory) would make the output usable.
5. list_prs reports "gh CLI not found" when the real issue is repo detection
- Steps:
list_prs()with norepoargument, the server started on agraph.jsonoutside any git repo. - Actual:
Error: gh CLI not found or not authenticated. Run: gh auth login. gh is installed and authenticated. Passingrepo=owner/namemakes it work.get_pr_impactwith the samerepoworks too. - Expected: an error such as "could not detect repository; pass
repo=".
6. Minor: get_neighbors truncation hides incoming edges
With the default budget, outgoing edges are listed first, so all incoming edges (callers) are cut off on high-degree nodes. Listing incoming edges first, or balancing both directions, would help.
- Dominant language
- Python
- Stars
- 124k
- Forks
- 11.9k
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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 Graphify-Labs/graphify
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Graphify-Labs/graphify#3763 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Graphify-Labs/graphify#3611 · 1 comment ·
Maintainers usually reply within 1 day
-
Nix supportOpen
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Graphify-Labs/graphify#3193 · 2 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Graphify-Labs/graphify#2871 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Graphify-Labs/graphify#2865 ·
Maintainers usually reply within 1 day
All issues in Graphify-Labs/graphify
Similar issues
-
Atomic append fails to create a missing filePossibly taken @harbinresearcher claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
fabiocaccamo/python-fsutil#201 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
task
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
danparshall/claude_researcher#87 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
GhostManager/Ghostwriter#998 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
datajoint/datajoint-python#1586 ·
Maintainers usually reply within 1 day