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+
- 克劳德代码CLI (用于本地测试)
______________________________________________________________________
本地运行
来自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/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-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连接。
______________________________________________________________________
项目结构
src/
└── main/
└── java/uk/ac/ebi/protvar/mcp/
├── ProtvarMcpApplication.java # Entry point, registers MCP tools
├── config/
│ └── RestClientConfig.java # RestClient bean pointing to ProtVar API
└── tools/
└── FoldxTool.java # @Tool: FoldX predictions
resources/
├── application.properties # Base config (port, MCP path, context path)
├── application-dev.properties # dev API URL
└── application-int.properties # int API URL______________________________________________________________________
添加新工具
- 创建新
@Component类在tools/ - 用注释方法
@Tool(description = "...") - 在中注册bean
ProtvarMcpApplication:
@Bean
public ToolCallbackProvider protvarTools(FoldxTool foldxTool, MyNewTool myNewTool) {
return MethodToolCallbackProvider.builder()
.toolObjects(foldxTool, myNewTool)
.build();
}未来改进(非常有用)
您可以创建一个共享库,而不是通过HTTP调用API:
protvar-common然后,这两个应用程序共享逻辑。
protvar-api
protvar-mcp
↓
protvar-common这避免了HTTP开销。
