这是一个可以被各种AI助手(如CLINE, Cursor, Windsurf, Claude Desktop)共同使用的知识库MCP服务器。 通过利用检索增强生成(RAG),实现高效的信息检索和利用。 通过在多个AI助手工具之间共享知识库,提供一致的信息访问。
git clone https://github.com/yourusername/shared-knowledge-mcp.git
cd shared-knowledge-mcp
npm install
MCP服务器的配置需要添加到各个AI助手的配置文件中。
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:
{
"mcpServers": {
"shared-knowledge-base": {
"command": "node",
"args": ["/path/to/shared-knowledge-mcp/dist/index.js"],
"env": {
"KNOWLEDGE_BASE_PATH": "/path/to/your/rules",
"OPENAI_API_KEY": "your-openai-api-key",
"SIMILARITY_THRESHOLD": "0.7",
"CHUNK_SIZE": "1000",
"CHUNK_OVERLAP": "200",
"VECTOR_STORE_TYPE": "hnswlib"
}
}
}
}
{
"mcpServers": {
"shared-knowledge-base": {
"command": "node",
"args": ["/path/to/shared-knowledge-mcp/dist/index.js"],
"env": {
"KNOWLEDGE_BASE_PATH": "/path/to/your/rules",
"OPENAI_API_KEY": "your-openai-api-key",
"VECTOR_STORE_TYPE": "pinecone",
"VECTOR_STORE_CONFIG": "{\"apiKey\":\"your-pinecone-api-key\",\"environment\":\"your-environment\",\"index\":\"your-index-name\"}"
}
}
}
}
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"shared-knowledge-base": {
"command": "node",
"args": ["/path/to/shared-knowledge-mcp/dist/index.js"],
"env": {
"KNOWLEDGE_BASE_PATH": "/path/to/your/docs",
"OPENAI_API_KEY": "your-openai-api-key",
"SIMILARITY_THRESHOLD": "0.7",
"CHUNK_SIZE": "1000",
_ "CHUNK_OVERLAP": "200",
"VECTOR_STORE_TYPE": "hnswlib",
"VECTOR_STORE_CONFIG": "{}"
},
"disabled": false,
"autoApprove": []
}
}
}
{
"mcpServers": {
"shared-knowledge-base": {
"command": "node",
"args": ["/path/to/shared-knowledge-mcp/dist/index.js"],
"env": {
"KNOWLEDGE_BASE_PATH": "/path/to/your/docs",
"OPENAI_API_KEY": "your-openai-api-key",
"SIMILARITY_THRESHOLD": "0.7",
"CHUNK_SIZE": "1000",
"CHUNK_OVERLAP": "200",
"VECTOR_STORE_TYPE": "weaviate",
"VECTOR_STORE_CONFIG": "{\"url\":\"http://localhost:8080\",\"className\":\"Document\",\"textKey\":\"content\"}"
},
"disabled": false,
"autoApprove": []
}
}
}
注意: 如果使用Weaviate,需要提前启动Weaviate服务器。可以通过以下命令启动:
./start-weaviate.sh
npm run dev
npm run build
npm start
从知识库中搜索信息。
interface SearchRequest {
// 搜索查询(必需)
query: string;
// 返回结果的最大数量(默认: 5)
limit?: number;
// 搜索上下文(可选)
context?: string;
// 过滤选项(可选)
filter?: {
// 根据文档类型过滤(例如: ["markdown", "code"])
documentTypes?: string[];
// 根据源路径模式过滤(例如: "*.md")
sourcePattern?: string;
};
// 包含在结果中的信息(可选)
include?: {
metadata?: boolean; // 包含元数据
summary?: boolean; // 生成摘要
keywords?: boolean; // 提取关键词
relevance?: boolean; // 生成相关性解释
};
}
基本搜索:
const result = await callTool("rag_search", {
query: "提交消息的格式",
limit: 3
});
高级搜索:
const result = await callTool("rag_search", {
query: "提交消息的格式",
context: "正在调查如何使用Git",
filter: {
documentTypes: ["markdown"],
sourcePattern: "git-*.md"
},
include: {
summary: true,
keywords: true,
relevance: true
}
});
interface SearchResult {
// 与搜索查询相关的文档内容
content: string;
// 相似度得分(0-1)
score: number;
// 源文件路径
source: string;
// 位置信息
startLine?: number; // 开始行
endLine?: number; // 结束行
startColumn?: number; // 开始列
endColumn?: number; // 结束列
// 文档类型(例如: "markdown", "code", "text")
documentType?: string;
// 额外信息(仅当include选项指定时存在)
summary?: string; // 内容摘要
keywords?: string[]; // 关键词
relevance?: string; // 相关性解释
metadata?: Record<string, unknown>; // 元数据
}
{
"results": [
{
"content": "# 提交消息的格式\n\n请按照以下格式编写提交消息:\n\n```\n<type>(<scope>): <subject>\n\n<body>\n\n<footer>\n```\n\n...",
"score": 0.92,
"source": "/path/to/rules/git-conventions.md",
"startLine": 1,
"endLine": 10,
"startColumn": 1,
"endColumn": 35,
"documentType": "markdown",
"summary": "关于提交消息格式的说明文档",
"keywords": ["commit", "message", "format", "type", "scope"],
"relevance": "此文档包含与搜索查询“提交消息的格式”相关的信息。相似度得分: 0.92"
}
]
}
这些扩展的搜索功能使LLM能够更准确且高效地处理信息。额外的位置信息、文档类型、摘要、关键词等信息有助于LLM更深入地理解和适当利用搜索结果。
每个向量存储都通过抽象接口使用,可以根据需要轻松切换。
由于HNSWLib将向量存储保存在本地文件系统上,因此不需要特殊的环境设置。
重建向量存储:
./rebuild-vector-store-hnsw.sh
使用Weaviate需要Docker。
./start-weaviate.sh
./rebuild-vector-store-weaviate.sh
curl http://localhost:8080/v1/.well-known/ready
docker-compose down
docker-compose down -v
Weaviate的配置由docker-compose.yml文件管理。默认情况下,应用以下设置:
weaviate_data)| 环境变量 | 描述 | 默认值 |
|---|---|---|
| KNOWLEDGE_BASE_PATH | 知识库路径(必需) | - |
| OPENAI_API_KEY | OpenAI API 密钥(必需) | - |
| SIMILARITY_THRESHOLD | 搜索时的相似度得分阈值(0-1) | 0.7 |
| CHUNK_SIZE | 文本分割时的片段大小 | 1000 |
| CHUNK_OVERLAP | 片段的重叠大小 | 200 |
| VECTOR_STORE_TYPE | 使用的向量存储类型("hnswlib", "chroma", "pinecone", "milvus") | "hnswlib" |
| VECTOR_STORE_CONFIG | 向量存储的配置(JSON字符串) | {} |
ISC
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)