mcp-rag-server
kwanLeeFrmVi/mcp-rag-server · 36 stars · TypeScript · MIT
MCP server mcp-rag-server is a Model Context Protocol (MCP) server that enables Retrieval Augmented Generation (RAG) capabilities. It empowers Large Language Models (LLMs) to answer questions based on your document content by indexing and retrieving relevant information efficiently.
Install
The repo has no one-line install. Follow its README.
Files
mcp-rag-server
A Model Context Protocol (MCP) server that enables Retrieval Augmented Generation (RAG). It indexes your documents and serves relevant context to Large Language Models via the MCP protocol.
Integration Examples
Generic MCP Client Configuration
{
"mcpServers": {
"rag": {
"command": "npx",
"args": ["-y", "mcp-rag-server"],
"env": {
"BASE_LLM_API": "http://localhost:11434/v1",
"EMBEDDING_MODEL": "nomic-embed-text",
"VECTOR_STORE_PATH": "./vector_store",
"CHUNK_SIZE": "500"
}
}
}
}
Example Interaction
# Index documents
>> tool:embedding_documents {"path":"./docs"}
# Check status
>> resource:embedding-status
<< rag://embedding/status
Current Path: ./docs/file1.md
Completed: 10
Failed: 0
Total chunks: 15
Failed Reason:
Table of Contents
- Integration Examples
- Features
- Installation
- Quick Start
- Configuration
- Usage
- How RAG Works
- Development
- Contributing
- License
Features
- Index documents in
.txt,.md,.json,.jsonl, and.csvformats - Customizable chunk size for splitting text
- Local vector store powered by SQLite (via LangChain's LibSQLVectorStore)
- Supports multiple embedding providers (OpenAI, Ollama, Granite, Nomic)
- Exposes MCP tools and resources over stdio for seamless integration with MCP clients
Installation
From npm
npm install -g mcp-rag-server
From Source
git clone https://github.com/kwanLeeFrmVi/mcp-rag-server.git cd mcp-rag-server npm install npm run build npm start
Quick Start
export BASE_LLM_API=http://localhost:11434/v1 export EMBEDDING_MODEL=granite-embedding-278m-multilingual-Q6_K-1743674737397:latest export VECTOR_STORE_PATH=./vector_store export CHUNK_SIZE=500 # Run (global install) mcp-rag-server # Or via npx npx mcp-rag-server
💡 Tip: We recommend using Ollama for embedding. Install and pull the
nomic-embed-textmodel:
ollama pull nomic-embed-text export EMBEDDING_MODEL=nomic-embed-text
Configuration
| Variable | Description | Default |
|---|---|---|
BASE_LLM_API |
Base URL for embedding API | http://localhost:11434/v1 |
LLM_API_KEY |
API key for your LLM provider | (empty) |
EMBEDDING_MODEL |
Embedding model identifier | nomic-embed-text |
VECTOR_STORE_PATH |
Directory for local vector store | ./vector_store |
CHUNK_SIZE |
Characters per text chunk (number) | 500 |
💡 Recommendation: Use Ollama embedding models like
nomic-embed-textfor best performance.
Usage
MCP Tools
Once running, the server exposes these tools via MCP:
embedding_documents(path: string): Index documents under the given pathquery_documents(query: string, k?: number): Retrieve topkchunks (default 15)remove_document(path: string): Remove a specific documentremove_all_documents(confirm: boolean): Clear the entire index (confirm=true)list_documents(): List all indexed document paths
MCP Resources
Clients can also read resources via URIs:
rag://documents— List all document URIsrag://document/{path}— Fetch full content of a documentrag://query-document/{numberOfChunks}/{query}— Query documents as a resourcerag://embedding/status— Check current indexing status (completed, failed, total)
How RAG Works
- Indexing: Reads files, splits text into chunks based on
CHUNK_SIZE, and queues them for embedding. - Embedding: Processes each chunk sequentially against the embedding API, storing vectors in SQLite.
- Querying: Embeds the query and retrieves nearest text chunks from the vector store, returning them to the client.
Development
npm install npm run build # Compile TypeScript npm start # Run server npm run watch # Watch for changes
Contributing
Contributions are welcome! Please open issues or pull requests on GitHub.
License
MIT 2025 Quan Le
Facts
- Kind
- MCP server
- Group
- Uncategorized
- Stars
- 36
- License
- MIT
- Language
- TypeScript
- Last push
- 2025-04-18
- Forks
- 7
- Topics
- mcp-server, rag
- 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
- 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
- 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
- 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
- 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k