共享知识MCP服务器
各种AI助手(CLINE,Cursor,Windsurf,Claude Desktop)共同使用的知识库MCP服务器。 Retrieval Augmented Generation (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(单击/光标用)
~/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必须先启动服务器。可通过以下命令启动:
./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; // メタデータ
}响应示例
{
"results": [
{
"content": "# コミットメッセージのフォーマット\n\n以下の形式でコミットメッセージを記述してください:\n\n```\n(): \n\n\n\n\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 的:保存在本地文件系统中的快速矢量存储(默认值)
- 色度:开源向量数据库
- 松果:受管向量数据库服务(需要API密钥)
- 米尔维斯:大型矢量搜索引擎
- Weaviate:架构第一向量数据库(需要Docker)
每个矢量存储都通过抽象化的接口使用,可以根据需要轻松切换。
矢量存储环境的操作方法
HNSWLib(默认值)
HNSWLib因为在本地文件系统中保存矢量存储,所以不需要特别的配置。
矢量存储重建:
./rebuild-vector-store-hnsw.shWeaviate
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 -vWeaviate设置为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”) | VECTOR_STORE_CONFIG | 矢量存储设置(JSON字符串)
许可证
国际协调委员会
貢献
- Fork开伙
- 创建特征分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - Pull Request创建
