Skip to main content
Glama

Synapse MCP Server

MIT License
2
  • Linux
  • Apple

Servidor Synapse MCP

Un servidor de Protocolo de contexto de modelo (MCP) que expone entidades de Synapse (conjuntos de datos, proyectos, carpetas, archivos, tablas) con sus anotaciones y admite la autenticación OAuth2.

Descripción general

Este servidor proporciona una API RESTful para acceder a las entidades de Synapse y sus anotaciones mediante el Protocolo de Contexto de Modelo (MCP). Permite:

  • Autenticarse con Synapse
  • Recuperar entidades por ID
  • Recuperar entidades por nombre
  • Obtener anotaciones de entidades
  • Obtener entidades hijas
  • Consultar entidades en función de varios criterios
  • Consultar tablas de Synapse
  • Obtener conjuntos de datos en formato de metadatos de Croissant

Instalación

# Clone the repository git clone https://github.com/SageBionetworks/synapse-mcp.git cd synapse-mcp # Create a virtual environment python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies pip install -e .

Instalación desde PyPI

# Install from PyPI pip install synapse-mcp

Uso

Iniciando el servidor

python server.py --host 127.0.0.1 --port 9000

Esto iniciará el servidor MCP en el puerto predeterminado (9000).

Usando la CLI

# Start the server using the CLI synapse-mcp --host 127.0.0.1 --port 9000 --debug

Opciones de la línea de comandos

usage: server.py [-h] [--host HOST] [--port PORT] [--debug] Run the Synapse MCP server with OAuth2 support options: -h, --help show this help message and exit --host HOST Host to bind to --port PORT Port to listen on --debug Enable debug logging --server-url URL Public URL of the server (for OAuth2 redirect)

Ejecución de pruebas

# Run all tests with coverage ./run_tests.sh # Or run pytest directly python -m pytest

Probando el servidor

python examples/client_example.py

Métodos de autenticación

Variables de entorno

El servidor admite las siguientes variables de entorno:

  • HOST : El host al que vincularse (predeterminado: 127.0.0.1)
  • PORT : El puerto para escuchar (predeterminado: 9000)
  • MCP_TRANSPORT : El protocolo de transporte a utilizar (predeterminado: stdio)
    • stdio : utiliza entrada/salida estándar para el desarrollo local
    • sse : Utilice eventos enviados por el servidor para la implementación en la nube
  • MCP_SERVER_URL : La URL pública del servidor (predeterminado: mcp://127.0.0.1:9000)
    • Se utiliza para la redirección OAuth2 y la información del servidor.

El servidor admite dos métodos de autenticación:

  1. Token de autenticación : autentique mediante un token de autenticación de Synapse
  2. OAuth2 : Autenticación mediante el servidor OAuth2 de Synapse

Puntos finales de API

Información del servidor

  • GET /info - Obtener información del servidor

Herramientas

  • GET /tools - Lista de herramientas disponibles
  • POST /tools/authenticate - Autenticarse con Synapse
  • POST /tools/get_oauth_url - Obtener la URL de autorización de OAuth2
  • POST /tools/get_entity - Obtener una entidad por ID o nombre
  • POST /tools/get_entity_annotations - Obtener anotaciones para una entidad
  • POST /tools/get_entity_children - Obtener entidades secundarias de una entidad contenedora
  • POST /tools/query_entities - Consultar entidades según varios criterios
  • POST /tools/query_table - Consultar una tabla de Synapse

Recursos

  • GET /resources - Lista de recursos disponibles
  • GET /resources/entity/{id} - Obtener la entidad por ID
  • GET /resources/entity/{id}/annotations - Obtener anotaciones de entidad
  • GET /resources/entity/{id}/children - Obtener hijos de la entidad
  • GET /resources/query/entities/{entity_type} - Consultar entidades por tipo
  • GET /resources/query/entities/parent/{parent_id} - Consultar entidades por ID principal
  • GET /resources/query/entities/name/{name} - Consultar entidades por nombre
  • GET /resources/query/table/{id}/{query} - Consulta una tabla con sintaxis similar a SQL

Puntos finales de OAuth2

  • GET /oauth/login - Redireccionar a la página de inicio de sesión de Synapse OAuth2
  • GET /oauth/callback - Gestionar la devolución de llamada OAuth2 desde Synapse

Ejemplos

Autenticación

Debes autenticarte con credenciales reales de Synapse para usar el servidor:

import requests # Authenticate with Synapse response = requests.post("http://127.0.0.1:9000/tools/authenticate", json={ "email": "your-synapse-email@example.com", "password": "your-synapse-password" }) result = response.json() print(result) # Alternatively, you can authenticate with an API key response = requests.post("http://127.0.0.1:9000/tools/authenticate", json={ "api_key": "your-synapse-api-key" })

Autenticación OAuth2

1. Flujo de redirección (basado en navegador)

Dirigir a los usuarios a la URL de inicio de sesión de OAuth:

http://127.0.0.1:9000/oauth/login?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI
2. Flujo basado en API

Para uso programático, primero obtenga la URL de autorización:

import requests # Get OAuth2 authorization URL response = requests.post("http://127.0.0.1:9000/tools/get_oauth_url", json={ "client_id": "YOUR_CLIENT_ID", "redirect_uri": "YOUR_REDIRECT_URI" }) auth_url = response.json()["auth_url"] # Redirect user to auth_url

Obtener una entidad

import requests # Get an entity by ID response = requests.get("http://127.0.0.1:9000/resources/entity/syn123456") # Replace with a real Synapse ID entity = response.json() print(entity)

Obtener anotaciones de entidades

import requests # Get annotations for an entity response = requests.get("http://127.0.0.1:9000/resources/entity/syn123456/annotations") # Replace with a real Synapse ID annotations = response.json() print(annotations)

Consulta de entidades

import requests # Query for files in a project response = requests.get("http://127.0.0.1:9000/resources/query/entities/parent/syn123456", params={ # Replace with a real Synapse ID "entity_type": "file" }) files = response.json() print(files)

Consultar una tabla

import requests # Query a table table_id = "syn123456" # Replace with a real Synapse table ID query = "SELECT * FROM syn123456 LIMIT 10" # Replace with a real Synapse table ID response = requests.get(f"http://127.0.0.1:9000/resources/query/table/{table_id}/{query}") table_data = response.json() print(table_data)

Obtener conjuntos de datos en formato Croissant

import requests import json # Get public datasets in Croissant format response = requests.get("http://127.0.0.1:9000/resources/croissant/datasets") croissant_data = response.json() # Save to file with open("croissant_metadata.json", "w") as f: json.dump(croissant_data, f, indent=2)

Despliegue

Estibador

Puedes construir y ejecutar el servidor usando Docker:

# Build the Docker image docker build -t synapse-mcp . # Run the container docker run -p 9000:9000 -e SYNAPSE_OAUTH_CLIENT_ID=your_client_id -e SYNAPSE_OAUTH_CLIENT_SECRET=your_client_secret -e SYNAPSE_OAUTH_REDIRECT_URI=your_redirect_uri synapse-mcp docker run -p 9000:9000 -e MCP_TRANSPORT=sse -e MCP_SERVER_URL=mcp://your-domain:9000 synapse-mcp

Fly.io

Implementar en fly.io:

# Install flyctl curl -L https://fly.io/install.sh | sh # Login to fly.io flyctl auth login # Launch the app flyctl launch # Set OAuth2 secrets flyctl secrets set SYNAPSE_OAUTH_CLIENT_ID=your_client_id flyctl secrets set SYNAPSE_OAUTH_CLIENT_SECRET=your_client_secret flyctl secrets set SYNAPSE_OAUTH_REDIRECT_URI=https://your-app-name.fly.dev/oauth/callback flyctl secrets set MCP_TRANSPORT=sse flyctl secrets set MCP_SERVER_URL=mcp://your-app-name.fly.dev:9000 # Deploy flyctl deploy

Integración con Claude Desktop

Puede integrar este servidor Synapse MCP con Claude Desktop para permitir que Claude acceda y trabaje con datos de Synapse directamente en sus conversaciones.

Instrucciones de configuración

  1. Primero, clone el repositorio e instale los requisitos:
# Clone the repository git clone https://github.com/susheel/synapse-mcp.git cd synapse-mcp # Create a virtual environment python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies pip install -e .
  1. Configurar Claude Desktop para utilizar el servidor Synapse MCP:
    • Abra Claude Desktop
    • Haga clic en el menú Claude y seleccione "Configuración..."
    • Haga clic en "Desarrollador" en la barra de la izquierda.
    • Haga clic en "Editar configuración"
    • Agregue la siguiente configuración a la sección mcpServers :
"synapse-mcp": { "command": "python", "args": [ "/path/to/synapse-mcp/server.py", "--host", "127.0.0.1", "--port", "9000" ] }
  1. Guarde el archivo de configuración y reinicie Claude Desktop
  2. Ahora puedes usar los datos de Synapse en tus conversaciones con Claude. Por ejemplo:
    • Obtener la entidad con ID syn123456 de Synapse
    • Consultar todos los archivos del proyecto Synapse syn123456
    • Obtener anotaciones para la entidad Synapse syn123456

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

Licencia

Instituto Tecnológico de Massachusetts (MIT)

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

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

Un servidor de protocolo de contexto de modelo que expone entidades de Synapse (conjuntos de datos, proyectos, carpetas, archivos, tablas) con sus anotaciones, lo que permite el acceso programático a los recursos de datos de Synapse a través de una API RESTful.

  1. Descripción general
    1. Instalación
      1. Instalación desde PyPI
    2. Uso
      1. Iniciando el servidor
      2. Usando la CLI
      3. Opciones de la línea de comandos
      4. Ejecución de pruebas
      5. Probando el servidor
    3. Métodos de autenticación
      1. Variables de entorno
    4. Puntos finales de API
      1. Información del servidor
      2. Herramientas
      3. Recursos
      4. Puntos finales de OAuth2
    5. Ejemplos
      1. Autenticación
      2. Autenticación OAuth2
      3. Obtener una entidad
      4. Obtener anotaciones de entidades
      5. Consulta de entidades
      6. Consultar una tabla
      7. Obtener conjuntos de datos en formato Croissant
    6. Despliegue
      1. Estibador
      2. Fly.io
      3. Integración con Claude Desktop
      4. Instrucciones de configuración
    7. Contribuyendo
      1. Licencia

        Related MCP Servers

        • A
          security
          F
          license
          A
          quality
          A Model Context Protocol server implementation for interacting with Salesforce through its REST API.
          Last updated -
          4
          10
          TypeScript
        • -
          security
          F
          license
          -
          quality
          A Model Context Protocol server that provides a comprehensive interface for interacting with the ConnectWise Manage API, simplifying API discovery, execution, and management for both developers and AI assistants.
          Last updated -
          46
          2
          Python
          • Linux
          • Apple
        • -
          security
          F
          license
          -
          quality
          A Model Context Protocol server for accessing Confluence API using Personal Access Tokens, enabling users to retrieve space lists, view pages, create new pages, and update existing content.
          Last updated -
          TypeScript
        • -
          security
          A
          license
          -
          quality
          A Model Context Protocol server that exposes over 200+ APIs from API.market as MCP resources, allowing large language models to discover and interact with various APIs through natural language commands.
          Last updated -
          111
          2
          TypeScript
          MIT License
          • Apple

        View all related MCP servers

        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/susheel/synapse-mcp'

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