文件系统MCP服务器

基于Spring AI的MCP服务器,提供文件系统操作工具,通过STDIO传输进行通信。

  • by alexgfeller
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 alexgfeller/mcp-server-demo

使用说明

使用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服务器公开了以下文件系统工具:

  1. readFile(路径) -读取文件内容
  2. writeFile(路径、内容) -将内容写入文件
  3. listFiles(目录) -列出目录中的文件
  4. deleteFile(路径) -删除文件
  5. fileExists(路径) -检查文件是否存在
  6. 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包括基本的安全措施:

  • 路径规范化以防止目录遍历
  • 文件路径验证
  • 未经授权的访问尝试的错误处理

对于生产用途,考虑添加:

  • 允许的目录白名单
  • 用户身份验证和授权
  • 速率限制
  • 审核日志记录

故障排除

常见问题

  1. 未找到依赖项:确保在您的系统中配置了Spring里程碑/快照存储库 pom.xml

  2. STDIO不工作:确保应用程序正在运行 stdio: true 在配置中

  3. 文件访问错误:检查文件权限和路径有效性

日志记录

启用调试日志记录以获取更多详细信息:

logging:
  level:
    io.gfeller.mcp: DEBUG
    org.springframework.ai.mcp: DEBUG

许可证

这是一个用于教育目的的示范项目。

参考文献