SourceSync.ai
Um servidor MCP para a API do SourceSync.ai gerenciar e sincronizar contexto de código-fonte.
Documentação
Servidor MCP SourceSync.ai
Uma implementação de servidor Model Context Protocol (MCP) para a API do SourceSync.ai. Este servidor permite que modelos de IA interajam com a plataforma de gerenciamento de conhecimento do SourceSync.ai por meio de uma interface padronizada.
Recursos
- Gerencie namespaces para organizar conhecimento
- Ingira conteúdo de várias fontes (texto, URLs, sites, serviços externos)
- Recupere, atualize e gerencie documentos armazenados em sua base de conhecimento
- Realize buscas semânticas e híbridas em sua base de conhecimento
- Acesse o conteúdo dos documentos diretamente a partir de URLs de texto analisadas
- Gerencie conexões com serviços externos
- Suporte a configuração padrão para integração perfeita com IA
Instalação
Executando com npx
# Install and run with your API key and tenant ID
env SOURCESYNC_API_KEY=your_api_key npx -y sourcesyncai-mcp
Instalando via Smithery
Para instalar o sourcesyncai-mcp para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @pbteja1998/sourcesyncai-mcp --client claude
Instalação Manual
# 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
Executando no Cursor
Para configurar o SourceSync.ai MCP no Cursor:
- Abra as Configurações do Cursor
- Vá para
Features > MCP Servers - Clique em
+ Add New MCP Server - Insira o seguinte:
- Nome:
sourcesyncai-mcp(ou o nome de sua preferência) - Tipo:
command - Comando:
env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp
- Nome:
Após adicionar, você pode usar as ferramentas do SourceSync.ai com os recursos de IA do Cursor descrevendo suas necessidades de gerenciamento de conhecimento.
Executando no Windsurf
Adicione isto ao seu ./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"
}
}
}
}
Executando no Claude Desktop
Para usar este servidor MCP com o Claude Desktop:
-
Localize o arquivo de configuração do Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Edite o arquivo de configuração para adicionar o servidor MCP do SourceSync.ai:
{
"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"
}
}
}
}
- Salve o arquivo de configuração e reinicie o Claude Desktop
Configuração
Variáveis de Ambiente
Obrigatórias
SOURCESYNC_API_KEY: Sua chave de API do SourceSync.ai (obrigatória)
Opcionais
SOURCESYNC_NAMESPACE_ID: ID de namespace padrão a ser usado nas operaçõesSOURCESYNC_TENANT_ID: Seu ID de locatário (opcional)
Exemplos de Configuração
Configuração básica com valores padrão:
export SOURCESYNC_API_KEY=your_api_key
export SOURCESYNC_TENANT_ID=your_tenant_id
export SOURCESYNC_NAMESPACE_ID=your_namespace_id
Ferramentas Disponíveis
Autenticação
validate_api_key: Validar uma chave de API do SourceSync.ai
{
"name": "validate_api_key",
"arguments": {}
}
Namespaces
create_namespace: Criar um novo namespacelist_namespaces: Listar todos os namespacesget_namespace: Obter detalhes de um namespace específicoupdate_namespace: Atualizar um namespacedelete_namespace: Excluir um 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ão de Dados
ingest_text: Ingerir conteúdo de textoingest_urls: Ingerir conteúdo de URLsingest_sitemap: Ingerir conteúdo de um sitemapingest_website: Ingerir conteúdo de um siteingest_notion: Ingerir conteúdo do Notioningest_google_drive: Ingerir conteúdo do Google Driveingest_dropbox: Ingerir conteúdo do Dropboxingest_onedrive: Ingerir conteúdo do OneDriveingest_box: Ingerir conteúdo do Boxget_ingest_job_run_status: Obter o status de uma execução de trabalho de ingestão
{
"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"
}
}
Documentos
getDocuments: Recuperar documentos com filtros opcionaisupdateDocuments: Atualizar metadados de documentosdeleteDocuments: Excluir documentosresyncDocuments: Ressincronizar documentosfetchUrlContent: Buscar conteúdo de texto de URLs de documentos
{
"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"
}
}
Busca
semantic_search: Realizar busca semânticahybrid_search: Realizar busca híbrida (semântica + palavras-chave)
{
"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
}
}
}
Conexões
create_connection: Criar uma nova conexão com um serviço externolist_connections: Listar todas as conexõesget_connection: Obter detalhes de uma conexão específicaupdate_connection: Atualizar uma conexãorevoke_connection: Revogar uma conexão
{
"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"
}
}
Exemplos de Prompts
Aqui estão alguns exemplos de prompts que você pode usar com Claude ou Cursor após configurar o servidor MCP:
- "Pesquise em minha base de conhecimento do SourceSync informações sobre aprendizado de máquina."
- "Ingira este artigo em minha base de conhecimento do SourceSync: [URL]"
- "Crie um novo namespace no SourceSync para a documentação do meu projeto."
- "Liste todos os documentos no meu namespace do SourceSync."
- "Obtenha o conteúdo de texto do documento [document_id] do meu namespace do SourceSync."
Solução de Problemas
Problemas de Conexão
Se você encontrar problemas ao conectar o servidor MCP do SourceSync.ai:
-
Verifique os Caminhos: Certifique-se de que todos os caminhos na sua configuração sejam caminhos absolutos, não relativos.
-
Verifique as Permissões: Certifique-se de que o arquivo do servidor tenha permissões de execução (
chmod +x dist/index.js). -
Ative o Modo Desenvolvedor: No Claude Desktop, ative o Modo Desenvolvedor e verifique o Arquivo de Log do MCP.
-
Teste o Servidor: Execute o servidor diretamente pela linha de comando:
node /path/to/sourcesyncai-mcp/dist/index.js -
Reinicie o Cliente de IA: Após fazer alterações, reinicie completamente o Claude Desktop ou o Cursor.
-
Verifique as Variáveis de Ambiente: Certifique-se de que todas as variáveis de ambiente obrigatórias estejam configuradas corretamente.
Registro de Depuração
Para registro detalhado, adicione a variável de ambiente DEBUG:
Desenvolvimento
Estrutura do Projeto
src/index.ts: Ponto de entrada principal e configuração do servidorsrc/schemas.ts: Definições de esquema para todas as ferramentassrc/sourcesync.ts: Cliente para interagir com a API do SourceSync.aisrc/sourcesync.types.ts: Definições de tipos TypeScript
Compilação e Testes
# Build the project
npm run build
# Run tests
npm test
Licença
MIT
Links
Fluxo de trabalho de recuperação de conteúdo de documentos:
- Primeiro, use
getDocumentscomincludeConfig.parsedTextFileUrl: truepara obter documentos com suas URLs de conteúdo - Extraia a URL da resposta do documento
- Use
fetchUrlContentpara recuperar o conteúdo real:
{
"name": "fetchUrlContent",
"arguments": {
"url": "https://example.com"
}
}