A Retrieval-Augmented Generation (RAG) server for document processing, vector storage, and intelligent Q&A, powered by the Model Context Protocol.
一个基于 Model Context Protocol (MCP) 的 **RAG(检索增强生成)**服务器,提供文档处理、向量存储和智能问答功能。
git clone https://github.com/PrettyKing/chalee-mcp-rag.git
cd chalee-mcp-rag
npm install
cp .env.example .env
# 编辑 .env 文件,设置你的 OpenAI API 密钥
npm run mcp-server
# 在另一个终端
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 | 清空知识库 | - |
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 中使用此 MCP 服务器,请在 Claude 配置文件中添加:
编辑 ~/Library/Application Support/Claude/claude_desktop_config.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"
}
}
}
}
编辑 %APPDATA%\\Claude\\claude_desktop_config.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"
}
}
}
}
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();
}
// 自定义 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 |
# 运行 RAG Agent 测试
npm test
# 运行 MCP 客户端演示
npm run mcp-client
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "mcp-server"]
# 使用 PM2 管理进程
npm install -g pm2
pm2 start mcp-rag-server.js --name "mcp-rag-server"
pm2 monitor
连接失败
工具调用失败
initialize_rag
性能问题
chunkSize
或 maxRetrievedDocs
# 启用详细日志
DEBUG=mcp:* npm run mcp-server
// 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 });
}
// 使用 Pinecone 向量数据库
const { PineconeStore } = require('langchain/vectorstores/pinecone');
class PersistentRAGAgent extends RAGAgent {
async initializePinecone() {
this.vectorStore = await PineconeStore.fromExistingIndex(
new OpenAIEmbeddings(),
{ pineconeIndex: this.index }
);
}
}
初始化 RAG Agent 实例。
interface InitializeRAGParams {
apiKey: string;
config?: {
chunkSize?: number;
chunkOverlap?: number;
maxRetrievedDocs?: number;
};
}
向知识库添加文档。
interface AddDocumentParams {
content: string;
metadata?: Record<string, any>;
}
使用 RAG 技术回答问题。
interface AskQuestionParams {
question: string;
}
interface AskQuestionResponse {
question: string;
answer: string;
sources?: Array<{
content: string;
similarity: number;
metadata: Record<string, any>;
}>;
timestamp: string;
}
欢迎提交 Issue 和 Pull Request!
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)MIT License - 详见 LICENSE 文件
⭐ 如果这个项目对你有帮助,请给它一个星标!
Provides Typst documentation to MCP clients like Claude Code.
Refactor code using regex-based search and replace.
Retrieves essential network information from devices using gNMI and OpenConfig models.
Analyze images using OpenRouter's vision models. Requires an OpenRouter API key.
Aggregates multiple MCP resource servers into a single interface with stdio/sse support.
A secure MCP server for executing terminal commands with controlled directory access and command permissions.
A structured development workflow for LLM-based coding, including feature clarification, planning, phased development, and progress tracking.
Navigate and explore the Model Context Protocol specification with dynamic markdown tree generation and intelligent section navigation.
Advanced computer vision and object detection MCP server powered by Dino-X, enabling AI agents to analyze images, detect objects, identify keypoints, and perform visual understanding tasks.
Provides real-time access to Chainlink's decentralized on-chain price feeds.