Servidor MCP de conocimiento compartido
Este es un servidor MCP de base de conocimientos que se puede utilizar comúnmente con varios asistentes de IA (CLINE, Cursor, Windsurf, Claude Desktop). La utilización de la generación aumentada de recuperación (RAG) permite una recuperación y utilización eficiente de la información. Comparta bases de conocimiento entre múltiples herramientas de asistente de IA para brindar acceso consistente a la información.
Características
Una base de conocimiento común se puede utilizar en múltiples asistentes de IA
Recuperación de información de alta precisión utilizando RAG
Implementación segura de tipos usando TypeScript
Admite múltiples almacenes de vectores (HNSWLib, Chroma, Pinecone, Milvus)
Extensibilidad a través de interfaces abstractas
Related MCP server: Roam Research MCP Server
instalar
git clone https://github.com/yourusername/shared-knowledge-mcp.git
cd shared-knowledge-mcp
npm installconfiguración
Las configuraciones del servidor MCP se agregan al archivo de configuración de cada asistente de IA.
VSCode (para 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"
}
}
}
}Ejemplos de uso de 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\"}"
}
}
}
}Escritorio de Claude
~/Library/Application Support/Claude/claude_desktop_config.json :
Ejemplo usando HNSWLib (predeterminado)
{
"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": []
}
}
}Ejemplos de uso de 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": []
}
}
}Nota : Si está utilizando Weaviate, debe iniciar el servidor Weaviate de antemano. Puedes iniciarlo con el siguiente comando:
./start-weaviate.shdesarrollo
Iniciar el servidor de desarrollo
npm run devConstruir
npm run buildCorriendo en producción
npm startHerramientas disponibles
búsqueda de trapos
Busque información en la base de conocimientos.
Solicitud de búsqueda
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; // 関連性の説明を生成
};
}Ejemplo de uso
Búsqueda básica:
const result = await callTool("rag_search", {
query: "コミットメッセージのフォーマット",
limit: 3
});Búsqueda avanzada:
const result = await callTool("rag_search", {
query: "コミットメッセージのフォーマット",
context: "Gitの使い方について調査中",
filter: {
documentTypes: ["markdown"],
sourcePattern: "git-*.md"
},
include: {
summary: true,
keywords: true,
relevance: true
}
});Resultados de la búsqueda
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>; // メタデータ
}Ejemplo de respuesta
{
"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"
}
]
}Estas capacidades de búsqueda mejoradas permitirán a los LLM procesar la información con mayor precisión y eficiencia. Información adicional como ubicación, tipo de documento, resumen y palabras clave ayudan a LLM a comprender mejor y utilizar adecuadamente los resultados de búsqueda.
estructura
Al iniciarse, lee archivos Markdown (.md, .mdx) y archivos de texto (.txt) en el directorio especificado.
Divida el documento en fragmentos y vectorícelo utilizando la API OpenAI
Crea un índice vectorial utilizando el almacén vectorial seleccionado (predeterminado: HNSWLib)
Devuelve documentos que son muy similares a una consulta de búsqueda.
Tiendas de vectores compatibles
HNSWLib : un almacén de vectores rápido almacenado en el sistema de archivos local (predeterminado)
Chroma : una base de datos vectorial de código abierto
Pinecone : Servicio de base de datos vectorial administrada (se requiere clave API)
Milvus : un motor de búsqueda vectorial a gran escala
Weaviate : una base de datos vectorial que prioriza el esquema (se requiere Docker)
Cada tienda de vectores se expone a través de una interfaz abstracta, lo que facilita cambiar entre ellas según sea necesario.
Cómo navegar por el entorno de Vector Store
HNSWLib (predeterminado)
HNSWLib guarda el almacén de vectores en el sistema de archivos local, por lo que no se requiere ninguna configuración especial.
Reconstrucción de la tienda vectorial:
./rebuild-vector-store-hnsw.shTejer
Para utilizar Weaviate, necesitas Docker.
Inicie el entorno Weaviate:
./start-weaviate.shReconstrucción de la tienda vectorial:
./rebuild-vector-store-weaviate.shComprueba el estado de Weaviate:
curl http://localhost:8080/v1/.well-known/readyDeteniendo el entorno Weaviate:
docker-compose downElimina tus datos de Weaviate por completo (solo si es necesario):
docker-compose down -vLa configuración de Weaviate se administra en docker-compose.yml . De forma predeterminada, se aplican las siguientes configuraciones:
Puerto: 8080
Autenticación: acceso anónimo habilitado
Módulo de vectorización: Ninguno (utilizar relleno externo)
Almacenamiento de datos: volumen Docker (
weaviate_data)
Opciones de configuración
variables ambientales | explicación | Valor predeterminado |
RUTA DE LA BASE DE CONOCIMIENTOS | Ruta de la base de conocimientos (obligatoria) | - |
CLAVE API DE OPENAI | Clave API de OpenAI (obligatoria) | - |
UMBRAL DE SIMILITUD | Umbral de puntuación de similitud para la búsqueda (0-1) | 0.7 |
TAMAÑO DEL TROZO | Tamaño del fragmento para dividir el texto | 1000 |
SUPERPOSICIÓN DE TROZOS | Tamaño de superposición de fragmentos | 200 |
TIPO DE TIENDA DE VECTOR | El tipo de almacén vectorial a utilizar ("hnswlib", "chroma", "pinecone", "milvus"). | "hnswlib" |
CONFIGURACIÓN DEL ALMACÉN DE VECTOR | Configuración de la tienda de vectores (cadena JSON) | {} |
licencia
ISC
contribución
Tenedor
Crear una rama de características (
git checkout -b feature/amazing-feature)Confirmar los cambios (
git commit -m 'Add some amazing feature')Empujar a la rama (
git push origin feature/amazing-feature)Crear una solicitud de extracción