Shared Knowledge MCP Server

by j5ik2o
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Required for running the Weaviate vector database option, with included scripts for managing the Docker-based Weaviate environment.

  • Provides access to Git-related information, including commit message formats and conventions through the knowledge base search functionality.

  • Enables indexing and searching of Markdown (.md, .mdx) files, allowing AI assistants to retrieve information from documentation stored in Markdown format.

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

instalar

git clone https://github.com/yourusername/shared-knowledge-mcp.git cd shared-knowledge-mcp npm install

configuració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.sh

desarrollo

Iniciar el servidor de desarrollo

npm run dev

Construir

npm run build

Corriendo en producción

npm start

Herramientas 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

  1. Al iniciarse, lee archivos Markdown (.md, .mdx) y archivos de texto (.txt) en el directorio especificado.
  2. Divida el documento en fragmentos y vectorícelo utilizando la API OpenAI
  3. Crea un índice vectorial utilizando el almacén vectorial seleccionado (predeterminado: HNSWLib)
  4. 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.sh

Tejer

Para utilizar Weaviate, necesitas Docker.

  1. Inicie el entorno Weaviate:
./start-weaviate.sh
  1. Reconstrucción de la tienda vectorial:
./rebuild-vector-store-weaviate.sh
  1. Comprueba el estado de Weaviate:
curl http://localhost:8080/v1/.well-known/ready
  1. Deteniendo el entorno Weaviate:
docker-compose down
  1. Elimina tus datos de Weaviate por completo (solo si es necesario):
docker-compose down -v

La 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 ambientalesexplicaciónValor predeterminado
RUTA DE LA BASE DE CONOCIMIENTOSRuta de la base de conocimientos (obligatoria)-
CLAVE API DE OPENAIClave API de OpenAI (obligatoria)-
UMBRAL DE SIMILITUDUmbral de puntuación de similitud para la búsqueda (0-1)0.7
TAMAÑO DEL TROZOTamaño del fragmento para dividir el texto1000
SUPERPOSICIÓN DE TROZOSTamaño de superposición de fragmentos200
TIPO DE TIENDA DE VECTOREl tipo de almacén vectorial a utilizar ("hnswlib", "chroma", "pinecone", "milvus")."hnswlib"
CONFIGURACIÓN DEL ALMACÉN DE VECTORConfiguración de la tienda de vectores (cadena JSON){}

licencia

ISC

contribución

  1. Tenedor
  2. Crear una rama de características ( git checkout -b feature/amazing-feature )
  3. Confirmar los cambios ( git commit -m 'Add some amazing feature' )
  4. Empujar a la rama ( git push origin feature/amazing-feature )
  5. Crear una solicitud de extracción
-
security - not tested
F
license - not found
-
quality - not tested

Este servidor permite que los asistentes de IA (CLINE, Cursor, Windsurf, Claude Desktop) compartan una base de conocimiento común a través de Retrieval Augmented Generation (RAG), proporcionando acceso consistente a la información a través de múltiples herramientas.

  1. 特徴
    1. インストール
      1. 設定
        1. VSCode (CLINE/Cursor用)
        2. Pineconeを使用する例
        3. Claude Desktop
      2. 開発
        1. 開発用サーバーの起動
        2. ビルド
        3. 本番環境での実行
      3. 使用可能なツール
        1. rag_search
      4. 仕組み
        1. サポートされているベクトルストア
        2. ベクトルストア環境の操作方法
      5. 設定オプション
        1. ライセンス
          1. 貢献
            ID: ggj8lu8t4i