Skip to main content
Glama

Synapse MCP Server

MIT License
5
  • 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)

Related MCP Servers

  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that enables interaction with Snapshot.org, providing tools to query Snapshot spaces, proposals, and users through natural language.
    Last updated -
    5
    0
    MIT License
    • Apple
  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that enables AI models to interact with SourceSync.ai's knowledge management platform for managing documents, ingesting content from various sources, and performing semantic searches.
    Last updated -
    25
    15
    • Apple
    • Linux
  • -
    security
    -
    license
    -
    quality
    A Model Context Protocol server that provides a standardized interface for interacting with Notion's API, enabling users to list databases, create pages, and search across their Notion workspace.
    Last updated -
    110
    MIT License
    • Apple
  • -
    security
    -
    license
    -
    quality
    A server that implements the Model Context Protocol, providing a standardized way to connect AI models to different data sources and tools.
    Last updated -
    0
    10
    MIT License

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