AI集成开发工具

一个基于Spring AI框架和GitHub MCP服务器的概念验证项目,用于构建AI驱动的应用程序,支持自然语言处理和GitHub操作集成。

  • by shesadri
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 shesadri/spring_ai_mcp_poc

使用说明

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:构建工具

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加测试
  5. 提交拉取请求

许可证

该项目根据MIT许可证获得许可。

故障排除

常见问题

  1. OpenAI API关键问题

    • 确保您的API密钥有效并且有足够的信用
    • 检查环境变量是否设置正确
  2. MCP服务器连接问题

    • 验证MCP服务器是否正在运行
    • 检查服务器URL配置
    • 检查网络连接
  3. GitHub集成问题

    • 确保GitHub令牌具有适当的权限
    • 验证MCP服务器GitHub配置
  4. 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文件