SpringBoot MCP服务器
使用SpringBoot和SpringAI构建的模型上下文协议(MCP)服务器,通过标准化的协议接口提供AI驱动的工具和资源。
特性
- MCP协议合规性:全面实施模型上下文协议规范
- AI驱动的工具:使用SpringAI进行文本生成和数据分析
- RESTful API:基于HTTP的MCP通信
- 可扩展架构:易于添加新工具和资源
- 生产就绪:基于SpringBoot最佳实践构建
可用工具
1.文本生成(generate_text)
根据提示使用AI生成文本内容。
参数:
prompt(string,必填):用于生成内容的文本提示maxTokens(整数,可选):要生成的最大令牌数(默认值:100)
2.光学代码生成器(optic_code_generator)
生成用于数据转换的光学代码片段——灵感来自Rush的许多才能。
参数:
schema(字符串,可选):在光学代码中使用的模式名称(默认值:“schema”)view(字符串,可选):在光学代码中使用的视图名称(默认值:“view”)
3.光学代码验证器(verify_optic_code)
验证光学代码的语法和逻辑正确性(叛逆随机验证)。
参数:
optic_code(字符串,必填):用于验证语法和有效性的光学代码
4.MarkLogic文档助手(marklogic_docs)
帮助您了解MarkLogic文档和指导。
参数:
prompt(string,必填):描述MarkLogic帮助您所需内容的用户提示
可用资源
mcp://server/info:服务器信息和功能mcp://tools/examples:如何使用可用工具的示例
先决条件
- Java 17或更高版本
- 8.5级或更高
入门指南
1.克隆和构建
./gradlew build2.配置AI(可选)
要启用AI功能,您有几个配置Azure OpenAI凭据的选项:
选项A:使用.env文件(建议用于开发)
创建一个 .env 项目根目录中的文件:
# Azure OpenAI Configuration - Keep this file secret!
AZURE_OPENAI_API_KEY=your-azure-openai-api-key
AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-35-turbo重要提示: 这 .env git会自动忽略该文件,并且不会将其提交到版本控制中。
选项B:使用环境变量
export AZURE_OPENAI_API_KEY=your-azure-openai-api-key
export AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
export AZURE_OPENAI_DEPLOYMENT_NAME=gpt-35-turbo选项C:直接配置(不建议用于生产)
直接在中设置您的凭据 src/main/resources/application.properties:
spring.ai.azure.openai.api-key=your-azure-openai-api-key
spring.ai.azure.openai.endpoint=https://your-resource-name.openai.azure.com/
spring.ai.azure.openai.chat.options.deployment-name=gpt-35-turbo
spring.ai.azure.openai.chat.options.model=gpt-3.5-turbo3.运行服务器
./gradlew bootRun服务器将于启动 http://localhost:8080
4.测试服务器
检查服务器运行状况:
curl -s http://localhost:8080/mcp/health | jq .获取服务器功能:
curl -s http://localhost:8080/mcp/capabilities | jq .Docker部署
MCP服务器可以使用Docker轻松容器化和部署。该构建使用Spring Boot的Cloud Native Buildpack来优化生产就绪的映像。
1.构建Docker镜像
使用Gradle构建Docker镜像 bootBuildImage 任务:
./gradlew clean bootBuildImage这将创建一个名为的Docker镜像 epic-mcp-server:latest (约293MB)针对x86_64架构进行了优化。
2.从Docker Compose开始
使用Docker Compose启动容器化MCP服务器:
docker compose up或者在后台运行:
docker compose up -d服务器将在以下时间可用 http://localhost:8080
3.测试容器化服务器
容器运行后,使用以下curl命令测试MCP服务器:
检查服务器运行状况
curl -s http://localhost:8080/mcp/health列出可用工具
curl -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
http://localhost:8080/mcp测试文本生成工具
curl -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"generate_text","arguments":{"prompt":"Write a haiku about Docker containers","maxTokens":50}}}' \
http://localhost:8080/mcp测试光学代码生成器
curl -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"optic_code_generator","arguments":{"prompt":"Create optic code to read user profiles from the database"}}}' \
http://localhost:8080/mcp4.停止集装箱
要停止Docker容器:
docker compose down5.替代Docker命令
你也可以直接用Docker运行镜像:
# Run the container directly
docker run -p 8080:8080 epic-mcp-server:latest
# Run in the background
docker run -d -p 8080:8080 --name epic-mcp-server epic-mcp-server:latest
# Stop the container
docker stop epic-mcp-server
docker rm epic-mcp-server当前状态
✅ MCP服务器工作:服务器实现完整的MCP协议,并响应所有工具调用 ✅ 模拟AI响应:工具在未配置AI时提供模拟响应 ⚠️ Azure OpenAI集成:目前提供模拟响应(SpringAI自动配置需要调试)
测试
服务器完全可以进行MCP协议测试。所有工具都适用于模拟响应。MCP工具调用
列出可用工具
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/list",
"params": {}
}' | jq .测试文本生成工具
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "2",
"method": "tools/call",
"params": {
"name": "generate_text",
"arguments": {
"prompt": "Write a haiku about coding",
"maxTokens": 50
}
}
}' | jq .列出可用资源
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "3",
"method": "resources/list",
"params": {}
}' | jq .阅读资源
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "4",
"method": "resources/read",
"params": {
"uri": "mcp://tools/examples"
}
}' | jq .初始化MCP连接
curl -s -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "initialize",
"params": {}
}' | jq .MCP客户端集成
初始化连接
POST /mcp
{
"jsonrpc": "2.0",
"id": "1",
"method": "initialize",
"params": {}
}列出可用工具
POST /mcp
{
"jsonrpc": "2.0",
"id": "2",
"method": "tools/list",
"params": {}
}调用工具
POST /mcp
{
"jsonrpc": "2.0",
"id": "3",
"method": "tools/call",
"params": {
"name": "generate_text",
"arguments": {
"prompt": "Write a haiku about programming",
"maxTokens": 50
}
}
}列出资源
POST /mcp
{
"jsonrpc": "2.0",
"id": "4",
"method": "resources/list",
"params": {}
}阅读资源
POST /mcp
{
"jsonrpc": "2.0",
"id": "5",
"method": "resources/read",
"params": {
"uri": "mcp://server/info"
}
}发展
添加新工具
- 更新
listTools()方法inMcpService包括你的新工具 - 在中为您的工具添加案例
callTool()方法 - 将工具逻辑实现为私有方法
添加新资源
- 更新
listResources()方法inMcpService - 在中为您的资源添加案例
readResource()方法 - 实现资源读取逻辑
运行测试
./gradlew test项目结构
src/
├── main/
│ ├── java/com/example/mcpserver/
│ │ ├── controller/ # REST API controllers
│ │ ├── model/ # MCP protocol models
│ │ ├── service/ # Business logic
│ │ └── McpServerApplication.java
│ └── resources/
│ └── application.properties
└── test/
└── java/com/example/mcpserver/
└── McpServerApplicationTests.java配置
中的关键配置选项 application.properties:
server.port:服务器端口(默认值:8080)spring.ai.azure.openai.api-key:用于AI功能的Azure OpenAI API密钥spring.ai.azure.openai.endpoint:Azure OpenAI服务端点spring.ai.azure.openai.chat.options.deployment-name:您的部署名称spring.ai.azure.openai.chat.options.model:要使用的AI模型- 调试日志级别
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 提交拉取请求
许可证
该项目根据MIT许可证获得许可。
