RAG索引远程管理工具

通过模型上下文协议(MCP)远程构建和查询检索增强生成(RAG)索引的工具,适用于AI代理、研究工具和知识管理系统。

  • by SylphxAI
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 sylphxltd/tools

使用说明

@sylphlab/tools rag mcp

通过模型上下文协议(MCP)远程构建和查询检索增强生成(RAG)索引。

此包提供了一个即用型MCP服务器,该服务器基于中定义的工具公开RAG功能(索引内容、查询索引、检查状态) @sylphlab/tools-rag.

目的

此服务器允许MCP客户端(如AI代理、研究工具或知识管理系统)远程管理和查询RAG工作流的向量索引。它充当一个安全接口,从 @sylphlab/tools-rag,使用 @sylphlab/tools-adaptor-mcp,并通过MCP标准(stdio)提供服务。这使客户端能够利用强大的RAG功能,而无需直接访问向量数据库、嵌入模型或复杂的解析逻辑。

特性

  • MCP服务器: 实现工具执行的模型上下文协议。
  • 显示RAG工具: 提供以下工具:
    • 索引内容(indexContentTool):在向量索引中加载、解析、分块、嵌入和存储文档。
    • 查询索引(queryIndexTool):根据查询检索相关文档块。
    • 检查索引状态(indexStatusTool):获取有关索引的元数据。
  • 配置: 可能使用环境变量(通过 dotenv)用于配置矢量数据库连接(ChromaDB、Pinecone)、嵌入模型端点/API密钥等。
  • 可执行文件: 提供二进制文件(mcp-rag-server)为了便于执行。
  • 安全: 在定义的工作目录中运行,并依赖于外部服务的配置凭据。

安装和配置

此包旨在用作独立服务器,需要通过环境变量进行配置。

1.配置:

创建一个 .env 您将运行服务器(或通过部署方法配置环境变量)的目录中的文件。基本变量可能包括:

# Example .env configuration

# Choose Vector DB: 'chromadb' or 'pinecone'
VECTOR_DB_PROVIDER=chromadb
# ChromaDB specific (if used)
CHROMA_DB_URL=http://localhost:8000

# Pinecone specific (if used)
# PINECONE_API_KEY=your_pinecone_api_key
# PINECONE_ENVIRONMENT=your_pinecone_environment

# Embedding Model Configuration
# Example using Ollama (via ollama-ai-provider in core)
EMBEDDING_PROVIDER=ollama
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
OLLAMA_BASE_URL=http://localhost:11434 # Optional, defaults locally

# Example using OpenAI (via 'ai' package in core)
# EMBEDDING_PROVIDER=openai
# OPENAI_API_KEY=your_openai_api_key
# OPENAI_EMBEDDING_MODEL=text-embedding-3-small

(请咨询 @sylphlab/tools-rag 基于您选择的向量数据库和嵌入提供程序的特定所需环境变量的文档。)

2.安装:

使用npm/pnpm/yarn(推荐)

全局安装或在项目中安装:

# Globally
npm install -g @sylphlab/tools-rag-mcp
# Or in a project
pnpm add @sylphlab/tools-rag-mcp

配置您的MCP主机(例如。, mcp_settings.json)运行服务器,确保它可以访问 .env 文件(通常通过设置 cwd):

// Using npx
{
  "mcpServers": {
    "rag-mcp": {
      "command": "npx",
      "args": ["@sylphlab/tools-rag-mcp"],
      "name": "RAG Tools (npx)",
      "cwd": "/path/containing/.env/and/data" // Set CWD
    }
  }
}

// Or using global install path
{
  "mcpServers": {
    "rag-mcp": {
      "command": "mcp-rag-server", // If in PATH
      "name": "RAG Tools (Global)",
      "cwd": "/path/containing/.env/and/data" // Set CWD
    }
  }
}

使用Docker(如果可用)

(需要Docker镜像 sylphlab/tools-rag-mcp:latest 待公布)

docker pull sylphlab/tools-rag-mcp:latest

配置您的MCP主机,挂载项目目录并可能传递环境文件:

{
  "mcpServers": {
    "rag-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i", "--rm",
        "--env-file", "/path/to/your/.env", // Pass environment variables
        "-v", "/path/to/your/project:/app", // Mount project data
        "-w", "/app", // Set working directory
        "sylphlab/tools-rag-mcp:latest"
      ],
      "name": "RAG Tools (Docker)"
    }
  }
}

本地建设(用于发展)

  1. 配置: 创建 .env 文件在 packages/tools-rag-mcp.
  2. 构建: 从monorepo根: pnpm build --filter @sylphlab/tools-rag-mcp
  3. 配置MCP主机:
    {
      "mcpServers": {
        "rag-mcp": {
          "command": "node",
          "args": ["./packages/tools-rag-mcp/dist/index.js"],
          "name": "RAG Tools (Local Build)",
          "cwd": "./packages/tools-rag-mcp" // Directory containing .env
        }
      }
    }
    

用法

一旦服务器以正确的配置运行并通过MCP连接,客户端就可以对内容进行索引并执行查询。

MCP请求示例(索引内容):

{
  "tool_name": "indexContentTool",
  "arguments": {
    "indexName": "project-docs-index",
    "contentPaths": ["./docs/**/*.md"], // Index markdown files
    // Config args might be optional if read fully from .env
    // "vectorDbConfig": { "provider": "chromadb", "url": "http://localhost:8000" },
    // "embeddingModelConfig": { "provider": "ollama", "model": "nomic-embed-text" }
  }
}

MCP请求示例(查询索引):

{
  "tool_name": "queryIndexTool",
  "arguments": {
    "indexName": "project-docs-index",
    "query": "How do I configure the RAG server?",
    "topK": 3
    // Config args might be optional
  }
}

预期响应片段(查询):

{
  "result": {
    "success": true,
    "results": [
      { "id": "...", "score": 0.85, "text": "..." },
      { "id": "...", "score": 0.82, "text": "..." },
      { "id": "...", "score": 0.79, "text": "..." }
    ]
  }
}

依赖项

  • @modelcontextprotocol/sdk:用于创建MCP服务器实例。
  • @sylphlab/tools-adaptor-mcp调整核心工具的定义。
  • @sylphlab/tools-rag:包含核心RAG逻辑(解析、分块、嵌入、向量存储交互)。
  • @sylphlab/tools-core:提供基础工具定义结构。
  • dotenv:用于从加载环境变量 .env 文件。

由Sylph Lab开发。