Token导航 LogoToken导航TokenDH.com
Personal RAG MCP Server logo
文档知识stdio官方级别未说明来源级核验

Personal RAG MCP Server

MCP Server

一个提供个人知识库与检索增强生成(RAG)功能的模型上下文协议(MCP)服务器,支持跨平台共享上下文。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
知识管理PythonClaude检索增强生成Claude DesktopClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

timerickson

提供方

timerickson

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

个人RAG MCP服务器

一种模型上下文协议(MCP)服务器,提供具有RAG(检索增强生成)功能的个人知识库。在Claude Desktop、Claude Code、VS Code和Open WebUI之间共享上下文。

特性

  • 混合存储:SQLite用于全文文档+Qdrant用于语义搜索
  • 元数据:全面的元数据捕获,以实现未来的可扩展性
  • 双重运输:stdio(用于克劳德桌面/VS代码)+HTTP流媒体(用于开放WebUI)
  • 向前兼容:策略模式允许在不重构的情况下添加高级RAG功能
  • 容器化:在Docker中运行,连接到现有的Qdrant/Ollama/LiteLLM基础设施

建筑

User Input → MCP Tool
    ↓
[1] Generate embedding (Ollama)
    ↓
[2] Store full text + metadata in SQLite
    ↓
[3] Store vector in Qdrant
    ↓
Return confirmation

Search Query
    ↓
[1] Embed query (Ollama)
    ↓
[2] Search Qdrant (semantic search)
    ↓
[3] Retrieve full text from SQLite
    ↓
[4] Generate response (LiteLLM)
    ↓
Return answer + sources

MCP工具

1. store_memory

将笔记、文档或片段存储在知识库中。

store_memory(
    text="Your content here",
    namespace="notes/personal",  # Hierarchical organization
    tags=["tag1", "tag2"],
    title="Optional Title",
    category="personal",  # work, personal, family
    content_type="note"  # note, document, snippet
)

2. search_memory

在您的知识库中进行语义搜索。

search_memory(
    query="What did I learn about X?",
    namespace="notes/personal",  # Optional filter
    limit=5,
    content_type="note"  # Optional filter
)

3. ask_with_context

向RAG(检索+生成)提问。

ask_with_context(
    question="What are my thoughts on X?",
    namespace="notes/personal",  # Optional filter
    limit=5  # Context chunks to retrieve
)

项目结构

personal-rag-mcp/
├── Dockerfile
├── requirements.txt
├── README.md
├── config/
│   ├── pipeline.yaml          # RAG pipeline config
│   └── server.yaml            # Server config
├── personal_rag_mcp/
│   ├── server.py              # MCP server entry point
│   ├── storage/
│   │   ├── sqlite_store.py    # SQLite document storage
│   │   ├── qdrant_store.py    # Qdrant vector storage
│   │   └── schema.py          # Pydantic metadata models
│   ├── pipeline/
│   │   ├── retriever.py       # Retrieval strategies
│   │   ├── reranker.py        # Reranking strategies
│   │   ├── expander.py        # Query expansion
│   │   ├── generator.py       # LLM generation
│   │   └── pipeline.py        # RAG orchestration
│   └── utils/
│       ├── embeddings.py      # Ollama embedding client
│       └── chunking.py        # Text chunking
├── scripts/
│   ├── init_db.py             # Initialize database
│   └── backup.py              # Backup utility
└── tests/

环境变量

# Transport
TRANSPORT=http  # or stdio
PORT=8765

# Storage
SQLITE_PATH=/app/data/documents.db
QDRANT_URL=http://qdrant:6333

# AI Services
OLLAMA_URL=http://ollama:11434
LITELLM_URL=http://litellm:4000

发展

设置

# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows

# Install dependencies
pip install -r requirements.txt

本地运行(stdio)

export SQLITE_PATH=./data/documents.db
export QDRANT_URL=http://localhost:6333
export OLLAMA_URL=http://localhost:11434
export LITELLM_URL=http://localhost:4000

python -m personal_rag_mcp.server

本地运行(HTTP)

export TRANSPORT=http
export PORT=8765

python -m personal_rag_mcp.server

Docker部署

先决条件

此MCP服务器依赖于以下AI基础设施服务:

  • Qdrant (矢量数据库)-端口6333
  • 奥拉玛 (嵌入)-端口11434
  • 文学硕士 (LLM代理)-端口4000/8000

Docker Compose集成示例

services:
  # Required: Qdrant vector database
  qdrant:
    image: qdrant/qdrant:latest
    container_name: qdrant
    ports:
      - "6333:6333"
    volumes:
      - qdrant-data:/qdrant/storage
    restart: unless-stopped

  # Required: Ollama for embeddings
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama-data:/root/.ollama
    restart: unless-stopped

  # Required: LiteLLM proxy for LLM access
  litellm-proxy:
    image: ghcr.io/berriai/litellm:main-latest
    container_name: litellm-proxy
    ports:
      - "4080:8000"
    volumes:
      - ./litellm_config.yaml:/app/config.yaml
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_REGION=${AWS_REGION}
      - OLLAMA_API_BASE=http://ollama:11434
    entrypoint: ["litellm", "--config", "/app/config.yaml", "--port", "8000"]
    depends_on:
      - ollama
    restart: unless-stopped

  # Personal RAG MCP Server
  personal-rag-mcp:
    build: ./personal-rag-mcp
    container_name: personal-rag-mcp
    ports:
      - "8765:8765"
    environment:
      - TRANSPORT=http
      - PORT=8765
      - QDRANT_URL=http://qdrant:6333
      - OLLAMA_URL=http://ollama:11434
      - LITELLM_URL=http://litellm-proxy:8000
      - OPENAI_API_KEY=${LITELLM_API_KEY}  # LiteLLM auth
      - SQLITE_PATH=/app/data/documents.db
    volumes:
      - personal-rag-data:/app/data
      - ./config/personal-rag:/app/config:ro
    depends_on:
      - qdrant
      - ollama
      - litellm-proxy
    restart: unless-stopped

volumes:
  qdrant-data:
  ollama-data:
  personal-rag-data:

LiteLLM配置示例

MCP服务器使用 文学硕士 作为统一的代理,这意味着您可以使用任何LLM提供程序:

  • 本地:Ollama(Callama3、DeepSeek、Qwen等)
  • :OpenAI、拟人克劳德、谷歌双子座、科赫尔
  • AWS基岩:克劳德、火焰、米斯特拉尔等。
  • Azure OpenAI:GPT-4、GPT-3.5
  • 100+其他供应商:参见 LiteLLM文档

只需在中配置您的首选型号 litellm_config.yaml:

model_list:
  # Local Ollama models (no API key needed)
  - model_name: deepseek-r1-1.5b
    litellm_params:
      model: ollama/deepseek-r1:1.5b
      api_base: http://ollama:11434

  # AWS Bedrock models
  - model_name: bedrock-claude-3-5-sonnet-v2
    litellm_params:
      model: bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0
      aws_access_key_id: os.environ/AWS_ACCESS_KEY_ID
      aws_secret_access_key: os.environ/AWS_SECRET_ACCESS_KEY
      aws_region_name: us-east-2

  # OpenAI models
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY

  # Anthropic Claude
  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  # Embedding model (for semantic search)
  - model_name: nomic-embed-text
    litellm_params:
      model: ollama/nomic-embed-text
      api_base: http://ollama:11434

general_settings:
  master_key: sk-1234  # Set LITELLM_API_KEY in .env

服务器默认使用LiteLLM中配置的任何模型。您可以在本地和云模型之间轻松切换,而无需更改MCP服务器代码。

环境文件(.env)

# LiteLLM API Key
LITELLM_API_KEY=sk-1234

# AWS Credentials (optional, for Bedrock models)
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_REGION=us-east-2

首次设置

  1. 拉取所需的Olama型号:
   docker exec ollama ollama pull nomic-embed-text
   docker exec ollama ollama pull deepseek-r1:1.5b
  1. 验证服务是否正在运行:
   curl http://localhost:6333/collections  # Qdrant
   curl http://localhost:11434/api/tags     # Ollama
   curl -H "Authorization: Bearer sk-1234" http://localhost:4080/v1/models  # LiteLLM
  1. 测试MCP服务器:
   docker exec personal-rag-mcp python /app/scripts/test_e2e.py

有关完整的基础架构设置,请参阅父存储库。

路线图

第1阶段(当前)

  • ✅ 混合SQLite+Qdrant存储
  • ✅ 基本RAG管道(矢量检索)
  • ✅ MCP工具(存储、搜索、询问)
  • ✅ 双传输(标准输入+HTTP)

第二阶段(未来)

  • \[\]高级RAG功能(重新排序、混合搜索、查询扩展)
  • \[\]批量文档摄取(PDF、DOCX解析)
  • \[\]对话历史记录捕获
  • \[\]支持多用户身份验证

许可证

麻省理工学院

目录标签

目录标签

知识管理PythonClaude检索增强生成本地部署语义搜索个人知识库向量数据库

支持客户端

Claude DesktopClaudeVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-keyremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP