A versatile iOS code quality analysis tool that operates in two modes: 1. CLI Tool: Direct command-line interface for iOS testing and linting 2. MCP Server: Model Context Protocol server for AI assistant integration This tool provides comprehensive iOS code quality analysis and test automation capabilities, enabling both direct developer usage and AI assistant integration for Xcode tests, linter a
Add this skill
npx mdskills install a-25/ios-mcp-code-quality-serverDual-mode iOS testing and linting tool with comprehensive MCP integration and clear CLI documentation
A versatile iOS code quality analysis tool that operates in two modes:
This tool provides comprehensive iOS code quality analysis and test automation capabilities, enabling both direct developer usage and AI assistant integration for Xcode tests, linter analysis, and detailed feedback on iOS projects through structured, actionable reports.
Use instantly without installation:
# Run iOS tests
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests
# Run SwiftLint analysis
npx ios-mcp-code-quality-server lint --changed-files "ViewController.swift,Model.swift"
# Show help
npx ios-mcp-code-quality-server --help
For frequent use across multiple projects, you can install globally:
npm install -g ios-mcp-code-quality-server
# Then use the full name (following MCP conventions)
ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests
ios-mcp-code-quality-server lint --changed-files "ViewController.swift,Model.swift"
๐ก Tip: Using
npxis recommended as it ensures you always use the latest version without global installs.
# Start as MCP server (no arguments)
npx ios-mcp-code-quality-server
# Or explicitly start server mode
npx ios-mcp-code-quality-server server
The server will start on http://localhost:3000 and be ready to receive MCP requests.
This tool operates in two distinct modes with intelligent detection:
Simple Mode Detection:
# MCP Server Mode (no arguments)
npx ios-mcp-code-quality-server # โ Starts MCP server
ios-mcp-code-quality-server # โ Starts MCP server (if globally installed)
# CLI Mode (arguments provided)
npx ios-mcp-code-quality-server --help # โ CLI help
npx ios-mcp-code-quality-server test --help # โ CLI test help
npx ios-mcp-code-quality-server lint --changed-files="file.swift" # โ CLI lint
Use npx to run the CLI directly without installation:
npx ios-mcp-code-quality-server --help # Show all available commands
npx ios-mcp-code-quality-server --help # Show help for specific command
Run iOS tests with comprehensive analysis:
# Basic usage
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests
# With specific destination
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests \
--destination "platform=iOS Simulator,name=iPhone 15"
# Using Xcode project instead of workspace
npx ios-mcp-code-quality-server test --xcodeproj MyApp.xcodeproj --scheme MyAppTests
# Get JSON output for script integration
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --json
# Verbose logging for debugging
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --verbose
Test Command Options:
--xcworkspace : Path to .xcworkspace file--xcodeproj : Path to .xcodeproj file (either xcworkspace or xcodeproj required)--scheme : Scheme name for testing (required)--destination : Test destination (default: "platform=iOS Simulator")--json: Output results in JSON format--verbose: Enable verbose loggingRun SwiftLint analysis on specific files:
# Lint specific files
npx ios-mcp-code-quality-server lint --changed-files "ViewController.swift,Model.swift"
# With custom SwiftLint configuration
npx ios-mcp-code-quality-server lint --changed-files "*.swift" --config-path .swiftlint.yml
# Get JSON output
npx ios-mcp-code-quality-server lint --changed-files "ViewController.swift" --json
# Verbose output
npx ios-mcp-code-quality-server lint --changed-files "*.swift" --verbose
Lint Command Options:
--changed-files : Comma-separated list of files to lint (required)--config-path : Path to SwiftLint configuration file--json: Output results in JSON format--verbose: Enable verbose loggingStart MCP server mode explicitly:
# Start server on default port (3000)
npx ios-mcp-code-quality-server server
# Start server on custom port
npx ios-mcp-code-quality-server server --port 8080
# Server with custom settings
PORT=3001 LOG_LEVEL=debug npx ios-mcp-code-quality-server server
# Complete iOS project test workflow
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --verbose
# Quick SwiftLint check on modified files
git diff --name-only | grep "\.swift$" | xargs -I {} npx ios-mcp-code-quality-server lint --changed-files {}
# CI/CD integration with JSON output
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --json > test-results.json
# Check specific Swift files before commit
npx ios-mcp-code-quality-server lint --changed-files "LoginViewController.swift,UserModel.swift" --config-path .swiftlint.yml
Clone the repository:
git clone https://github.com/a-25/ios-mcp-code-quality-server.git
cd ios-mcp-code-quality-server
Install dependencies:
npm install
Build the project:
npm run build
Start the server:
npm start
# or explicitly
node dist/index.js server
Configure your AI assistant (Claude, Copilot, etc.) to use this MCP server:
{
"mcpServers": {
"ios-code-quality": {
"url": "http://localhost:3000",
"timeout": 30000
}
}
}
The server supports several configuration options through environment variables:
| Variable | Description | Default |
|---|---|---|
PORT | Server port | 3000 |
NODE_ENV | Environment mode | development |
LOG_LEVEL | Logging verbosity | info |
Example configuration:
export PORT=8080
export LOG_LEVEL=debug
npm start
# or for CLI mode:
PORT=8080 LOG_LEVEL=debug npx ios-mcp-code-quality-server server
Environment variables (with defaults):
# Server Configuration
PORT=3000
NODE_ENV=development
LOG_LEVEL=info
# MCP Server Identity
MCP_SERVER_NAME=ios-mcp-code-quality-server
MCP_SERVER_VERSION=0.1.0
# Security Settings
ALLOWED_HOSTS=127.0.0.1,localhost,127.0.0.1:3000,localhost:3000
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=100
# Performance Settings
SESSION_CLEANUP_INTERVAL_MS=300000
MAX_CONCURRENT_TASKS=5
Executes iOS tests and provides detailed failure analysis with support for running specific tests.
Parameters:
xcodeproj (optional): Path to Xcode project filexcworkspace (optional): Path to Xcode workspace filexcodeproj or xcworkspace parameter is mandatory (at least one must be provided)scheme (required): Xcode scheme to testdestination (optional): Test destination (simulator/device)
generic/platform=iOS Simulatortests (optional): Array of specific test names to run
['MyTarget/TestClass/testMethod', 'MyTarget/TestClass']['MyAppTests/LoginTests/testValidLogin', 'MyAppUITests/HomeScreenTests']target (optional): Target parameter for test execution context
Example Responses:
Success Case (all tests passed):
{
"content": [
{
"type": "text",
"text": "โ
All tests passed."
}
]
}
Build Errors Case (compilation issues):
{
"content": [
{
"type": "text",
"text": "โ Build failed. Please provide the code for the failing test and the class/function under test for better AI suggestions."
}
]
}
Test Errors Case (tests built but failed):
{
"content": [
{
"type": "text",
"text": "โ Test failed. Please provide the code for the failing test and the class/function under test for better AI suggestions."
}
]
}
Discovers and lists all available tests in the iOS project.
Parameters:
xcodeproj (optional): Path to Xcode project filexcworkspace (optional): Path to Xcode workspace filexcodeproj or xcworkspace parameter is mandatory (at least one must be provided)scheme (optional): Xcode scheme to analyzedestination (optional): Test destination (simulator/device)Performs lint analysis on your iOS project. Currently supported linters: SwiftLint
Direct Testing:
# Run all tests in a scheme
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests
# Run tests with specific simulator
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests \
--destination "platform=iOS Simulator,name=iPhone 15 Pro"
# Get machine-readable output for CI/CD
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --json
Code Quality Analysis:
# Lint specific files
npx ios-mcp-code-quality-server lint --changed-files "LoginView.swift,UserModel.swift"
# Lint with custom config
npx ios-mcp-code-quality-server lint --changed-files "*.swift" --config-path .swiftlint.yml
# Git workflow integration
git diff --name-only HEAD~1 | grep "\.swift$" | tr '\n' ',' | \
npx ios-mcp-code-quality-server lint --changed-files
Development Workflow:
# Pre-commit hook example
#!/bin/sh
changed_swift_files=$(git diff --cached --name-only --diff-filter=ACM | grep "\.swift$" | tr '\n' ',' | sed 's/,$//')
if [ -n "$changed_swift_files" ]; then
npx ios-mcp-code-quality-server lint --changed-files "$changed_swift_files" || exit 1
fi
Running Tests with AI Assistant:
"Can you run the tests for the LoginFeature scheme and tell me what failed?"
"Run only the LoginTests for the MyApp scheme"
"List all available tests in my project and then run the failing ones"
The AI assistant will use the enhanced test tools to:
Code Quality Analysis:
"Please analyze the code quality of my iOS project using SwiftLint"
CLI command not found:
npm install -g . from the project directorynode dist/index.js from the project directorynpm run buildServer won't start:
lsof -i :3000node --versionnpm listTests fail to run:
xcrun simctl list devicesSwiftLint not working:
brew install swiftlintswiftlint versionMCP Connection Issues:
lsof -i :3000Enable detailed logging for troubleshooting:
CLI Mode:
npx ios-mcp-code-quality-server test --xcworkspace MyApp.xcworkspace --scheme MyAppTests --verbose
MCP Server Mode:
export LOG_LEVEL=debug
npm start
# or
LOG_LEVEL=debug npx ios-mcp-code-quality-server server
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run linter
npm run lint
# Fix linting issues
npm run lint:fix
# Type checking
npm run type-check
npm run build
We welcome contributions! Please follow these steps:
git checkout -b feature/amazing-featurenpm testgit commit -m 'Add amazing feature'git push origin feature/amazing-featureThis project is licensed under the MIT License - see the LICENSE file for details.
Made with โค๏ธ for the iOS development community
Install via CLI
npx mdskills install a-25/ios-mcp-code-quality-serveriOS MCP Code Quality Server is a free, open-source AI agent skill. A versatile iOS code quality analysis tool that operates in two modes: 1. CLI Tool: Direct command-line interface for iOS testing and linting 2. MCP Server: Model Context Protocol server for AI assistant integration This tool provides comprehensive iOS code quality analysis and test automation capabilities, enabling both direct developer usage and AI assistant integration for Xcode tests, linter a
Install iOS MCP Code Quality Server with a single command:
npx mdskills install a-25/ios-mcp-code-quality-serverThis downloads the skill files into your project and your AI agent picks them up automatically.
iOS MCP Code Quality Server works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Codex, Gemini Cli, Amp, Roo Code, Goose, Opencode, Trae, Qodo, Command Code. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.