Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Swift code analysis with Periphery - detect unused code and improve code quality
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account zyntx-lab, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 12 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, EmbeddedCI BenchPod
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Drive a BenchPod hardware-in-the-loop bench: power, flash, UART, I2C, CAN, analog and logic.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Model Context Protocol (MCP) server that wraps the Periphery tool, enabling AI assistants to perform Swift code audits and detect unused code in iOS/macOS projects.
Using Homebrew (Recommended):
# 1. Install Periphery
brew install peripheryapp/periphery/periphery
brew tap zyntx-lab/tap brew install periphery-mcp-server
From Source:
# 1. Install Periphery
brew install peripheryapp/periphery/periphery
git clone https://github.com/zyntx-lab/periphery-mcp-server.git cd periphery-mcp-server swift build -c release
sudo cp .build/release/periphery-mcp-server /usr/local/bin/ sudo chmod +x /usr/local/bin/periphery-mcp-server
brew install peripheryapp/periphery/periphery
Or download from Periphery releases.
# Add the tap
brew tap zyntx-lab/tap
brew install periphery-mcp-server
which periphery-mcp-server
Download the latest binary from Releases:
# Download and install
curl -L https://github.com/zyntx-lab/periphery-mcp-server/releases/download/v1.0.0/periphery-mcp-server \ -o /usr/local/bin/periphery-mcp-server chmod +x /usr/local/bin/periphery-mcp-server
which periphery-mcp-server
# Clone the repository
git clone https://github.com/zyntx-lab/periphery-mcp-server.git cd periphery-mcp-server
swift build -c release
sudo cp .build/release/periphery-mcp-server /usr/local/bin/ sudo chmod +x /usr/local/bin/periphery-mcp-server
which periphery-mcp-server
The server is also available on the MCP Registry. Use your MCP-compatible client to install it directly.
The config file is at: ~/Library/Application Support/Claude/claude_desktop_config.json
If you installed via Homebrew:
{
"mcpServers": { "periphery": { "command": "/opt/homebrew/bin/periphery-mcp-server" } } }
If you installed to /usr/local/bin:
{
"mcpServers": { "periphery": { "command": "/usr/local/bin/periphery-mcp-server" } } }
If you're using the build directory directly:
{
"mcpServers": { "periphery": { "command": "/FULL/PATH/TO/periphery-mcp-server/.build/release/periphery-mcp-server" } } }
If you already have other MCP servers configured:
{
"mcpServers": { "xcode": { "command": "node", "args": ["/path/to/xcode-mcp-server/dist/index.js"] }, "periphery": { "command": "/usr/local/bin/periphery-mcp-server" } } }
Important: You must completely quit and restart Claude Desktop for changes to take effect.
Cmd+Q or use Claude Desktop → QuitOpen a new conversation in Claude Desktop and try:
"Check if Periphery is installed"
If configured correctly, Claude will use the check_periphery_installed tool and respond with installation status.
Before configuring Claude Desktop, you can test the server with the MCP Inspector:
# Install MCP Inspector (if not already installed)
npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector /usr/local/bin/periphery-mcp-server
npx @modelcontextprotocol/inspector /path/to/periphery-mcp-server/.build/release/periphery-mcp-server
The Inspector will open in your browser where you can test all tools interactively.
Add to .vscode/mcp.json:
{
"mcpServers": { "periphery": { "type": "stdio", "command": "/usr/local/bin/periphery-mcp-server" } } }
Add to .cursor/mcp.json:
{
"mcpServers": { "periphery": { "type": "stdio", "command": "/usr/local/bin/periphery-mcp-server" } } }
check_periphery_installedVerify that Periphery CLI is installed and accessible.
Parameters: None
Example Response:
{
"installed": true, "path": "/usr/local/bin/periphery", "message": "Periphery is installed and ready" }
get_periphery_versionGet the installed version of Periphery.
Parameters: None
Example Response:
{
"version": "2.18.0", "raw_output": "2.18.0" }
scan_projectRun a basic Periphery scan on a project.
Parameters:
project_path (required): Path to .xcodeproj or Package.swiftschemes (optional): Build schemes to scan (Xcode only)targets (optional): Specific targets to analyzeformat (optional): Output format: json, xcode, csv, checkstyle (default: json)Example Response:
{
"success": true, "results": [ { "kind": "class", "name": "UnusedClass", "modifiers": ["public"], "location": "Sources/MyApp/UnusedClass.swift:10:7" } ], "summary": { "total_unused": 5, "by_kind": {"class": 2, "function": 3} } }
scan_with_configRun Periphery scan using a YAML configuration file.
Parameters:
config_path (required): Path to .periphery.yml config fileanalyze_unused_importsFocus specifically on detecting unused imports.
Parameters:
project_path (required): Path to .xcodeproj or Package.swiftschemes (optional): Build schemes to scantargets (optional): Specific targets to analyzefind_redundant_publicIdentify public declarations that could be internal.
Parameters:
project_path (required): Path to .xcodeproj or Package.swiftschemes (optional): Build schemes to scantargets (optional): Specific targets to analyzescan_with_optionsAdvanced scanning with custom Periphery flags.
Parameters:
project_path (required): Path to .xcodeproj or Package.swiftschemes (optional): Build schemes to scantargets (optional): Specific targets to analyzeformat (optional): Output formatretain_public (optional): Retain all public declarationsretain_objc_accessible (optional): Retain @objc declarationsdisable_unused_import_analysis (optional): Disable unused import analysisindex_store_path (optional): Custom index store locationverbose (optional): Enable verbose outputOnce configured, you can have natural conversations with Claude about your code:
Check Installation:
You: "Check if Periphery is installed"
Claude: [Uses check_periphery_installed] "Yes, Periphery is installed at /usr/local/bin/periphery Version: 2.18.0"
Scan a Project:
You: "Scan my iOS project at ~/Projects/MyApp/MyApp.xcodeproj for unused code"
Claude: [Uses scan_project] "I found 15 unused declarations in your project:
Classes (5):
...
Functions (8):
...
Imports (2):
..."
Find Redundant Public:
You: "Check which public declarations could be made internal in ~/Projects/MyFramework"
Claude: [Uses find_redundant_public] "Found 12 public declarations that are only used internally and could be made internal:
..."
Analyze Unused Imports:
You: "Find unused imports in my Swift package"
Claude: [Uses analyze_unused_imports] "Found 8 unused imports that can be safely removed:
..."
Create .periphery.yml in your project:
project: MyApp.xcodeproj
schemes:
targets:
format: json retain_public: false retain_objc_accessible: true verbose: false
Then use scan_with_config:
You: "Scan my project using the custom config"
Symptoms: Claude doesn't recognize Periphery tools after configuration
Solutions:
# Check for JSON syntax errors
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python3 -m json.tool
# Test that the binary exists and runs
/usr/local/bin/periphery-mcp-server
/path/to/.build/release/periphery-mcp-server
Cmd+Q to quit (not just close the window) # View logs for errors
tail -f ~/Library/Logs/Claude/mcp*.log
If you get "Periphery is not installed":
brew install peripheryapp/periphery/peripherywhich peripherycheck_periphery_installed tool againIf the Inspector can't connect to the server:
# Server should wait for input, not exit immediately
/usr/local/bin/periphery-mcp-server
# Run with verbose output
/usr/local/bin/periphery-mcp-server 2>&1 | tee server.log
npx @modelcontextprotocol/inspector $(which periphery-mcp-server)
Default timeout is 5 minutes. For large projects:
scan_with_config with a focused configurationOnly the beginning is shown; read the rest in the repo