Synapse MCP Server
A Model Context Protocol (MCP) server that enables AI agent access to Synapse entities (Datasets, Projects, Folders, Files, Tables, and more).
You (your AI agent) can:
- Retrieve entity metadata, annotations, and children, and search across all entity types
- Inspect provenance/lineage for an entity version
- Audit access control (ACLs and your own permissions) across a project subtree
- Read wikis — pages, table of contents, and revision history
- Look up teams (members, invitations, membership status) and user profiles
- Explore challenges: evaluation queues, submissions, and scoring statuses
- Browse JSON schemas and their validation results, plus schema organizations
- List curation tasks and their linked resources, set up record-based curation tasks from a JSON schema, and read form submissions
- Resolve entities by exact name or MD5 hash and validate Synapse IDs
- Create, update, and delete Synapse objects — entities, ACLs, table columns, teams, evaluations, submissions, organizations, and JSON schemas (metadata only, no file content)
Available Tools
The catalog includes both read tools and write/destructive tools (create/update/delete) across the entity, schema, team, evaluation, submission, organization, and curation domains. The server never uploads or downloads file content — File entities are created only via an external URL or an existing file handle, never from local file bytes. The single exception is create_record_based_curation_task, which uploads a header-only CSV template that the server generates from a registered JSON schema's property names, since a RecordSet must be backed by a CSV.
Read and write tools are dispatched through separate proxies — call_read_tool and call_write_tool — so a client that gates permissions by tool name can allow reads while withholding writes to run the server read-only.
Available Resources
Resources provide ready-to-present context that clients can pull without extra parameters. When you need to search or compute derived results, prefer tools instead.
⚠️ Terms of Service Compliance Notice
Important: When using this MCP server with external AI services (such as Claude, ChatGPT, or other cloud-based models), please be aware that:
- You will use your personal Synapse access token to retrieve data
- Data sent to external AI services may be stored, logged, or used for model training
- The Synapse Terms of Service prohibit redistribution of data, which may include storage or use by third-party AI providers
Recommended Safe Usage:
- ✅ Use with enterprise AI deployments with data residency guarantees
- ✅ Use with local/self-hosted AI models
- ✅ Leverage responsible AI use training if provided
- ❌ Avoid use with consumer AI services that may store or train on your data
You are responsible for ensuring your usage complies with the Synapse Terms of Service.
Getting Started
The Synapse MCP server can be used as a remote hosted server (recommended) or installed locally from source. Choose the approach that fits your needs.
Remote Server (Recommended)
The hosted server is available at:
Authentication uses OAuth2 -- your MCP client will open a browser window for you to log in to Synapse. No API keys or tokens to manage.
Below are setup instructions for popular AI clients. If your client is not listed, use the generic JSON config.
Generic MCP JSON Config
Most MCP-compatible clients accept a JSON configuration block. Add the following to your client's MCP config file:
{
"mcpServers": {
"synapse": {
"url": "https://mcp.synapse.org/mcp",
"type": "http"
}
}
}
Claude Desktop
Go to Settings > Connectors > Add custom connector and enter the URL https://mcp.synapse.org/mcp.
Claude Code (CLI)
claude mcp add --transport http synapse -- https://mcp.synapse.org/mcp
VS Code / GitHub Copilot
VS Code's MCP client does not yet fully support OAuth Dynamic Client Registration (DCR). To connect to the remote server, follow these steps:
Step 1: Register a client
Run this command once to register an OAuth client with the MCP server:
curl -X POST https://mcp.synapse.org/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "vscode-synapse",
"redirect_uris": ["http://127.0.0.1"],
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"token_endpoint_auth_method": "none"
}'
Save the client_id from the response (e.g., c3dfaf80-126c-4f46-80ab-114747fcc3b3).
Step 2: Configure VS Code
Create or edit .vscode/mcp.json in your workspace:
{
"servers": {
"synapse": {
"url": "https://mcp.synapse.org/mcp",
"type": "http"
}
}
}
Step 3: Complete the OAuth flow
When you start the server, VS Code will open a browser to an authorization URL. Replace the client_id value in the URL with your registered client_id from Step 1, then press Enter to continue the Synapse login flow.
For example, change client_id=100441 to client_id=YOUR_CLIENT_ID in the browser address bar.
Alternatively, you can use the Local Server setup with a Personal Access Token, which does not require OAuth.
Cursor
Add to Cursor Settings > MCP > + Add new global MCP server, or add to your project's .cursor/mcp.json:
{
"mcpServers": {
"synapse": {
"url": "https://mcp.synapse.org/mcp",
"type": "http"
}
}
}
Local Server
Run the server locally for development, self-hosting, or offline use. The local server uses stdio transport by default, which is what most MCP clients expect for command-based servers.
Note:
synapse-mcpis not currently published on PyPI. You must install from source.
Install
git clone https://github.com/Sage-Bionetworks/synapse-mcp.git
cd synapse-mcp
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
After installation, the synapse-mcp command is available in your virtual environment.
Authentication for Local Server
For local use, authenticate with a Synapse Personal Access Token (PAT) by setting the SYNAPSE_PAT environment variable:
export SYNAPSE_PAT="your_synapse_pat_here"
To create a PAT, visit your Synapse Personal Access Tokens page.
MCP Client Configuration (Local)
Important: The
synapse-mcpcommand must be on your PATH. If you installed in a virtual environment, either activate it first or use the full path to the binary (e.g.,/path/to/.venv/bin/synapse-mcp).
Generic JSON config (stdio):
{
"mcpServers": {
"synapse": {
"command": "/path/to/.venv/bin/synapse-mcp",
"env": {
"SYNAPSE_PAT": "your_synapse_pat_here"
}
}
}
}
Claude Code (local):
claude mcp add synapse -e SYNAPSE_PAT=your_synapse_pat_here -- /path/to/.venv/bin/synapse-mcp
VS Code / GitHub Copilot (local):
In .vscode/mcp.json:
{
"servers": {
"synapse": {
"command": "/path/to/.venv/bin/synapse-mcp",
"env": {
"SYNAPSE_PAT": "your_synapse_pat_here"
}
}
}
}
Cursor (local):
{
"mcpServers": {
"synapse": {
"command": "/path/to/.venv/bin/synapse-mcp",
"env": {
"SYNAPSE_PAT": "your_synapse_pat_here"
}
}
}
}
Configuration
Environment Selection
You can configure which Synapse platform instance to connect to by setting the SYNAPSE_ENV environment variable:
prod(default) -- Production instance at synapse.orgstaging-- Staging instance at staging.synapse.orgdev-- Development instance at dev.synapse.org
If not set, the server defaults to prod.
Authentication
For contributor/development setup details, see DEVELOPMENT.md.
Tool Discovery
To keep the LLM's context small, the server does not expose the full tool catalog on every call. The default view is just two always-visible tools — get_entity and search_synapse — plus a synthetic search_tools / call_tool pair. To reach any other tool, the LLM issues a natural-language query to search_tools (a BM25-ranked search over tool names, descriptions, synonyms, and siblings) and then invokes the chosen tool via call_tool. See doc/tool-authoring.md for the conventions each tool follows.
Example Prompts
See usage examples
Contributing
Contributions are welcome! Please see our Development Guide for instructions on setting up a development environment, running tests, and more.
License
MIT
Contact
For issues, please file an issue. For other contact, see https://sagebionetworks.org/contact.