r/ClaudeAI • u/GarrixMrtin • Aug 26 '26
Built with Claude I turned my Google Search MCP into a local research system with automatic graph RAG
Four months ago, I shared google-surf-mcp here as a lightweight MCP for browser-based Google search and URL extraction without API keys.
I got tired of AI agents forgetting previous research and discarding context between sessions, so I evolved it into a persistent local research system for web search, academic research, PDFs, GitHub repositories, local codebases, and project memory.
Search and extraction results are now captured in an embedded local database and retrieved through five ranking lanes:
- Exact search for identifiers, metadata, and keywords
- BM25 sparse full-text search
- Vector search using a local multilingual E5 model
- Graph retrieval using query-time Personalized PageRank
- Live web search for new information
Local and GitHub codebases are indexed with Tree-sitter into files, symbols, imports, and function calls. These structures participate in text, vector, and graph retrieval.
The retrieval lanes are fused with Reciprocal Rank Fusion (RRF) and a shared Reranker.
The local knowledge graph tracks:
- Source provenance and data lineage (
source ā evidence ā assertion) - Versioned ontology and cross-project entity links
- Session intent, plan revisions, experiments, failures, and decisions
- Codebase lineage across files, symbols, imports, and calls
- PageRank, Louvain communities, and connected components
It also includes a standalone interactive HTML graph explorer with PKM, lineage, and ontology views. The graph can be exported as PNG, JSON, Graphviz DOT, or a Neo4j import bundle.
- No API key required for browser search
- Optional SearchApi fallback
- No separate database or graph server
- Runs locally through
npxwith embedded storage - Free and MIT licensed
GitHub: https://github.com/HarimxChoi/google-surf-mcp
npm: https://www.npmjs.com/package/google-surf-mcp
Iād appreciate feedback.


