Skip to main content
Glama

Servidor MCP de SourceSync.ai

insignia de herrería

Implementación de un servidor de Protocolo de Contexto de Modelo (MCP) para la API de SourceSync.ai . Este servidor permite que los modelos de IA interactúen con la plataforma de gestión del conocimiento de SourceSync.ai mediante una interfaz estandarizada.

Características

  • Administrar espacios de nombres para organizar el conocimiento

  • Ingerir contenido de diversas fuentes (texto, URL, sitios web, servicios externos)

  • Recupere, actualice y administre documentos almacenados en su base de conocimientos

  • Realice búsquedas semánticas e híbridas en su base de conocimientos

  • Acceda al contenido del documento directamente desde las URL de texto analizadas

  • Administrar conexiones a servicios externos

  • Compatibilidad con configuración predeterminada para una integración perfecta con IA

Related MCP server: Jira MCP Server

Instalación

Ejecutando con npx

# Install and run with your API key and tenant ID
env SOURCESYNC_API_KEY=your_api_key npx -y sourcesyncai-mcp

Instalación mediante herrería

Para instalar sourcesyncai-mcp para Claude Desktop automáticamente a través de Smithery :

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

Instalación 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

Ejecutando en el cursor

Para configurar SourceSync.ai MCP en Cursor:

  1. Abrir configuración del cursor

  2. Vaya a Features > MCP Servers

  3. Haga clic en + Add New MCP Server

  4. Introduzca lo siguiente:

    • Nombre: sourcesyncai-mcp (o su nombre preferido)

    • Tipo: command

    • Comando: env SOURCESYNCAI_API_KEY=your-api-key npx -y sourcesyncai-mcp

Después de agregar, puede usar las herramientas de SourceSync.ai con las funciones de inteligencia artificial de Cursor describiendo sus necesidades de gestión de conocimientos.

Corriendo en Windsurf

Agregue esto a su ./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"
      }
    }
  }
}

Ejecutándose en Claude Desktop

Para utilizar este servidor MCP con Claude Desktop:

  1. Localice el archivo de configuración de Claude Desktop:

    • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json

    • Ventanas : %APPDATA%\Claude\claude_desktop_config.json

    • Linux : ~/.config/Claude/claude_desktop_config.json

  2. Edite el archivo de configuración para agregar el servidor MCP de 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"
      }
    }
  }
}
  1. Guarde el archivo de configuración y reinicie Claude Desktop

Configuración

Variables de entorno

Requerido

  • SOURCESYNC_API_KEY : Su clave API de SourceSync.ai (obligatoria)

Opcional

  • SOURCESYNC_NAMESPACE_ID : ID de espacio de nombres predeterminado que se utilizará para las operaciones

  • SOURCESYNC_TENANT_ID : Su ID de inquilino (opcional)

Ejemplos de configuración

Configuración básica con valores predeterminados:

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

Herramientas disponibles

Autenticación

  • validate_api_key : valida una clave API de SourceSync.ai

{
  "name": "validate_api_key",
  "arguments": {}
}

Espacios de nombres

  • create_namespace : Crea un nuevo espacio de nombres

  • list_namespaces : Lista todos los espacios de nombres

  • get_namespace : Obtener detalles de un espacio de nombres específico

  • update_namespace : Actualizar un espacio de nombres

  • delete_namespace : Eliminar un espacio de nombres

{
  "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"
  }
}

Ingestión de datos

  • ingest_text : Ingerir contenido de texto

  • ingest_urls : Ingerir contenido de las URL

  • ingest_sitemap : Ingerir contenido de un mapa del sitio

  • ingest_website : Ingerir contenido de un sitio web

  • ingest_notion : Ingerir contenido desde Notion

  • ingest_google_drive : Ingerir contenido desde Google Drive

  • ingest_dropbox : Ingerir contenido desde Dropbox

  • ingest_onedrive : Ingerir contenido desde OneDrive

  • ingest_box : Ingerir contenido de Box

  • get_ingest_job_run_status : obtener el estado de la ejecución de un trabajo de ingestión

{
  "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 : recupera documentos con filtros opcionales

  • updateDocuments : Actualizar metadatos del documento

  • deleteDocuments : Eliminar documentos

  • resyncDocuments : Resincronizar documentos

  • fetchUrlContent : recupera el contenido de texto de las URL de los 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"
  }
}

Buscar

  • semantic_search : Realizar búsqueda semántica

  • hybrid_search : Realizar una búsqueda híbrida (semántica + palabra clave)

{
  "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
    }
  }
}

Conexiones

  • create_connection : Crea una nueva conexión a un servicio externo

  • list_connections : Lista todas las conexiones

  • get_connection : Obtener detalles de una conexión específica

  • update_connection : Actualizar una conexión

  • revoke_connection : Revocar una conexión

{
  "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"
  }
}

Ejemplos de indicaciones

A continuación se muestran algunos ejemplos de indicaciones que puede utilizar con Claude o Cursor después de configurar el servidor MCP:

  • "Busca información sobre aprendizaje automático en mi base de conocimientos de SourceSync".

  • "Ingresar este artículo en mi base de conocimientos de SourceSync: [URL]"

  • "Crear un nuevo espacio de nombres en SourceSync para la documentación de mi proyecto".

  • "Enumere todos los documentos en mi espacio de nombres SourceSync".

  • "Obtener el contenido de texto del documento [document_id] desde mi espacio de nombres SourceSync".

Solución de problemas

Problemas de conexión

Si tiene problemas para conectarse al servidor MCP de SourceSync.ai:

  1. Verificar rutas : asegúrese de que todas las rutas en su configuración sean rutas absolutas, no relativas.

  2. Comprobar permisos : asegúrese de que el archivo del servidor tenga permisos de ejecución ( chmod +x dist/index.js ).

  3. Habilitar el modo de desarrollador : en Claude Desktop, habilite el modo de desarrollador y verifique el archivo de registro de MCP.

  4. Probar el servidor : Ejecute el servidor directamente desde la línea de comandos:

    node /path/to/sourcesyncai-mcp/dist/index.js
  5. Reiniciar AI Client : después de realizar cambios, reinicie completamente Claude Desktop o Cursor.

  6. Verificar las variables de entorno : asegúrese de que todas las variables de entorno necesarias estén configuradas correctamente.

Registro de depuración

Para un registro detallado, agregue la variable de entorno DEBUG:

Desarrollo

Estructura del proyecto

  • src/index.ts : Punto de entrada principal y configuración del servidor

  • src/schemas.ts : Definiciones de esquemas para todas las herramientas

  • src/sourcesync.ts : Cliente para interactuar con la API de SourceSync.ai

  • src/sourcesync.types.ts : definiciones de tipos de TypeScript

Construcción y pruebas

# Build the project
npm run build

# Run tests
npm test

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Campo de golf

Flujo de trabajo de recuperación de contenido de documentos:

  1. Primero, use getDocuments con includeConfig.parsedTextFileUrl: true para obtener los documentos con sus URL de contenido.

  2. Extraer la URL de la respuesta del documento

  3. Utilice fetchUrlContent para recuperar el contenido real:

{
  "name": "fetchUrlContent",
  "arguments": {
    "url": "https://example.com"
  }
}

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pbteja1998/sourcesyncai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server