使用说明
Spring AI MCP服务器详解
我已经成功地将该项目转换为具有PostgreSQL集成的Spring AI MCP服务器。
所做的更改
pom.xml:更新为使用Spring Boot 3.3.0和Spring AI1.0.0-SNAPSHOT(MCP的实验支持)。PostgresMcpServerApplication.java:创建了主Spring Boot应用程序类。DatabaseService.java:实现了数据库服务和带注释的方法@Tool将其作为MCP工具公开。application.properties:配置了具有环境变量覆盖的数据库连接设置。- 已删除:删除遗留内容
PostgresMcpServer.java.
如何跑步
先决条件
- Java 17+
- 梅文
- PostgreSQL数据库
运行服务器
您可以使用Maven运行服务器。确保为数据库连接设置环境变量。
$env:DB_URL="jdbc:postgresql://localhost:5433/your_db"
$env:DB_USER="your_user"
$env:DB_PASSWORD="your_password"
mvn spring-boot:run
故障排除和修复
1.服务器立即断开连接
问题: 服务器连接到Claude Desktop后立即退出。
原因: 端口冲突(端口8080已在使用中)或丢失 server.port=0 配置。
修复:
- 确保没有其他进程正在使用端口8080。
- 添加
-Dserver.port=0使用随机端口连接到Claude Desktop配置。 - 确保
logging.level.root=INFO(不是VERBOSE)inapplication.properties.
2.工具未出现
问题: 服务器已连接,但未显示任何工具。
原因: 缺失 spring-ai-core 依赖性和不正确的工具注册。
修复:
- 添加
spring-ai-core依赖于pom.xml. - 创建
McpConfig.java使用以下命令显式注册工具ToolCallbacks.from(databaseService).
验证
- 构建:
mvn clean package -DskipTests - 运行:
java -Dspring.main.banner-mode=off -Dserver.port=0 -jar target/postgres-mcp-server-0.0.1-SNAPSHOT.jar - 检查日志: 验证
mcp-server.log显示Registered tools: 2.
MCP集成
服务器公开了以下工具:
listTables:列出数据库中的所有公用表。executeQuery:执行只读SQL查询(仅限SELECT)。
这些工具由Spring AI的MCP自动配置自动注册。
测试Postgres MCP服务器
本指南提供了如何测试Spring AI MCP服务器的说明。
1.自动化单元测试
运行附带的JUnit测试以验证应用程序上下文和bean配置。
mvn test
2.使用MCP检验员进行测试
这 MCP检查员 是交互式测试服务器的最佳方式。
先决条件
- 已安装Node.js(
npx命令可用)
步骤
-
启动服务器: 确保您的数据库正在运行,并且设置了环境变量。
$env:DB_URL="jdbc:postgresql://localhost:5433/postgres" $env:DB_USER="admin" $env:DB_PASSWORD="password" mvn spring-boot:run服务器将在端口8080上启动。
-
运行检查器: 打开一个新终端并运行:
npx @modelcontextprotocol/inspector -
连接:
- 在Inspector UI(通常在浏览器中打开)中,选择 上海证券交易所 (服务器发送事件)作为传输。
- 输入URL:
http://localhost:8080/sse(或http://localhost:8080/mcp/sse根据自动配置,检查日志)。 - 点击 连接.
-
互动:
- 你应该看看
listTables和executeQuery在“工具”列表中。 - 试着跑步
listTables.
- 你应该看看
3.使用克劳德桌面进行测试(标准模式)
要将此服务器与Claude Desktop一起使用,您需要以通过标准输入/输出(Stdio)进行通信的方式运行它。
配置
- 构建JAR:
mvn clean package -DskipTests - 在以下位置找到JAR
target/postgres-mcp-server-0.0.1-SNAPSHOT.jar.
Claude桌面配置
编辑您的 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"postgres": {
"command": "java",
"args": [
"-Dspring.main.banner-mode=off",
"-Dlogging.pattern.console=",
"-Dserver.port=0",
"-jar",
"D:/DevOps/GenAI/postgres-mcp-server/target/postgres-mcp-server-0.0.1-SNAPSHOT.jar"
],
"env": {
"DB_URL": "jdbc:postgresql://localhost:5433/postgres",
"DB_USER": "admin",
"DB_PASSWORD": "password"
}
}
}
}
注意:我们禁用web应用程序和控制台日志记录,以确保stdout上的JSON通信干净。
4.简单连接检查(SSE)
您可以使用 curl 验证服务器是否正在监听。
curl -v http://localhost:8080/sse
您应该看到已建立连接。