
Synapse MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它通过 RESTful API 暴露 Synapse 实体(数据集、项目、文件夹、文件、表格)及其注释,从而实现对 Synapse 数据资源进行编程访问。
README
Synapse MCP 服务器
一个模型上下文协议 (MCP) 服务器,它公开 Synapse 实体(数据集、项目、文件夹、文件、表格)及其注释,并支持 OAuth2 身份验证。
概述
此服务器提供了一个 RESTful API,用于通过模型上下文协议 (MCP) 访问 Synapse 实体及其注释。它允许您:
- 使用 Synapse 进行身份验证
- 按 ID 检索实体
- 按名称检索实体
- 获取实体注释
- 获取实体子项
- 根据各种条件查询实体
- 查询 Synapse 表格
- 获取 Croissant 元数据格式的数据集
安装
# 克隆存储库
git clone https://github.com/SageBionetworks/synapse-mcp.git
cd synapse-mcp
# 创建一个虚拟环境
python -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
# 安装依赖项
pip install -e .
从 PyPI 安装
# 从 PyPI 安装
pip install synapse-mcp
用法
启动服务器
python server.py --host 127.0.0.1 --port 9000
这将在默认端口 (9000) 上启动 MCP 服务器。
使用 CLI
# 使用 CLI 启动服务器
synapse-mcp --host 127.0.0.1 --port 9000 --debug
命令行选项
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)
运行测试
# 运行所有带覆盖率的测试
./run_tests.sh
# 或者直接运行 pytest
python -m pytest
测试服务器
python examples/client_example.py
身份验证方法
环境变量
服务器支持以下环境变量:
HOST
: 要绑定的主机 (默认: 127.0.0.1)PORT
: 要监听的端口 (默认: 9000)MCP_TRANSPORT
: 要使用的传输协议 (默认: stdio)stdio
: 使用标准输入/输出进行本地开发sse
: 使用服务器发送事件进行云部署
MCP_SERVER_URL
: 服务器的公共 URL (默认: mcp://127.0.0.1:9000)- 用于 OAuth2 重定向和服务器信息
服务器支持两种身份验证方法:
- Auth Token: 使用 Synapse 身份验证令牌进行身份验证
- OAuth2: 使用 Synapse 的 OAuth2 服务器进行身份验证
- 需要在 Synapse 中注册 OAuth2 客户端 (https://www.synapse.org/#!PersonalAccessTokens:OAuth)
API 端点
服务器信息
GET /info
- 获取服务器信息
工具
GET /tools
- 列出可用工具POST /tools/authenticate
- 使用 Synapse 进行身份验证POST /tools/get_oauth_url
- 获取 OAuth2 授权 URLPOST /tools/get_entity
- 按 ID 或名称获取实体POST /tools/get_entity_annotations
- 获取实体的注释POST /tools/get_entity_children
- 获取容器实体的子实体POST /tools/query_entities
- 根据各种条件查询实体POST /tools/query_table
- 查询 Synapse 表格
资源
GET /resources
- 列出可用资源GET /resources/entity/{id}
- 按 ID 获取实体GET /resources/entity/{id}/annotations
- 获取实体注释GET /resources/entity/{id}/children
- 获取实体子项GET /resources/query/entities/{entity_type}
- 按类型查询实体GET /resources/query/entities/parent/{parent_id}
- 按父 ID 查询实体GET /resources/query/entities/name/{name}
- 按名称查询实体GET /resources/query/table/{id}/{query}
- 使用类似 SQL 的语法查询表格
OAuth2 端点
GET /oauth/login
- 重定向到 Synapse OAuth2 登录页面GET /oauth/callback
- 处理来自 Synapse 的 OAuth2 回调
示例
身份验证
您需要使用真实的 Synapse 凭据进行身份验证才能使用服务器:
import requests
# 使用 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)
# 或者,您可以使用 API 密钥进行身份验证
response = requests.post("http://127.0.0.1:9000/tools/authenticate", json={
"api_key": "your-synapse-api-key"
})
OAuth2 身份验证
1. 重定向流程(基于浏览器)
将用户定向到 OAuth 登录 URL:
http://127.0.0.1:9000/oauth/login?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI
2. 基于 API 的流程
对于编程使用,首先获取授权 URL:
import requests
# 获取 OAuth2 授权 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"]
# 将用户重定向到 auth_url
获取实体
import requests
# 按 ID 获取实体
response = requests.get("http://127.0.0.1:9000/resources/entity/syn123456") # 替换为真实的 Synapse ID
entity = response.json()
print(entity)
获取实体注释
import requests
# 获取实体的注释
response = requests.get("http://127.0.0.1:9000/resources/entity/syn123456/annotations") # 替换为真实的 Synapse ID
annotations = response.json()
print(annotations)
查询实体
import requests
# 查询项目中的文件
response = requests.get("http://127.0.0.1:9000/resources/query/entities/parent/syn123456", params={ # 替换为真实的 Synapse ID
"entity_type": "file"
})
files = response.json()
print(files)
查询表格
import requests
# 查询表格
table_id = "syn123456" # 替换为真实的 Synapse 表格 ID
query = "SELECT * FROM syn123456 LIMIT 10" # 替换为真实的 Synapse 表格 ID
response = requests.get(f"http://127.0.0.1:9000/resources/query/table/{table_id}/{query}")
table_data = response.json()
print(table_data)
以 Croissant 格式获取数据集
import requests
import json
# 以 Croissant 格式获取公共数据集
response = requests.get("http://127.0.0.1:9000/resources/croissant/datasets")
croissant_data = response.json()
# 保存到文件
with open("croissant_metadata.json", "w") as f:
json.dump(croissant_data, f, indent=2)
部署
Docker
您可以使用 Docker 构建和运行服务器:
# 构建 Docker 镜像
docker build -t synapse-mcp .
# 运行容器
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
部署到 fly.io:
# 安装 flyctl
curl -L https://fly.io/install.sh | sh
# 登录到 fly.io
flyctl auth login
# 启动应用程序
flyctl launch
# 设置 OAuth2 密钥
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
# 部署
flyctl deploy
与 Claude Desktop 集成
您可以将此 Synapse MCP 服务器与 Claude Desktop 集成,以使 Claude 能够直接在您的对话中访问和处理 Synapse 数据。
设置说明
- 首先,克隆存储库并安装要求:
# 克隆存储库
git clone https://github.com/susheel/synapse-mcp.git
cd synapse-mcp
# 创建一个虚拟环境
python -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
# 安装依赖项
pip install -e .
-
配置 Claude Desktop 以使用 Synapse MCP 服务器:
- 打开 Claude Desktop
- 单击 Claude 菜单并选择“Settings...”
- 单击左侧栏中的“Developer”
- 单击“Edit Config”
- 将以下配置添加到
mcpServers
部分:
"synapse-mcp": {
"command": "python",
"args": [
"/path/to/synapse-mcp/server.py",
"--host", "127.0.0.1",
"--port", "9000"
]
}
-
保存配置文件并重新启动 Claude Desktop
-
您现在可以在与 Claude 的对话中使用 Synapse 数据。例如:
- "Get the entity with ID syn123456 from Synapse"
- "Query all files in the Synapse project syn123456"
- "Get annotations for the Synapse entity syn123456"
贡献
欢迎贡献!请随时提交 Pull Request。
许可证
MIT
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。