{"data":{"slug":"shinpr-mcp-local-rag","name":"mcp-local-rag","tagline":"Local-first RAG server for developers with semantic and keyword search capabilities.","github_url":"https://github.com/shinpr/mcp-local-rag","owner":"shinpr","repo":"mcp-local-rag","owner_avatar_url":"https://avatars.githubusercontent.com/u/52246947?v=4","primary_language":"TypeScript","stars":370,"forks":68,"topics":["agent-skills","cli-tool","developer-tools","hybrid-search","local-first","local-rag","mcp","mcp-server","model-context-protocol","privacy-first","rag","semantic-search","vector-search"],"archived":false,"github_pushed_at":"2026-08-23T04:26:06+00:00","maintenance_label":"Very active","stars_delta_30d":18,"url":"https://www.graphcanon.com/tools/shinpr-mcp-local-rag","markdown_url":"https://www.graphcanon.com/tools/shinpr-mcp-local-rag.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/shinpr-mcp-local-rag","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=shinpr-mcp-local-rag","description":"Local-first RAG server for developers. Semantic + keyword search for code and technical docs. Works with MCP or CLI. Fully private, zero setup.","homepage_url":null,"license":"MIT","open_issues":2,"watchers":3,"ai_summary":"Provides a privacy-focused, easy-to-setup environment for semantic and keyword-based searches within codebases and technical documents. Supports integration through MCP or CLI.","readme_excerpt":"### Requirements\n\n- Node.js 22 or later\n- Internet access on first use to download the npm package and embedding model\n- A directory containing the documents you want to search\n\nSet `BASE_DIR` to that directory. It is also the security boundary for file operations. Replace\n`/absolute/path/to/your/documents` below with the directory's absolute path.\n\nmcp-local-rag uses the standard MCP protocol over a local stdio server, so it works with AI\ncoding tools and other MCP hosts that support local MCP servers.\n\nUse one of the examples below, or register `npx -y mcp-local-rag` and set `BASE_DIR` using your\nclient's MCP configuration format.\n\n**For Claude Code:** Run this command:\n\n```bash\nclaude mcp add local-rag --scope user --env BASE_DIR=/absolute/path/to/your/documents -- npx -y mcp-local-rag\n```\n\n**For Codex:** Add to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.local-rag]\ncommand = \"npx\"\nargs = [\"-y\", \"mcp-local-rag\"]\n\n[mcp_servers.local-rag.env]\nBASE_DIR = \"/absolute/path/to/your/documents\"\n```\n\n**For OpenCode:** Add to `~/.config/opencode/opencode.json` (or `opencode.jsonc`):\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"local-rag\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"mcp-local-rag\"],\n      \"environment\": {\n        \"BASE_DIR\": \"/absolute/path/to/your/documents\"\n      }\n    }\n  }\n}\n```\n\n**For Cursor:** Add to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"local-rag\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-local-rag\"],\n      \"env\": {\n        \"BASE_DIR\": \"/absolute/path/to/your/documents\"\n      }\n    }\n  }\n}\n```\n\nRestart the client, then ask it to build the index:\n\n```text\nSync all documents in the configured root and wait until it finishes.\n```\n\nThe first sync downloads the default embedding model (about 90 MB) and may take 1–2 minutes\nbefore ingestion starts. Later runs use the local cache.\n\nOnce the sync completes:\n\n```text\nWhat does the API documentation say about authentication?\n```\n\n---\n\n### CLI Quick Start\n\nTo use the CLI without an MCP client:\n\n```bash\nnpx mcp-local-rag ingest ./docs/\nnpx mcp-local-rag query \"authentication API\"\n```\n\nThe CLI uses the current directory as its document root by default. Run both commands from the\nsame directory so they use the same default index, or set `BASE_DIR` and `DB_PATH` explicitly.\n\n---\n\n## License\n\nMIT License. Free for personal and commercial use.","github_created_at":"2025-10-31T11:44:14+00:00","created_at":"2026-07-11T11:36:13.440911+00:00","updated_at":"2026-08-23T12:02:01.773336+00:00","categories":[{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"agent-skills","name":"agent-skills"},{"slug":"hybrid-search","name":"hybrid-search"},{"slug":"local-first","name":"local-first"},{"slug":"privacy-first","name":"privacy-first"},{"slug":"semantic-search","name":"semantic-search"},{"slug":"vector-search","name":"vector-search"}],"trust":{"provenance":{"is_fork":false,"github_id":1087106485,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-23T12:02:00.717Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":13,"days_since_push":0,"last_release_at":"2026-08-23T04:26:06Z","stars_delta_30d":18,"open_issues_delta_30d":-2},"security_summary":{"status":"ok","scanner":"osv@v1","low_count":0,"high_count":0,"last_scan_at":"2026-08-09T04:00:47.196Z","medium_count":0,"scan_profile":"deps","critical_count":0}},"capability_facts":{"mcp":{"source":"package.json:@modelcontextprotocol/*","observed_at":"2026-08-23T12:02:01.214Z","server_manifest":true},"scan":{"source":"repo_scan","observed_at":"2026-08-23T12:02:01.214Z"},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-08-23T12:02:01.214Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-08-23T12:02:01.214Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-08-23T12:02:01.214Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["When you need to perform both semantic and keyword-based search operations within a local, privacy-focused environment tailored specifically for handling codebases and technical documentation.","If your project requires minimal setup yet offers robust search capabilities using the MCP or CLI methods of interaction with RAG services."],"when_not_to_use":["When you do not require a privacy-first approach and are willing to rely on cloud-based solutions that might offer more extensive feature sets beyond just keyword and semantic searches.","If your use case involves scaling search capabilities across multiple remote databases or servers, as mcp-local-rag is best suited for local data only."],"source":"enrich:decision_facts","observed_at":"2026-07-17T03:13:28.266Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"mcp-local-rag is designed for developers who prioritize privacy and ease of setup when performing semantic and keyword searches on local codebases and technical documents through MCP or CLI integration."}]}}