使用说明
使用Spring AI的MCP服务器演示
使用Spring AI 1.0.1和Spring Boot 3.5.4的模型上下文协议(MCP)服务器实现,具有可通过STDIO传输访问的文件系统工具。
特性
- 带STDIO传输的MCP服务器:通过标准输入/输出流进行通信
- 文件系统工具:读取、写入、列出、删除文件和获取文件信息
- Spring AI集成:利用Spring AI的MCP服务器启动程序
- 安全:路径验证以防止目录遍历攻击
- 综合测试:所有文件操作的单元测试
先决条件
- Java 17或更高版本
- Maven 3.6+
项目结构
mcp-server-demo/
├── src/main/java/io/gfeller/mcp/demo/
│ ├── McpServerDemoApplication.java # Main application class
│ ├── config/
│ │ └── McpServerConfig.java # MCP configuration
│ └── filesystem/
│ ├── FileSystemService.java # Core file operations
│ └── FileSystemTools.java # MCP tool annotations
├── src/main/resources/
│ └── application.yml # Application configuration
└── pom.xml # Maven dependencies
可用工具
MCP服务器公开了以下文件系统工具:
- readFile(路径) -读取文件内容
- writeFile(路径、内容) -将内容写入文件
- listFiles(目录) -列出目录中的文件
- deleteFile(路径) -删除文件
- fileExists(路径) -检查文件是否存在
- getFileInfo(路径) -获取详细的文件信息
建立和运行
构建项目
mvn clean install
运行测试
mvn test
运行MCP服务器
mvn spring-boot:run
或者直接运行JAR:
java -jar target/mcp-server-demo-0.0.1-SNAPSHOT.jar
配置
服务器通过以下方式配置 application.yml:
spring:
ai:
mcp:
server:
enabled: true # Enable MCP server
stdio: true # Use STDIO transport
name: file-system-mcp-server
version: 1.0.0
type: SYNC # Synchronous operations
capabilities:
tool: true # Enable tool support
resource: true # Enable resource support
测试MCP服务器
使用STDIO
运行服务器时,它会监听MCP协议消息的标准输入。您可以通过STDIO发送JSON-RPC消息与它进行交互。
列出可用工具的请求示例:
{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}
读取文件的请求示例:
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "readFile",
"arguments": {
"path": "/path/to/file.txt"
}
},
"id": 2
}
与MCP客户端集成
此服务器可以与任何兼容MCP的客户端集成,例如:
- 克劳德桌面应用程序
- 使用Spring AI构建的自定义MCP客户端
- 支持模型上下文协议的其他工具
安全考虑
FileSystemService包括基本的安全措施:
- 路径规范化以防止目录遍历
- 文件路径验证
- 未经授权的访问尝试的错误处理
对于生产用途,考虑添加:
- 允许的目录白名单
- 用户身份验证和授权
- 速率限制
- 审核日志记录
故障排除
常见问题
-
未找到依赖项:确保在您的系统中配置了Spring里程碑/快照存储库
pom.xml -
STDIO不工作:确保应用程序正在运行
stdio: true在配置中 -
文件访问错误:检查文件权限和路径有效性
日志记录
启用调试日志记录以获取更多详细信息:
logging:
level:
io.gfeller.mcp: DEBUG
org.springframework.ai.mcp: DEBUG
许可证
这是一个用于教育目的的示范项目。
