使用说明
Spring AI MCP PoC
概念验证演示了Spring AI框架、GitHub MCP(模型上下文协议)服务器和LLM模型之间的集成。
概述
该项目展示了如何构建一个AI驱动的应用程序,该应用程序可以:
- 使用Spring AI处理自然语言提示
- 通过MCP(模型上下文协议)与GitHub集成
- 利用OpenAI的GPT模型进行智能响应
- 通过函数调用提供GitHub特定的功能
建筑
User Request → Spring Boot API → Spring AI → OpenAI LLM
↓
GitHub MCP Server → GitHub API
特性
- Spring AI集成:利用Spring AI框架进行LLM交互
- GitHub MCP支持:通过模型上下文协议连接到GitHub
- 函数调用:AI可以根据用户提示调用GitHub操作
- RESTful API:清理REST端点以进行快速处理
- 可配置的:针对不同环境的简单配置
- 错误处理:强大的错误处理和日志记录
先决条件
- Java 17或更高版本
- Gradle 8.6+(或使用附带的包装)
- OpenAI API密钥
- GitHub MCP服务器正在运行(基本功能可选)
设置
1.克隆存储库
git clone https://github.com/shesadri/spring_ai_mcp_poc.git
cd spring_ai_mcp_poc
2.配置环境变量
创建一个 .env 文件或设置环境变量:
export OPENAI_API_KEY="your-openai-api-key"
export GITHUB_MCP_SERVER_URL="http://localhost:3000" # Optional
export GITHUB_TOKEN="your-github-token" # Optional for enhanced features
3.配置应用程序属性
编辑 src/main/resources/application.yml 或使用环境变量:
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY:your-openai-api-key-here}
app:
github:
mcp:
server:
url: ${GITHUB_MCP_SERVER_URL:http://localhost:3000}
4.构建和运行
# Build the project
./gradlew build
# Run the application
./gradlew bootRun
# Or run with specific profile
./gradlew bootRun --args='--spring.profiles.active=dev'
# Alternative: Use custom tasks
./gradlew runDev # Development profile
./gradlew runProd # Production profile
应用程序将于启动 http://localhost:8080
用法
健康检查
curl http://localhost:8080/api/v1/health
处理提示
curl -X POST http://localhost:8080/api/v1/prompt \
-H "Content-Type: application/json" \
-d '{
"prompt": "Tell me about Spring AI framework",
"enableMcpTools": true
}'
GitHub特定提示
curl -X POST http://localhost:8080/api/v1/prompt \
-H "Content-Type: application/json" \
-d '{
"prompt": "Show me information about my GitHub repositories",
"enableMcpTools": true
}'
获取可用的MCP工具
curl http://localhost:8080/api/v1/mcp/tools
API终点
| 方法 | 端点 | 描述 |
|---|---|---|
| 得到 | /api/v1/health |
健康检查 |
| 职位 | /api/v1/prompt |
进程AI提示 |
| 得到 | /api/v1/mcp/tools |
获取可用的MCP工具 |
请求/响应格式
快速请求
{
"prompt": "Your question or instruction",
"context": "Optional context",
"enableMcpTools": true,
"githubToken": "optional-github-token"
}
迅速反应
{
"response": "AI generated response",
"mcpData": {
"repositories": [...],
"status": "success"
},
"usedMcpTools": true,
"timestamp": "2024-01-01T12:00:00",
"status": "success",
"model": "gpt-4"
}
配置
环境变量
OPENAI_API_KEY:您的OpenAI API密钥(必需)GITHUB_MCP_SERVER_URL:GitHub MCP服务器的URL(可选)GITHUB_TOKEN:GitHub个人访问令牌(可选)PORT:服务器端口(默认值:8080)
应用程序属性
看 application.yml 详细的配置选项包括:
- AI模型设置
- 服务器配置
- CORS 设置
- 日志记录级别
- 管理端点
GitHub MCP服务器
此应用程序希望运行GitHub MCP服务器以增强GitHub功能。MCP服务器应提供:
- 存储库信息端点
- 问题管理能力
- 拉取请求操作
- 代码搜索功能
如果没有可用的MCP服务器,该应用程序仍将工作,但与GitHub的集成有限。
发展
运行测试
./gradlew test
发展概况
./gradlew runDev
# or
./gradlew bootRun --args='--spring.profiles.active=dev'
生产大楼
./gradlew clean build
java -jar build/libs/spring-ai-mcp-poc-1.0.0-SNAPSHOT.jar
Gradle命令
# Build project
./gradlew build
# Run application
./gradlew bootRun
# Run tests
./gradlew test
# Clean build
./gradlew clean
# Generate Gradle wrapper (if needed)
gradle wrapper --gradle-version 8.6
# Check dependencies
./gradlew dependencies
# Build info
./gradlew tasks
项目结构
src/
├── main/
│ ├── java/com/example/springaimcp/
│ │ ├── SpringAiMcpApplication.java # Main application class
│ │ ├── config/
│ │ │ └── SpringAiConfig.java # Spring AI configuration
│ │ ├── controller/
│ │ │ └── PromptController.java # REST API endpoints
│ │ ├── service/
│ │ │ ├── AiMcpService.java # Main service orchestrating AI and MCP
│ │ │ └── mcp/
│ │ │ └── GitHubMcpClient.java # GitHub MCP client
│ │ └── model/
│ │ ├── PromptRequest.java # Request model
│ │ └── PromptResponse.java # Response model
│ └── resources/
│ ├── application.yml # Main configuration
│ └── application.properties # Alternative configuration
└── test/
└── java/
└── ... # Test classes
# Gradle files
build.gradle # Gradle build script
settings.gradle # Gradle settings
gradle/
└── wrapper/
├── gradle-wrapper.properties # Gradle wrapper config
└── gradle-wrapper.jar # Gradle wrapper JAR
gradlew # Gradle wrapper script (Unix)
gradlew.bat # Gradle wrapper script (Windows)
使用的技术
- 弹簧靴3.2.5:应用程序框架
- 春季AI 1.0.0-M1:人工智能集成框架
- OpenAI GPT-4:大型语言模型
- WebFlux 的:用于MCP通信的响应式web客户端
- 杰克逊:JSON处理
- 等级8.6:构建工具
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
许可证
该项目根据MIT许可证获得许可。
故障排除
常见问题
-
OpenAI API关键问题
- 确保您的API密钥有效并且有足够的信用
- 检查环境变量是否设置正确
-
MCP服务器连接问题
- 验证MCP服务器是否正在运行
- 检查服务器URL配置
- 检查网络连接
-
GitHub集成问题
- 确保GitHub令牌具有适当的权限
- 验证MCP服务器GitHub配置
-
Gradle问题
- 使用
./gradlew --version检查Gradle版本 - 跑
./gradlew clean build清理和重建 - 检查Java版本
java -version
- 使用
日志
检查应用程序日志以获取详细的错误信息:
# View logs in development
tail -f logs/spring-ai-mcp-poc.log
# Increase log level for debugging
export LOGGING_LEVEL_COM_EXAMPLE_SPRINGAIMCP=DEBUG
Gradle包装
如果您遇到Gradle包装器的问题:
# Regenerate wrapper files
gradle wrapper --gradle-version 8.6
# Make gradlew executable on Unix systems
chmod +x gradlew
支持
对于问题和疑问:
- 在此存储库中创建问题
- 查看Spring AI文档
- 查看OpenAI API文档
- 查阅Gradle文件