使用说明
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/OFileManager.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工具模式
成功标准
- 简易替代者 -与Node.js版本相同的MCP工具接口
- 单个二进制 -无运行时依赖关系
- 更好的性能 -比Node.js等同物更快
- 清除错误消息 -用户友好的错误处理
- 跨平台 -适用于macOS和Linux
实施顺序
- 从文件系统开始 -核心功能,最容易测试
- 添加fetch -HTTP操作,适用于测试网络处理能力
- 以git结尾 -由于子流程管理,最为复杂
测试策略
- 对现有MCP客户端(Claude Desktop)进行测试
- 将输出格式与Node.js版本进行比较
- 测试边缘情况:大文件、网络故障、git错误
- 验证安全边界是否正常工作
与Node.js版本的主要区别
- 无异步/等待仪式 -使用Swift的结构化并发
- 本机错误类型 -正确的Swift错误处理与JavaScript异常
- 类型安全性 -编译时保证与运行时模式验证
- 资源管理 -自动内存管理与手动清理