使用说明
ProtVar MCP服务器
A. 模型上下文协议(MCP) 该服务器将ProtVar蛋白变体数据作为AI可访问的工具公开,使用Spring Boot和Spring AI构建。
建筑
Claude Code / Claude.ai
│
│ HTTP (Streamable HTTP transport)
▼
ProtVar MCP Server (this app)
│
│ REST
▼
ProtVar API (wwwdev / wwwint / prod)
MCP服务器充当一个桥梁-它将ProtVar REST API调用封装为MCP工具,AI客户端可以直接调用。
先决条件
- Java 21
- Maven 3.9+
- Claude 代码命令行工具 (用于本地测试)
本地运行
来自IntelliJ
- 打开
ProtvarMcpApplication.java - 点击绿色▶ 旁边的按钮
main() - 通过以下方式设置活动配置文件 Run → 编辑配置→ 活动配置文件:
dev或int
或通过设置 虚拟机选项:
-Dspring.profiles.active=dev
从终端
# Using Maven
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# Or build and run the JAR
mvn clean package -DskipTests
java -jar target/protvar-mcp-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
档案
| 简介 | ProtVar API目标 |
|---|---|
dev (默认) |
https://wwwdev.ebi.ac.uk/ProtVar/api |
int |
https://wwwint.ebi.ac.uk/ProtVar/api |
验证服务器是否正在运行
该应用程序通过Spring Actuator公开了一个健康端点:
http://localhost:8081/ProtVar/mcp/actuator/health
预期响应: {"status":"UP"}
连接克劳德代码(本地)
服务器运行后,用Claude Code注册它:
claude mcp add protvar-mcp --transport http http://localhost:8081/ProtVar/mcp
验证连接:
claude mcp list
预期产量:
protvar-mcp: http://localhost:8081/ProtVar/mcp (HTTP) - ✓ Connected
在Claude Code会话中,运行 /mcp 列出连接的服务器和可用工具。
要删除或重新配置:
claude mcp remove protvar-mcp
连接克劳德代码(已部署)
# int environment
claude mcp add protvar-mcp-int --transport http https://wwwint.ebi.ac.uk/ProtVar/mcp
# dev environment
claude mcp add protvar-mcp-dev --transport http https://wwwdev.ebi.ac.uk/ProtVar/mcp
对于 Claude.ai (网络产品),通过以下方式将其添加为远程连接器 设置→ 集成→ 远程MCP 使用相同的HTTPS URL。
传输:为什么是HTTP?
| 运输 | 用例 |
|---|---|
stdio |
仅限本地——Claude Code将应用程序作为子流程启动 |
http (流式HTTP) |
本地或远程--通过HTTP/S连接到正在运行的服务器 |
此项目使用 流式HTTP 因此,在开发过程中,可以在本地使用同一台服务器,并将其部署到Kubernetes进行生产使用,而无需对服务器本身进行配置更改。
它跑进去了 无状态 模式(spring.ai.mcp.server.protocol=STATELESS):每个请求都是自包含的--否 Mcp-Session-Id,没有服务器端会话状态,这使得在负载均衡器后面扩展和运行变得简单。“无状态”是流式HTTP传输的一种模式,而不是另一种传输。
关键依赖
| 依赖性 | 目的 |
|---|---|
spring-ai-starter-mcp-server-webmvc |
通过流式HTTP公开MCP工具 |
spring-boot-starter-web |
嵌入式Tomcat/Spring MVC |
spring-boot-starter-actuator |
健康终点位于 /actuator/health |
spring-boot-devtools |
本地开发期间的热重载 |
注:
spring-ai-starter-mcp-server(无-webmvc)仅支持STDIO传输,不会公开HTTP端点。
部署(Kubernetes/Helm)
该应用程序通过GitLab CI和Helm charts部署。
| 分支 | 环境 | Helm值 |
|---|---|---|
dev |
测试版/开发版 | values-dev.yaml |
int |
内部 | values-int.yaml |
main |
生产 | 尚未配置 |
CI管道运行: test → build → build_docker_image → deploy
Kubernetes Ingress在 /ProtVar 在环境主机名上。Ingress配置了扩展代理超时(proxy-read-timeout: 3600)以支持长期流式HTTP连接。
URL路由链(已部署)
请求在到达应用程序之前会经过负载均衡器(VTM)。LB匹配路径前缀并转发 完整路径 --它不会去掉前缀。
Browser/MCP client
│ GET https://wwwdev.ebi.ac.uk/ProtVar/mcp
▼
VTM Load Balancer
│ prefix /ProtVar/mcp → pool: w3-protvar-mcp (this app)
│ prefix /ProtVar/api → pool: w3-protvar-backend
│ prefix /ProtVar → pool: w3-protvar-frontend
▼
MCP Server (Spring Boot)
│ context-path: /ProtVar (stripped by Spring)
│ remaining path: /mcp
│
├─ /mcp → MCP Streamable HTTP endpoint (requires MCP client)
├─ /mcp/status → StatusController (returns "ProtVar MCP Server is running")
└─ /mcp/actuator → Spring Actuator (health, info)
项目结构
src/
└── main/
└── java/uk/ac/ebi/protvar/mcp/
├── ProtvarMcpApplication.java # Entry point, registers all tools
├── config/
│ └── RestClientConfig.java # RestClient bean pointing to ProtVar API
└── tools/
├── ProtvarClient.java # Shared HTTP wrapper (graceful 404 handling)
├── MappingTool.java # mapVariant (single variant)
├── BatchMappingTool.java # mapVariants (one or more variants)
├── AnnotationTool.java # getFunction, getPopulation, getStructure
├── PredictionTool.java # getFoldx, getPockets, getInteractions
└── SearchTool.java # semanticSearch, searchVariants
resources/
├── application.properties # Base config (port, MCP path, context path)
├── application-dev.properties # dev API URL
└── application-int.properties # int API URL
工具
看 docs/TOOLS.md 获取完整的工具参考——描述、参数和配置。