返回市场
MCP远程访问服务器

MCP远程访问服务器

作者:kwanLeeFrmVi9 星标更新:2025-04-19

项目介绍

mcp-rag-server

npm 版本 许可证 Node.js 版本

这是一个模型上下文协议(MCP)服务器,支持检索增强生成(RAG)。它索引您的文档并通过MCP协议向大型语言模型提供相关上下文。

集成示例

通用MCP客户端配置

{
  "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"
      }
    }
  }
}

示例交互

# 索引文档
>> tool:embedding_documents {"path":"./docs"}

# 检查状态
>> resource:embedding-status

<< rag://embedding/status
当前路径: ./docs/file1.md
已完成: 10
失败: 
总块数: 15
失败原因:

目录

特性

  • 支持索引.txt.md.json.jsonl.csv格式的文档
  • 可自定义文本分块大小
  • 使用SQLite驱动本地向量存储(通过LangChain的LibSQLVectorStore)
  • 支持多个嵌入提供商(OpenAI、Ollama、Granite、Nomic)
  • 通过标准I/O暴露MCP工具和资源,实现与MCP客户端的无缝集成

安装

从npm

npm install -g mcp-rag-server

从源码

git clone https://github.com/kwanLeeFrmVi/mcp-rag-server.git
cd mcp-rag-server
npm install
npm run build
npm 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

# 运行(全局安装)
mcp-rag-server

# 或通过npx
npx mcp-rag-server

💡 提示: 我们推荐使用 Ollama 进行嵌入。安装并拉取 nomic-embed-text 模型:

ollama pull nomic-embed-text
export EMBEDDING_MODEL=nomic-embed-text

配置

变量描述默认值
BASE_LLM_API嵌入API的基础URLhttp://localhost:11434/v1
LLM_API_KEY您的LLM提供商的API密钥(空)
EMBEDDING_MODEL嵌入模型标识符nomic-embed-text
VECTOR_STORE_PATH本地向量存储目录./vector_store
CHUNK_SIZE文本块中的字符数(数字)500

💡 建议: 使用如 nomic-embed-text 的Ollama嵌入模型以获得最佳性能。

使用

MCP工具

运行后,服务器通过MCP暴露以下工具:

  • embedding_documents(path: string): 在给定路径下索引文档
  • query_documents(query: string, k?: number): 检索前 k 个块(默认15)
  • remove_document(path: string): 移除特定文档
  • remove_all_documents(confirm: boolean): 清空整个索引(confirm=true
  • list_documents(): 列出所有已索引文档路径

MCP资源

客户端还可以通过URI读取资源:

  • rag://documents — 列出所有文档URI
  • rag://document/{path} — 获取文档全文内容
  • rag://query-document/{numberOfChunks}/{query} — 查询文档作为资源
  • rag://embedding/status — 检查当前索引状态(已完成、失败、总数)

RAG如何工作

  1. 索引: 读取文件,根据 CHUNK_SIZE 将文本分割成块,并排队进行嵌入。
  2. 嵌入: 对每个块依次处理嵌入API,将向量存储在SQLite中。
  3. 查询: 嵌入查询并从向量存储中检索最近的文本块,返回给客户端。

开发

npm install
npm run build      # 编译TypeScript
npm start          # 运行服务器
npm run watch      # 监控更改

贡献

欢迎贡献!请在 GitHub 上打开问题或拉请求。

许可证

MIT 2025 Quan Le