多协议服务器工具

Swift MCP Server是一个将文件系统、Git和HTTP请求功能集成到单一Swift二进制文件中的多协议服务器工具,适用于需要高性能和单一部署的开发者环境。

  • by abelcha
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 abelcha/mcpx

使用说明

Swift MCP服务器

项目目标

将3核MCP服务器(文件系统、git、fetch)重新实现为一个名为 mcpx.

为什么选择Swift?

  • 单二进制部署(无Node.js依赖)
  • 原生macOS性能
  • 简洁、现代的语法
  • 优秀的文件系统/网络基础库
  • 提供一流的MCP Swift SDK

架构概述

单个二进制,多个工具

mcpx
├── fs    (filesystem operations)
├── git   (git operations) 
└── fetch (HTTP requests)

指挥结构

mcpx --allow-dir /path/to/project
# Exposes all three tool sets via MCP protocol

核心要求

1.文件系统服务器(fs)

实施工具:

  • read_file -读取UTF-8编码的文件内容
  • write_file -创建/覆盖文件
  • list_directory -列出带有[FILE]/[DIR]前缀的目录内容
  • create_directory -递归创建目录
  • move_file -移动/重命名文件和目录
  • search_files -带模式匹配的递归文件搜索
  • get_file_info -文件元数据(大小、日期、权限)

关键API:

  • FileManager.default 用于目录操作
  • String(contentsOf:) 和 Data.write(to:) 用于文件I/O
  • FileManager.contentsOfDirectory(atPath:) 对于列表

2.Git服务器(git)

实施工具:

  • git_status -显示工作目录状态
  • git_add -舞台文件
  • git_commit -创建提交
  • git_push -推到远程
  • git_pull -从远程拉
  • git_log -显示提交历史记录
  • git_diff -显示文件差异
  • git_branch -分行业务

实施方法:

  • 使用 Process 执行git命令
  • 解析stdout/stderr以获取结构化响应
  • 处理git凭证管理

3.获取服务器(fetch)

实施工具:

  • http_get -带标头的GET请求
  • http_post -带正文/标头的POST请求
  • http_put -PUT请求
  • http_delete -删除请求

关键API:

  • URLSession 对于HTTP请求
  • JSONSerialization 用于JSON处理
  • 网络故障的正确错误处理

项目结构

Sources/
├── SwiftMCP/
│   ├── main.swift           # Entry point
│   ├── MCPServer.swift      # MCP protocol handling
│   ├── FilesystemTools.swift
│   ├── GitTools.swift
│   └── FetchTools.swift
└── Package.swift

依赖项

// Package.swift
dependencies: [
    .package(url: "https://github.com/modelcontextprotocol/swift-sdk", from: "1.0.0")
]

安全要求

  • 路径验证 -仅允许在指定目录内进行操作
  • Git安全 -验证git命令以防止注入
  • HTTP限制 -合理的超时和请求大小限制
  • 错误处理 -切勿在错误中暴露内部系统路径

MCP协议集成

  • 使用官方Swift MCP SDK
  • 实施 ListToolsRequestSchema 处理器
  • 实施 CallToolRequestSchema 处理器
  • 遵循Node.js版本的MCP工具模式

成功标准

  1. 简易替代者 -与Node.js版本相同的MCP工具接口
  2. 单个二进制 -无运行时依赖关系
  3. 更好的性能 -比Node.js等同物更快
  4. 清除错误消息 -用户友好的错误处理
  5. 跨平台 -适用于macOS和Linux

实施顺序

  1. 从文件系统开始 -核心功能,最容易测试
  2. 添加fetch -HTTP操作,适用于测试网络处理能力
  3. 以git结尾 -由于子流程管理,最为复杂

测试策略

  • 对现有MCP客户端(Claude Desktop)进行测试
  • 将输出格式与Node.js版本进行比较
  • 测试边缘情况:大文件、网络故障、git错误
  • 验证安全边界是否正常工作

与Node.js版本的主要区别

  • 无异步/等待仪式 -使用Swift的结构化并发
  • 本机错误类型 -正确的Swift错误处理与JavaScript异常
  • 类型安全性 -编译时保证与运行时模式验证
  • 资源管理 -自动内存管理与手动清理