共享知识 MCP 服务器
这是一个知识库 MCP 服务器,可与各种 AI 助手(CLINE、Cursor、Windsurf、Claude Desktop)通用。利用检索增强生成 (RAG) 可以实现高效的信息检索和利用。在多个 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\"}"
}
}
}
}
克劳德桌面
~/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 服务器。您可以使用以下命令启动它:
发展
启动开发服务器
建造
生产运行
可用工具
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)
每个向量存储都通过抽象接口公开,从而可以根据需要在它们之间轻松切换。
如何导航 Vector Store 环境
HNSWLib(默认)
HNSWLib 将向量存储保存在本地文件系统上,因此不需要特殊配置。
矢量存储重建:
./rebuild-vector-store-hnsw.sh
威维特
要使用 Weaviate,您需要 Docker。
- 启动 Weaviate 环境:
- 矢量存储重建:
./rebuild-vector-store-weaviate.sh
- 检查 Weaviate 的状态:
curl http://localhost:8080/v1/.well-known/ready
- 停止 Weaviate 环境:
- 彻底删除您的 Weaviate 数据(仅在必要时):
Weaviate 配置在docker-compose.yml
文件中进行管理。默认情况下,应用以下设置:
- 端口:8080
- 身份验证:启用匿名访问
- 矢量化模块:无(使用外部填充)
- 数据存储:Docker 卷(
weaviate_data
)
配置选项
环境变量 | 解释 | 默认值 |
---|
知识库路径 | 知识库路径(必填) | - |
OPENAI_API_密钥 | OpenAI API 密钥(必需) | - |
相似度阈值 | 搜索的相似度分数阈值(0-1) | 0.7 |
块大小 | 分割文本的块大小 | 1000 |
块重叠 | 块重叠大小 | 200 |
向量存储类型 | 要使用的矢量存储类型(“hnswlib”、“chroma”、“pinecone”、“milvus”)。 | “hnswlib” |
VECTOR_STORE_CONFIG | 向量存储配置(JSON字符串) | {} |
执照
国际学习中心
贡献
- 叉
- 创建功能分支(
git checkout -b feature/amazing-feature
) - 提交更改(
git commit -m 'Add some amazing feature'
) - 推送到分支(
git push origin feature/amazing-feature
) - 创建拉取请求