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.

Shared Knowledge MCP Server

각종 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 (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

사용 가능한 도구

기술 자료에서 정보를 검색합니다.

검색 요청

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이 검색 결과를 더 깊이 이해하고 적절하게 활용할 수 있도록 도와줍니다.

메커니즘

  1. 시작할 때 지정된 디렉토리에 있는 Markdown 파일(.md, .mdx) 및 텍스트 파일(.txt)을 로드합니다.
  2. 문서를 청크로 분할하고 OpenAI API를 사용하여 벡터화
  3. 선택한 벡터 저장소(기본값: HNSWLib)를 사용하여 벡터 인덱스를 만듭니다.
  4. 검색어에 대해 유사도가 높은 문서를 반환합니다.

지원되는 벡터 스토어

  • HNSWLib : 로컬 파일 시스템에 저장된 고속 벡터 스토어 (기본값)
  • Chroma : 오픈 소스 벡터 데이터베이스
  • Pinecone : 관리형 벡터 데이터베이스 서비스(API 키 필요)
  • Milvus : 대규모 벡터 검색 엔진
  • Weaviate : 스키마 우선 벡터 데이터베이스(Docker 필수)

각 벡터 스토어는 추상화된 인터페이스를 통해 활용되며 필요에 따라 쉽게 전환할 수 있습니다.

벡터 스토어 환경을 조작하는 방법

HNSWLib(기본값)

HNSWLib은 로컬 파일 시스템에 벡터 저장소를 저장하므로 특별한 환경 설정이 필요하지 않습니다.

벡터 스토어 재구성:

./rebuild-vector-store-hnsw.sh

Weaviate

Weaviate를 사용하려면 Docker가 필요합니다.

  1. Weaviate 환경 시작:
./start-weaviate.sh
  1. 벡터 스토어 재구성:
./rebuild-vector-store-weaviate.sh
  1. Weaviate 상태 확인:
curl http://localhost:8080/v1/.well-known/ready
  1. Weaviate 환경 중지:
docker-compose down
  1. Weaviate 데이터를 완전히 삭제 (필요한 경우에만) :
docker-compose down -v

Weaviate 설정은 docker-compose.yml 파일에서 관리됩니다. 기본적으로 다음 설정이 적용됩니다.

  • 포트: 8080
  • 인증: 익명 액세스 사용
  • 벡터화 모듈: 없음(외부 포함 포함)
  • 데이터 저장: Docker 볼륨( weaviate_data )

설정 옵션

환경 변수설명기본값
KNOWLEDGE_BASE_PATH지식 기반 경로(필수)-
OPENAI_API_KEYOpenAI API 키(필수)-
SIMILARITY_THRESHOLD검색 시 유사도 점수 임계값(0-1)0.7
CHUNK_SIZE텍스트 분할시의 청크 크기1000
CHUNK_OVERLAP청크 중첩 크기200
VECTOR_STORE_TYPE사용할 벡터 저장소 유형("hnswlib", "chroma", "pinecone", "milvus")"hnswlib"
VECTOR_STORE_CONFIG벡터 스토어 설정(JSON 문자열){}

라이센스

ISC

기여

  1. 포크하다
  2. 피처 브랜치 만들기 ( git checkout -b feature/amazing-feature )
  3. 변경 커밋 ( git commit -m 'Add some amazing feature' )
  4. 브랜치로 푸시하기 ( git push origin feature/amazing-feature )
  5. 풀 요청 작성
-
security - not tested
F
license - not found
-
quality - not tested

This server enables AI assistants (CLINE, Cursor, Windsurf, Claude Desktop) to share a common knowledge base through Retrieval Augmented Generation (RAG), providing consistent information access across multiple tools.

  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