Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/debugswift/xcodebazelmcp/mcp-setupnpx skills add DebugSwift/XcodeBazelMCP --skill mcp-setupgit clone --depth 1 https://github.com/DebugSwift/XcodeBazelMCPWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00046 | $0.00683 |
| Opus 5 | $0.00023 | $0.00342 |
| Sonnet 5 | $0.00009 | $0.00137 |
| Haiku 4.5 | $0.00005 | $0.00068 |
Grade A, and why
mcp-setup scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 62 lines — stays where its author put it; the contents beside it link to each section on GitHub.
MCP Setup & Configuration
Using in Other Projects
The package is not published to npm (private: true). Use the local dist/cli.js path in .cursor/mcp.json:
{
"XcodeBazelMCP": {
"command": "node",
"args": ["/Users/matheus.gois/Projects/XcodeBazelMCP/dist/cli.js", "mcp"],
"env": { "BAZEL_IOS_WORKSPACE": "/path/to/your/workspace" }
}
}
- After source changes, run
npm run buildto updatedist/. - Prefer absolute paths —
~may not expand in all MCP clients. - Local Bazel execution is the default.
BITRISE_BUILD_CACHE_AUTH_TOKENis not required. Bitrise RBE configs (bitrise,remote_linux) are stripped automatically unless the token is set.
Config File
.xcodebazelmcp/config.yaml (in workspace root or ~/.xcodebazelmcp/):
enabledWorkflows— comma-separated workflow IDs (e.g.build, test, simulator)profiles:— nested blocks for per-project defaultsactivateProfilemerges profile defaults into session defaults
Per-Workspace Daemon
- Unix socket:
/tmp/xbmcp-daemon-<sha256(wsPath)[0:12]>.sock - PID file:
~/.xcodebazelmcp/daemons/<hash>.json - JSON protocol:
ping,status,list_ops,register_op,unregister_op,shutdown - Client spawns detached child via
child.unref()withXBMCP_DAEMON=1env, polls up to 5s for socket. - Auto-cleanup on
SIGTERM/SIGINT: removes socket and PID file.
Project Scaffolding
6 templates: ios_app, ios_test, ios_app_with_tests, macos_app, macos_test, macos_app_with_tests.
- Guards against overwriting — fails if
MODULE.bazelorWORKSPACEalready exists. - Test-only templates generate BUILD.bazel under
${name}Tests/subdirectory. - Scaffold
namevalidated with^[A-Za-z][A-Za-z0-9_-]*$to prevent path traversal.
Doctor
Reports: system info (platform, arch, CPUs, memory, Node), workspace details (path, config, MODULE.bazel/WORKSPACE/.bazelrc), dependency versions (bazel, xcode, simctl), full tool inventory by workflow with enabled/disabled status.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 62 lines · 46 tokens per session scan A b50400854f59
mcp-setup is a skill published in the GitHub repository DebugSwift/XcodeBazelMCP (7 stars, last pushed 1mo ago), licensed MIT. It adds 46 tokens to every session and 683 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
test
Run tests. Use after code changes to validate. Arguments: unit (default, no GPU), e2e (with models), filter name, or all.
boutique-store
Create and use Boutique Store for Swift data persistence, including initialization, @Stored controllers, CRUD operations, operation chaining, and granular event monitoring. Use when persisting arrays of items, building data controllers, or working with Boutique's Store type.
boutique-stored-values
Persist individual values with Boutique's @StoredValue (UserDefaults) and @SecurelyStoredValue (Keychain), including set, reset, toggle, bindings, keypath setters, array and dictionary helpers, and async observation. Use when storing preferences, settings, feature flags, or sensitive data like auth tokens.
boutique-swiftui
Integrate Boutique with SwiftUI views using onChange, onStoreDidLoad, bindings, and preview stores. Use when building SwiftUI views that display or react to Boutique-persisted data.
analyze-db-logs
Analyze Drift / SQLite slow-query and super-slow-query logs against this app's known stall patterns (read waves, N+1, transaction scoping, MultiExecutor contention, WAL/OS factors).
review-comments
Fetch PR review comments, address each one in code, and post resolution replies.