Fastlane MCP服务器
MCP(模型上下文协议)服务器,提供与Fastlane的集成,用于构建、测试和部署具有Firebase和AppCenter支持的iOS和Android应用程序。
特性
- 构建管理:构建具有不同配置的iOS和Android应用程序
- AppCenter部署:将应用程序直接部署到AppCenter进行分发
- Firebase集成:支持Firebase应用程序分发和Crashlytics
- 测试:在各种设备和模拟器上运行自动化测试
- 证书管理:处理iOS代码签名证书和配置文件
- 版本管理:Bump版本号和内部版本号
- 元数据管理:上传应用商店元数据和屏幕截图
- 车道探索:列出项目中可用的快车道
先决条件
- Node.js 18+
- 为您的项目安装和配置了Fastlane
- 适用于iOS:Xcode和有效的Apple Developer帐户
- 适用于Android:Android SDK和Java
- Firebase CLI(用于Firebase功能)
- AppCenter CLI(用于AppCenter部署)
安装
# Clone the repository
git clone
cd fastlane-mcp-server
# Install dependencies
npm install
# Build the TypeScript code
npm run build配置
MCP客户端配置
Fastlane MCP服务器可以在支持模型上下文协议的各种AI驱动的代码编辑器和工具中进行配置。
克劳德桌面
在以下位置编辑配置文件 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"fastlane": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/dev/MCP/fastlane-mcp-server/dist/index.js"],
"env": {
"FASTLANE_USER": "your-apple-id@example.com",
"FASTLANE_PASSWORD": "your-app-specific-password",
"APPCENTER_API_TOKEN": "your-appcenter-token",
"FIREBASE_TOKEN": "your-firebase-token"
}
}
}
}光标
对于游标编辑器,请在以下位置添加设置 ~/Library/Application Support/Cursor/User/settings.json:
{
"mcp": {
"servers": {
"fastlane": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/dev/MCP/fastlane-mcp-server/dist/index.js"],
"env": {
"FASTLANE_USER": "your-apple-id@example.com",
"FASTLANE_PASSWORD": "your-app-specific-password",
"APPCENTER_API_TOKEN": "your-appcenter-token"
}
}
}
}
}帆板运动
对于Windsurf编辑器,请在全局设置中配置 ~/.windsurf/settings.json 或工作区设置:
{
"mcp.servers": [
{
"name": "fastlane",
"command": "node",
"args": ["/Users/YOUR_USERNAME/dev/MCP/fastlane-mcp-server/dist/index.js"],
"environment": {
"FASTLANE_USER": "your-apple-id@example.com",
"FASTLANE_PASSWORD": "your-app-specific-password",
"APPCENTER_API_TOKEN": "your-appcenter-token"
}
}
]
}VS代码并继续
对于带有Continue扩展名的VS代码,请更新 settings.json:
{
"continue.mcp": {
"servers": [
{
"name": "fastlane",
"command": "node",
"args": ["/Users/YOUR_USERNAME/dev/MCP/fastlane-mcp-server/dist/index.js"],
"env": {
"FASTLANE_USER": "your-apple-id@example.com",
"APPCENTER_API_TOKEN": "your-appcenter-token"
}
}
]
}
}使用npx(替代安装)
您还可以直接使用npx运行服务器,而无需克隆:
{
"mcpServers": {
"fastlane": {
"command": "npx",
"args": ["fastlane-mcp-server"],
"env": {
"FASTLANE_USER": "your-apple-id@example.com",
"FASTLANE_PASSWORD": "your-app-specific-password"
}
}
}
}快速设置命令
# For Claude Desktop (macOS)
open -a "TextEdit" ~/Library/Application\ Support/Claude/claude_desktop_config.json
# For Cursor (macOS)
open -a "TextEdit" ~/Library/Application\ Support/Cursor/User/settings.json
# For Windsurf
open -a "TextEdit" ~/.windsurf/settings.json
# Or use any text editor
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json项目结构
您的移动项目应具有以下结构:
your-project/
├── ios/
│ └── fastlane/
│ ├── Fastfile
│ └── Appfile
├── android/
│ └── fastlane/
│ ├── Fastfile
│ └── Appfile
└── firebase.json (optional)可用工具
1.建造
构建iOS或Android应用程序。
参数:
platform:“ios”或“android”projectPath:项目目录的路径lane:(可选)要行驶的特定快车道environment:(可选)“开发”、“暂存”或“生产”clean:(可选)生成前清理生成目录
2.部署到AppCenter
将构建的应用程序部署到AppCenter。
参数:
platform:“ios”或“android”projectPath:项目目录的路径appName:(可选)AppCenter应用程序名称group:(可选)通讯组notes:(可选)发行说明
3.Firebase集成
管理Firebase部署和分发。
参数:
action:“部署”、“分发”或“崩溃破解”platform:“ios”或“android”projectPath:项目目录的路径appId:(可选)Firebase应用程序IDgroups:(可选)通讯组releaseNotes:(可选)发行说明
4.测试
对应用程序运行自动化测试。
参数:
platform:“ios”或“android”projectPath:项目目录的路径device:(可选)特定设备/模拟器testPlan:(可选)要运行的测试计划
5.管理证书
处理代码签名证书(主要用于iOS)。
参数:
platform:“ios”或“android”action:“同步”、“创建”、“续订”或“撤销”projectPath:项目目录的路径type:(可选)证书类型
6.列出车道
在您的项目中发现可用的快车道。
参数:
projectPath:项目目录的路径platform:(可选)按平台筛选
7.版本管理
管理应用程序版本和内部版本号。
参数:
platform:“ios”或“android”projectPath:项目目录的路径action:“bump”、“set”或“get”versionType:(可选)“主要”、“次要”、“补丁”或“构建”version:(可选)要设置的特定版本
8.元数据管理
上传应用商店元数据和屏幕截图。
参数:
platform:“ios”或“android”projectPath:项目目录的路径action:“交付”、“供应”或“快照”skipScreenshots:(可选)跳过屏幕截图上传skipMetadata:(可选)跳过元数据上传
快速文件配置示例
iOS快速文件
default_platform(:ios)
platform :ios do
desc "Build the iOS app"
lane :build do
gym(
scheme: "YourApp",
export_method: "ad-hoc"
)
end
desc "Deploy to AppCenter"
lane :appcenter do
build
appcenter_upload(
api_token: ENV["APPCENTER_API_TOKEN"],
owner_name: "your-organization",
app_name: ENV["APPCENTER_APP_NAME"] || "YourApp-iOS",
release_notes: ENV["APPCENTER_DISTRIBUTE_RELEASE_NOTES"] || "New build"
)
end
desc "Deploy to Firebase App Distribution"
lane :firebase_distribute do
build
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID"],
groups: ENV["FIREBASE_GROUPS"] || "testers",
release_notes: ENV["FIREBASE_RELEASE_NOTES"] || "New build"
)
end
desc "Run tests"
lane :test do
scan(
scheme: "YourApp",
device: ENV["TEST_DEVICE"] || "iPhone 14"
)
end
end安卓快速文件
default_platform(:android)
platform :android do
desc "Build the Android app"
lane :build do
gradle(
task: "assemble",
build_type: "Release"
)
end
desc "Deploy to AppCenter"
lane :appcenter do
build
appcenter_upload(
api_token: ENV["APPCENTER_API_TOKEN"],
owner_name: "your-organization",
app_name: ENV["APPCENTER_APP_NAME"] || "YourApp-Android",
file: "./app/build/outputs/apk/release/app-release.apk"
)
end
desc "Deploy to Firebase App Distribution"
lane :firebase_distribute do
build
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID"],
groups: ENV["FIREBASE_GROUPS"] || "testers",
release_notes: ENV["FIREBASE_RELEASE_NOTES"] || "New build",
android_artifact_path: "./app/build/outputs/apk/release/app-release.apk"
)
end
desc "Run tests"
lane :test do
gradle(task: "test")
end
end项目结构
服务器采用模块化架构进行组织,便于维护:
src/
├── index.ts # Entry point with error handling
├── server.ts # Main MCP server class
├── config/
│ └── index.ts # Configuration management
├── handlers/ # Tool implementation handlers
│ ├── index.ts # Handler exports
│ ├── build.ts # Build handler
│ ├── appcenter.ts # AppCenter deployment handler
│ ├── firebase.ts # Firebase integration handler
│ ├── test.ts # Test execution handler
│ ├── certificates.ts # Certificate management handler
│ ├── lanes.ts # Lane listing handler
│ ├── version.ts # Version management handler
│ └── metadata.ts # Metadata management handler
├── tools/
│ └── definitions.ts # MCP tool definitions
├── types/
│ └── index.ts # TypeScript types and schemas
├── utils/
│ ├── executor.ts # Command execution utilities
│ └── logger.ts # Logging utilities
└── test/
└── test-utils.ts # Testing utilities配置
服务器支持通过 fastlane-mcp.config.json 文件。
注:独立 fastlane-mcp.config.example.json 文件已被删除。直接使用下面的示例 fastlane-mcp.config.json.
{
"server": {
"name": "fastlane-mcp-server",
"version": "1.0.0",
"debug": false
},
"fastlane": {
"defaultLanes": {
"build": "build",
"test": "test",
"deploy": "deploy"
},
"timeout": 600000,
"environmentVariables": {
"FASTLANE_SKIP_UPDATE_CHECK": "true",
"FASTLANE_HIDE_TIMESTAMP": "true"
}
},
"platforms": {
"ios": {
"enabled": true,
"defaultDevice": "iPhone 14",
"defaultScheme": "YourApp"
},
"android": {
"enabled": true,
"defaultBuildType": "Release",
"gradlePath": "./gradlew"
}
},
"integrations": {
"appCenter": {
"enabled": true,
"defaultOwner": "your-organization",
"defaultGroup": "Collaborators"
},
"firebase": {
"enabled": true,
"defaultGroups": ["testers", "qa-team"]
}
}
}发展
# Run in development mode
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Run with debug logging
DEBUG=true npm start故障排除
常见问题
- 未找到Fastlane:确保Fastlane在全球或您的项目中安装
gem install fastlane- iOS上的证书问题:确保您的钥匙链中有正确的证书,并配置了匹配
- Firebase身份验证:确保您已登录到Firebase CLI
firebase login- AppCenter身份验证:设置APPCENTER_API_TOKEN环境变量
安全说明
- 将敏感凭据存储在环境变量中
- 切勿将API令牌或密码提交到版本控制
- 使用特定于应用程序的密码进行Apple ID身份验证
- 考虑使用Fastlane Match进行iOS证书管理
贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
支持
有关问题和疑问,请在GitHub存储库上打开问题。
