Shared Knowledge MCP Server
这个服务器使人工智能助手(CLINE、Cursor、Windsurf、Claude Desktop)能够通过检索增强生成(RAG)共享一个共同的知识库,从而在多个工具之间提供一致的信息访问。
README
共享知识 MCP 服务器
各种 AI 助手(CLINE, Cursor, Windsurf, Claude Desktop)可以共同使用的知识库 MCP 服务器。 利用检索增强生成 (RAG),实现高效的信息检索和利用。 通过在多个 AI 助手工具之间共享知识库,提供一致的信息访问。
特点
- 多个 AI 助手之间可以使用共同的知识库
- RAG 实现高精度信息检索
- TypeScript 实现的类型安全
- 支持多种向量存储(HNSWLib, Chroma, Pinecone, Milvus)
- 通过抽象接口实现可扩展性
安装
git clone https://github.com/yourusername/shared-knowledge-mcp.git
cd shared-knowledge-mcp
npm install
配置
MCP 服务器的配置添加到各个 AI 助手的配置文件中。
VSCode (用于 CLINE/Cursor)
~/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"
}
}
}
}
使用 Pinecone 的示例
{
"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\"}"
}
}
}
}
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
使用 HNSWLib(默认)的示例
{
"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": []
}
}
}
使用 Weaviate 的示例
{
"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
可用工具
rag_search
从知识库中搜索信息。
搜索请求
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 更深入地理解搜索结果并适当地利用它们。
机制
- 启动时,读取指定目录中的 Markdown 文件(.md, .mdx)和文本文件(.txt)
- 将文档分割成块,并使用 OpenAI API 将其向量化
- 使用选择的向量存储(默认:HNSWLib)创建向量索引
- 返回与搜索查询具有高相似度的文档
支持的向量存储
- HNSWLib: 存储在本地文件系统中的快速向量存储(默认)
- Chroma: 开源向量数据库
- Pinecone: 托管向量数据库服务(需要 API 密钥)
- Milvus: 大规模向量搜索引擎
- Weaviate: 模式优先的向量数据库(需要 Docker)
每个向量存储都通过抽象接口使用,可以根据需要轻松切换。
向量存储环境的操作方法
HNSWLib(默认)
HNSWLib 将向量存储保存在本地文件系统中,因此不需要特殊的环境设置。
重建向量存储:
./rebuild-vector-store-hnsw.sh
Weaviate
要使用 Weaviate,需要 Docker。
- 启动 Weaviate 环境:
./start-weaviate.sh
- 重建向量存储:
./rebuild-vector-store-weaviate.sh
- 检查 Weaviate 的状态:
curl http://localhost:8080/v1/.well-known/ready
- 停止 Weaviate 环境:
docker-compose down
- 完全删除 Weaviate 的数据(仅在需要时):
docker-compose down -v
Weaviate 的设置在 docker-compose.yml 文件中管理。默认情况下,应用以下设置:
- 端口:8080
- 身份验证:匿名访问已启用
- 向量化模块:无(使用外部嵌入)
- 数据存储:Docker 卷(
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", "weaviate") | "hnswlib" |
| VECTOR_STORE_CONFIG | 向量存储的配置(JSON 字符串) | {} |
许可证
ISC
贡献
- Fork
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。