SourceSync.ai MCP Server

by pbteja1998
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Enables ingestion of content from Box cloud storage platform into the SourceSync.ai knowledge base

  • Enables ingestion of content from Dropbox cloud storage platform into the SourceSync.ai knowledge base

  • Enables ingestion of content from Google Drive cloud storage platform into the SourceSync.ai knowledge base

SourceSync.ai MCP 서버

SourceSync.ai API를 위한 모델 컨텍스트 프로토콜(MCP) 서버 구현입니다. 이 서버를 통해 AI 모델은 표준화된 인터페이스를 통해 SourceSync.ai의 지식 관리 플랫폼과 상호 작용할 수 있습니다.

특징

  • 지식 구성을 위한 네임스페이스 관리
  • 다양한 소스(텍스트, URL, 웹사이트, 외부 서비스)에서 콘텐츠를 수집합니다.
  • 지식 기반에 저장된 문서를 검색, 업데이트 및 관리합니다.
  • 지식 기반에 대해 의미론적 검색과 하이브리드 검색을 수행합니다.
  • 구문 분석된 텍스트 URL에서 직접 문서 콘텐츠에 액세스
  • 외부 서비스에 대한 연결 관리
  • 원활한 AI 통합을 위한 기본 구성 지원

설치

npx로 실행

지엑스피1

Smithery를 통해 설치

Smithery를 통해 Claude Desktop용 sourcesyncai-mcp를 자동으로 설치하려면:

npx -y @smithery/cli install @pbteja1998/sourcesyncai-mcp --client claude

수동 설치

# Clone the repository git clone https://github.com/yourusername/sourcesyncai-mcp.git cd sourcesyncai-mcp # Install dependencies npm install # Build the project npm run build # Run the server node dist/index.js

커서에서 실행

Cursor에서 SourceSync.ai MCP를 구성하려면:

  1. 커서 설정 열기
  2. Features > MCP Servers 로 이동하세요
  3. + Add New MCP Server 클릭하세요
  4. 다음을 입력하세요.
    • 이름: sourcesyncai-mcp (또는 원하는 이름)
    • 유형: command
    • 명령어: env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp

추가한 후에는 SourceSync.ai 도구를 Cursor의 AI 기능과 함께 사용하여 지식 관리 요구 사항을 설명할 수 있습니다.

윈드서프에서 달리기

./codeium/windsurf/model_config.json 에 다음을 추가하세요.

{ "mcpServers": { "sourcesyncai-mcp": { "command": "npx", "args": ["-y", "soucesyncai-mcp"], "env": { "SOURCESYNC_API_KEY": "your_api_key", "SOURCESYNC_NAMESPACE_ID": "your_namespace_id", "SOURCESYNC_TENANT_ID": "your_tenant_id" } } } }

Claude Desktop에서 실행

Claude Desktop과 함께 이 MCP 서버를 사용하려면:

  1. Claude Desktop 구성 파일을 찾으세요.
    • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
    • 윈도우 : %APPDATA%\Claude\claude_desktop_config.json
    • 리눅스 : ~/.config/Claude/claude_desktop_config.json
  2. SourceSync.ai MCP 서버를 추가하려면 구성 파일을 편집하세요.
{ "mcpServers": { "sourcesyncai-mcp": { "command": "npx", "args": ["-y", "sourcesyncai-mcp"], "env": { "SOURCESYNC_API_KEY": "your_api_key", "SOURCESYNC_NAMESPACE_ID": "your_namespace_id", "SOURCESYNC_TENANT_ID": "your_tenant_id" } } } }
  1. 구성 파일을 저장하고 Claude Desktop을 다시 시작하세요.

구성

환경 변수

필수의

  • SOURCESYNC_API_KEY : SourceSync.ai API 키(필수)

선택 과목

  • SOURCESYNC_NAMESPACE_ID : 작업에 사용할 기본 네임스페이스 ID
  • SOURCESYNC_TENANT_ID : 테넌트 ID(선택 사항)

구성 예제

기본값을 사용한 기본 구성:

export SOURCESYNC_API_KEY=your_api_key export SOURCESYNC_TENANT_ID=your_tenant_id export SOURCESYNC_NAMESPACE_ID=your_namespace_id

사용 가능한 도구

입증

  • validate_api_key : SourceSync.ai API 키 검증
{ "name": "validate_api_key", "arguments": {} }

네임스페이스

  • create_namespace : 새로운 네임스페이스를 생성합니다.
  • list_namespaces : 모든 네임스페이스를 나열합니다.
  • get_namespace : 특정 네임스페이스의 세부 정보를 가져옵니다.
  • update_namespace : 네임스페이스 업데이트
  • delete_namespace : 네임스페이스 삭제
{ "name": "create_namespace", "arguments": { "name": "my-namespace", "fileStorageConfig": { "provider": "S3_COMPATIBLE", "config": { "endpoint": "s3.amazonaws.com", "accessKey": "your_access_key", "secretKey": "your_secret_key", "bucket": "your_bucket", "region": "us-east-1" } }, "vectorStorageConfig": { "provider": "PINECONE", "config": { "apiKey": "your_pinecone_api_key", "environment": "your_environment", "index": "your_index" } }, "embeddingModelConfig": { "provider": "OPENAI", "config": { "apiKey": "your_openai_api_key", "model": "text-embedding-3-small" } }, "tenantId": "tenant_XXX" } }
{ "name": "list_namespaces", "arguments": { "tenantId": "tenant_XXX" } }
{ "name": "get_namespace", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX" } }
{ "name": "update_namespace", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX", "name": "updated-namespace-name" } }
{ "name": "delete_namespace", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX" } }

데이터 수집

  • ingest_text : 텍스트 콘텐츠 수집
  • ingest_urls : URL에서 콘텐츠 수집
  • ingest_sitemap : 사이트맵에서 콘텐츠를 수집합니다.
  • ingest_website : 웹사이트에서 콘텐츠를 수집합니다.
  • ingest_notion : Notion에서 콘텐츠를 수집합니다.
  • ingest_google_drive : Google 드라이브에서 콘텐츠를 수집합니다.
  • ingest_dropbox : Dropbox에서 콘텐츠 수집
  • ingest_onedrive : OneDrive에서 콘텐츠를 수집합니다.
  • ingest_box : Box에서 콘텐츠를 수집합니다.
  • get_ingest_job_run_status : 수집 작업 실행 상태를 가져옵니다.
{ "name": "ingest_text", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "TEXT", "config": { "name": "example-document", "text": "This is an example document for ingestion.", "metadata": { "category": "example", "author": "AI Assistant" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_urls", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "URLS", "config": { "urls": ["https://example.com/page1", "https://example.com/page2"], "metadata": { "source": "web", "category": "documentation" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_sitemap", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "SITEMAP", "config": { "url": "https://example.com/sitemap.xml", "metadata": { "source": "sitemap", "website": "example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_website", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "WEBSITE", "config": { "url": "https://example.com", "maxDepth": 3, "maxPages": 100, "metadata": { "source": "website", "domain": "example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_notion", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "NOTION", "config": { "connectionId": "your_notion_connection_id", "metadata": { "source": "notion", "workspace": "My Workspace" } } }, "tenantId": "your_tenant_id" } }
{ "name": "ingest_google_drive", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "GOOGLE_DRIVE", "config": { "connectionId": "connection_XXX", "metadata": { "source": "google_drive", "owner": "user@example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_dropbox", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "DROPBOX", "config": { "connectionId": "connection_XXX", "metadata": { "source": "dropbox", "account": "user@example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_onedrive", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "ONEDRIVE", "config": { "connectionId": "connection_XXX", "metadata": { "source": "onedrive", "account": "user@example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "ingest_box", "arguments": { "namespaceId": "your_namespace_id", "ingestConfig": { "source": "BOX", "config": { "connectionId": "connection_XXX", "metadata": { "source": "box", "owner": "user@example.com" } } }, "tenantId": "tenant_XXX" } }
{ "name": "get_ingest_job_run_status", "arguments": { "namespaceId": "your_namespace_id", "ingestJobRunId": "ingest_job_run_XXX", "tenantId": "tenant_XXX" } }

서류

  • getDocuments : 선택적 필터를 사용하여 문서 검색
  • updateDocuments : 문서 메타데이터 업데이트
  • deleteDocuments : 문서 삭제
  • resyncDocuments : 문서 다시 동기화
  • fetchUrlContent : 문서 URL에서 텍스트 콘텐츠 가져오기
{ "name": "getDocuments", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX", "filterConfig": { "documentTypes": ["PDF"] }, "includeConfig": { "parsedTextFileUrl": true } } }
{ "name": "updateDocuments", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX", "documentIds": ["doc_XXX", "doc_YYY"], "filterConfig": { "documentIds": ["doc_XXX", "doc_YYY"] }, "data": { "metadata": { "status": "reviewed", "category": "technical" } } } }
{ "name": "deleteDocuments", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX", "documentIds": ["doc_XXX", "doc_YYY"], "filterConfig": { "documentIds": ["doc_XXX", "doc_YYY"] } } }
{ "name": "resyncDocuments", "arguments": { "namespaceId": "namespace_XXX", "tenantId": "tenant_XXX", "documentIds": ["doc_XXX", "doc_YYY"], "filterConfig": { "documentIds": ["doc_XXX", "doc_YYY"] } } }
{ "name": "fetchUrlContent", "arguments": { "url": "https://api.sourcesync.ai/v1/documents/doc_XXX/content?format=text", "apiKey": "your_api_key", "tenantId": "tenant_XXX" } }

찾다

  • semantic_search : 의미 검색을 수행합니다.
  • hybrid_search : 하이브리드 검색(의미론적 검색 + 키워드 검색)을 수행합니다.
{ "name": "semantic_search", "arguments": { "namespaceId": "your_namespace_id", "query": "example document", "topK": 5, "tenantId": "tenant_XXX" } }
{ "name": "hybrid_search", "arguments": { "namespaceId": "your_namespace_id", "query": "example document", "topK": 5, "tenantId": "tenant_XXX", "hybridConfig": { "semanticWeight": 0.7, "keywordWeight": 0.3 } } }

사이

  • create_connection : 외부 서비스에 대한 새로운 연결을 생성합니다.
  • list_connections : 모든 연결 나열
  • get_connection : 특정 연결의 세부 정보를 가져옵니다.
  • update_connection : 연결 업데이트
  • revoke_connection : 연결을 취소합니다.
{ "name": "create_connection", "arguments": { "tenantId": "tenant_XXX", "namespaceId": "namespace_XXX", "name": "My Connection", "connector": "GOOGLE_DRIVE", "clientRedirectUrl": "https://your-app.com/callback" } }
{ "name": "list_connections", "arguments": { "tenantId": "tenant_XXX", "namespaceId": "namespace_XXX" } }
{ "name": "get_connection", "arguments": { "tenantId": "tenant_XXX", "namespaceId": "namespace_XXX", "connectionId": "connection_XXX" } }
{ "name": "update_connection", "arguments": { "tenantId": "tenant_XXX", "namespaceId": "namespace_XXX", "connectionId": "connection_XXX", "name": "Updated Connection Name", "clientRedirectUrl": "https://your-app.com/updated-callback" } }
{ "name": "revoke_connection", "arguments": { "tenantId": "tenant_XXX", "namespaceId": "namespace_XXX", "connectionId": "connection_XXX" } }

예시 프롬프트

MCP 서버를 구성한 후 Claude 또는 Cursor와 함께 사용할 수 있는 몇 가지 프롬프트 예는 다음과 같습니다.

  • "머신 러닝에 대한 정보는 SourceSync 지식 기반에서 검색하세요."
  • "이 문서를 내 SourceSync 지식 기반에 수집합니다: [URL]"
  • "SourceSync에서 프로젝트 문서를 위한 새 네임스페이스를 만듭니다."
  • "내 SourceSync 네임스페이스에 있는 모든 문서를 나열하세요."
  • "SourceSync 네임스페이스에서 문서 [document_id]의 텍스트 콘텐츠를 가져옵니다."

문제 해결

연결 문제

SourceSync.ai MCP 서버 연결에 문제가 발생하는 경우:

  1. 경로 확인 : 구성의 모든 경로가 상대 경로가 아닌 절대 경로인지 확인하세요.
  2. 권한 확인 : 서버 파일에 실행 권한이 있는지 확인하세요( chmod +x dist/index.js ).
  3. 개발자 모드 활성화 : Claude Desktop에서 개발자 모드를 활성화하고 MCP 로그 파일을 확인하세요.
  4. 서버 테스트 : 명령줄에서 직접 서버를 실행합니다.
    node /path/to/sourcesyncai-mcp/dist/index.js
  5. AI 클라이언트 다시 시작 : 변경 사항을 적용한 후 Claude Desktop 또는 Cursor를 완전히 다시 시작합니다.
  6. 환경 변수 확인 : 모든 필수 환경 변수가 올바르게 설정되었는지 확인하세요.

디버그 로깅

자세한 로깅을 위해 DEBUG 환경 변수를 추가하세요.

개발

프로젝트 구조

  • src/index.ts : 메인 진입점 및 서버 설정
  • src/schemas.ts : 모든 도구에 대한 스키마 정의
  • src/sourcesync.ts : SourceSync.ai API와 상호 작용하기 위한 클라이언트
  • src/sourcesync.types.ts : TypeScript 유형 정의

빌딩 및 테스트

# Build the project npm run build # Run tests npm test

특허

MIT

모래밭

문서 콘텐츠 검색 워크플로:

  1. 먼저 includeConfig.parsedTextFileUrl: true 와 함께 getDocuments 사용하여 콘텐츠 URL이 포함된 문서를 가져옵니다.
  2. 문서 응답에서 URL 추출
  3. fetchUrlContent 사용하여 실제 콘텐츠를 검색합니다.
{ "name": "fetchUrlContent", "arguments": { "url": "https://example.com" } }
ID: 5kcwiwl8hr