graph-query-mcp
Provides tools for querying an Obsidian vault knowledge graph, including search nodes, get neighbors, find paths, and subgraph queries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@graph-query-mcpfind the shortest path between 'attention' and 'transformer'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
graph-query-mcp
Surgical queries against an Obsidian / vault knowledge graph. Loads a graph.json (NetworkX node-link format) once at startup and answers targeted questions without making Claude read a 50K-line graph report.
Designed to pair with graphify (the graph-building skill in ai-brain-starter), but the server accepts any graph in NetworkX node-link JSON. Supports up to two scopes (primary + secondary, e.g. personal + team).
Why use this
If you've already run graphify on a vault, you've got a graph.json and a GRAPH_REPORT.md. Reading the full report into Claude burns thousands of tokens for every question. This MCP loads the graph once at startup, answers in <50ms, and never spills the whole graph into context.
Related MCP server: vault-graph-mcp
Tools
Tool | What it does |
| Fuzzy match against node names. Returns node IDs ranked by exact / starts-with / contains. |
| Connected nodes within N hops, sorted by degree. |
| Shortest path between two concepts. Auto-fuzzy-matches both ends. |
| Highest-degree nodes (the "god nodes"). |
| Subgraph around a list of concepts; reports node + edge counts. |
| Full metadata + top neighbors for one node. |
| All nodes in the same community-detection cluster. |
Scope defaults to personal; pass scope="onde" (or whatever secondary scope name you've configured) for the second graph.
Configuration
Two env vars, both optional:
Env var | Default | Use for |
|
| Primary graph (the |
|
| Secondary graph (the |
ONDE_GRAPH_JSON_PATH is also accepted as a backward-compat alias for SECONDARY_GRAPH_JSON_PATH.
If a path doesn't exist at startup, the server logs a warning and the tools return a friendly error when that scope is queried. The server still starts — a missing secondary graph never blocks the primary.
Install
Open Claude Code, paste:
/plugin marketplace add adelaidasofia/graph-query-mcp
/plugin install graph-query-mcp@graph-query-mcpgit clone https://github.com/adelaidasofia/graph-query-mcp.git ~/.claude/graph-query-mcp
cd ~/.claude/graph-query-mcp
pip3 install --break-system-packages -r requirements.txtRegister in your project .mcp.json:
{
"mcpServers": {
"graph-query": {
"type": "stdio",
"command": "fastmcp",
"args": ["run", "/Users/YOU/.claude/graph-query-mcp/server.py"],
"env": {
"GRAPH_JSON_PATH": "/path/to/your/vault/Meta/graphify-out/graph.json"
}
}
}
}Restart Claude Code, then claude mcp list should show graph-query connected.
Generating the graph
This MCP doesn't build the graph; it queries one. Use graphify (a skill in ai-brain-starter) to produce a graph.json from your vault, or any other NetworkX-compatible builder. The expected format is the output of networkx.node_link_data(G).
Verification
python3 tests/integration/test_smoke.py
# expected: PASSED — graph-query-mcp smoke (4 steps green)Architecture
FastMCP, stdio transport, Python 3.10+. Graphs are loaded once at startup and cached in memory. No daemons, no listeners, no external services. NetworkX in-memory for query primitives.
Related MCPs
Same author, same architecture pattern (FastMCP, draft+confirm on writes where applicable, vault auto-export, MIT):
slack-mcp — multi-workspace Slack
imessage-mcp — macOS iMessage
whatsapp-mcp — WhatsApp via whatsmeow
apollo-mcp — Apollo.io CRM + sequences
google-workspace-mcp — Gmail / Calendar / Drive / Docs / Sheets
substack-mcp — Substack writing + analytics
parse-mcp — markitdown / Docling / LlamaParse router
luma-mcp — lu.ma events
graph-autotagger-mcp — wikilink suggestions from the same graph format
Telemetry
This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.
What is sent:
Plugin name (e.g.
slack-mcp)Plugin version (e.g.
0.1.0)
What is NOT sent:
No user identifiers, names, emails, tokens, or API keys
No file paths, message content, or anything from your work
No IP address is stored after dedup processing
Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.
Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search, read, and safely update Markdown notes in your connected Phasoric knowledge vaults.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to find semantic connections and perform text searches in Obsidian vaults using the Smart Connections plugin data.56 npm14MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to navigate, search, and rank notes in an Obsidian vault using graph relationships, providing context-aware access to knowledge without exposing raw file contents.MIT
- AlicenseNot gradedqualityCmaintenanceProvides retrieval and graph tools for agents to search, backlink, and navigate a markdown-based knowledge vault, enabling hybrid search and serendipitous discovery.MIT
- AlicenseAqualityAmaintenanceEnables Claude clients to interact with an Obsidian vault as a knowledge graph, supporting full-text search, backlink traversal, neighborhood exploration, and note creation/append.4182 npm15MIT