trackmcp
Back to directory
PrettyKing

chalee-mcp-rag

View on GitHub

A Model Context Protocol (MCP) server with RAG (Retrieval-Augmented Generation) capabilities for intelligent document processing and question answering

0 stars JavaScriptOthers Updated Jun 28, 2025

Documentation

Chalee MCP RAG 🤖

一个基于 Model Context Protocol (MCP)RAG(检索增强生成)服务器,提供文档处理、向量存储和智能问答功能。

✨ 特性

  • 🔧 标准化 MCP 协议:遵循 Anthropic MCP 标准,可与 Claude Desktop 等客户端集成
  • 📚 智能文档处理:自动分块、向量化存储
  • 🔍 语义检索:基于余弦相似度的相关文档检索
  • 💬 智能问答:结合检索上下文的准确回答生成
  • 🛡️ 安全可靠:内置错误处理和参数验证
  • 🚀 生产就绪:完整的配置和部署支持

🚀 快速开始

1. 克隆仓库

bash
git clone https://github.com/PrettyKing/chalee-mcp-rag.git
cd chalee-mcp-rag

2. 安装依赖

bash
npm install

3. 配置环境变量

bash
cp .env.example .env
# 编辑 .env 文件,设置你的 OpenAI API 密钥

4. 启动 MCP 服务器

bash
npm run mcp-server

5. 运行客户端演示

bash
# 在另一个终端
npm run mcp-client

🛠️ 可用工具

MCP RAG 服务器提供以下 6 个核心工具:

工具名称描述参数
`initialize_rag`初始化 RAG Agent`apiKey`, `config`
`add_document`添加文档到知识库`content`, `metadata`
`ask_question`智能问答`question`
`search_documents`文档相似性搜索`query`, `maxResults`
`get_knowledge_base_stats`获取知识库统计-
`clear_knowledge_base`清空知识库-

📁 项目结构

code
chalee-mcp-rag/
├── rag-agent.js           # RAG Agent 核心实现
├── mcp-rag-server.js      # MCP 服务器
├── mcp-client.js          # MCP 客户端示例
├── test.js                # RAG Agent 测试
├── package.json           # 项目配置
├── .env.example           # 环境变量示例
└── README.md              # 说明文档

🌐 与 Claude Desktop 集成

要在 Claude Desktop 中使用此 MCP 服务器,请在 Claude 配置文件中添加:

macOS

编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`:

json
{
  "mcpServers": {
    "chalee-rag-server": {
      "command": "node",
      "args": ["/path/to/your/chalee-mcp-rag/mcp-rag-server.js"],
      "env": {
        "OPENAI_API_KEY": "your_openai_api_key_here"
      }
    }
  }
}

Windows

编辑 `%APPDATA%\\Claude\\claude_desktop_config.json`:

json
{
  "mcpServers": {
    "chalee-rag-server": {
      "command": "node",
      "args": ["C:\\path\\to\\your\\chalee-mcp-rag\\mcp-rag-server.js"],
      "env": {
        "OPENAI_API_KEY": "your_openai_api_key_here"
      }
    }
  }
}

📖 使用示例

基本用法

javascript
const MCPRAGClient = require('./mcp-client');

async function example() {
  const client = new MCPRAGClient();
  
  // 连接服务器
  await client.connect();
  
  // 初始化 RAG
  await client.initializeRAG('your-openai-api-key');
  
  // 添加文档
  await client.addDocument('这是一个示例文档...', {
    category: '示例',
    source: 'demo'
  });
  
  // 提问
  const answer = await client.askQuestion('这个文档讲了什么?');
  console.log(answer.answer);
  
  // 断开连接
  await client.disconnect();
}

高级配置

javascript
// 自定义 RAG 配置
await client.initializeRAG('your-api-key', {
  chunkSize: 800,        // 文档分块大小
  chunkOverlap: 100,     // 分块重叠大小
  maxRetrievedDocs: 5    // 最大检索文档数
});

🔧 配置选项

环境变量

变量名描述默认值
`OPENAI_API_KEY`OpenAI API 密钥必需
`CHUNK_SIZE`文档分块大小1000
`CHUNK_OVERLAP`分块重叠大小200
`MAX_RETRIEVED_DOCS`最大检索文档数3
`MODEL_NAME`GPT 模型名称gpt-3.5-turbo
`EMBEDDING_MODEL`嵌入模型名称text-embedding-ada-002

🧪 测试

bash
# 运行 RAG Agent 测试
npm test

# 运行 MCP 客户端演示
npm run mcp-client

🚀 部署

Docker 部署

dockerfile
FROM node:16-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000
CMD ["npm", "run", "mcp-server"]

进程管理

bash
# 使用 PM2 管理进程
npm install -g pm2
pm2 start mcp-rag-server.js --name "mcp-rag-server"
pm2 monitor

🔍 故障排除

常见问题

1. 连接失败

    2. 工具调用失败

      3. 性能问题

        调试模式

        bash
        # 启用详细日志
        DEBUG=mcp:* npm run mcp-server

        🌟 扩展功能

        支持更多文档格式

        javascript
        // PDF 支持
        const pdfParse = require('pdf-parse');
        
        async function loadPDF(filePath) {
          const dataBuffer = fs.readFileSync(filePath);
          const data = await pdfParse(dataBuffer);
          return await agent.addDocument(data.text, { type: 'pdf', source: filePath });
        }

        持久化存储

        javascript
        // 使用 Pinecone 向量数据库
        const { PineconeStore } = require('langchain/vectorstores/pinecone');
        
        class PersistentRAGAgent extends RAGAgent {
          async initializePinecone() {
            this.vectorStore = await PineconeStore.fromExistingIndex(
              new OpenAIEmbeddings(),
              { pineconeIndex: this.index }
            );
          }
        }

        📚 API 文档

        initialize_rag

        初始化 RAG Agent 实例。

        typescript
        interface InitializeRAGParams {
          apiKey: string;
          config?: {
            chunkSize?: number;
            chunkOverlap?: number;
            maxRetrievedDocs?: number;
          };
        }

        add_document

        向知识库添加文档。

        typescript
        interface AddDocumentParams {
          content: string;
          metadata?: Record;
        }

        ask_question

        使用 RAG 技术回答问题。

        typescript
        interface AskQuestionParams {
          question: string;
        }
        
        interface AskQuestionResponse {
          question: string;
          answer: string;
          sources?: Array;
          }>;
          timestamp: string;
        }

        🤝 贡献

        欢迎提交 Issue 和 Pull Request!

        1. Fork 项目

        2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)

        3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)

        4. 推送到分支 (`git push origin feature/AmazingFeature`)

        5. 打开 Pull Request

        📄 许可证

        MIT License - 详见 LICENSE 文件

        🙏 致谢

        📞 支持


        ⭐ 如果这个项目对你有帮助,请给它一个星标!

        Frequently asked questions

        What is chalee-mcp-rag?

        chalee-mcp-rag is A Model Context Protocol (MCP) server with RAG (Retrieval-Augmented Generation) capabilities for intelligent document processing and question answering

        How do I install chalee-mcp-rag?

        Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

        Is chalee-mcp-rag open source?

        Yes — it is hosted on GitHub at https://github.com/PrettyKing/chalee-mcp-rag.

        Related MCP tools

        Run your own MCP server? See who uses it and what to fix.

        Measure it with TrackMCP