Atlas / MCP servers / nagarjuna2997 / ios-agent-skill

ios-agent-skillBLOCK

mcp/nagarjuna2997/ios-agent-skill

Swift source, Apple guides and MCP tools for AI coding agents. Review iOS code, scaffold apps, and build/run/preview with Xcode Simulator.

Verdict
BLOCK
Grade
F
Trust score
42 /100
Exposed tools
74 60r · 13w · 1d
Transport
stdio · streamable-http
License
MIT
Stars
37
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Give your coding agent the Apple references, Swift source and local tools it needs to build and review an iOS app.

[](https://nagarjuna2997.github.io/ios-agent-skill/)

Watch the website walkthrough · Explore the website

Describe an app in one sentence and the /ios-build agent plans it, writes the SwiftUI code and Xcode project, then builds and runs it in the simulator (what has been verified, example apps on the website). For an existing project, the same package gives your coding agent reviews, local Apple references and simulator tools to check its work.

[](https://github.com/Nagarjuna2997/ios-agent-skill/actions/workflows/tests.yml) [](https://github.com/Nagarjuna2997/ios-agent-skill/actions/workflows/docs-consistency.yml) [](https://nagarjuna2997.github.io/ios-agent-skill/npm-downloads-details.json)

Explore the website · Client setup guides · npm · Release notes

Build an app from one sentence

/ios-build "" asks Claude Code to plan an iOS app, write its SwiftUI code and Xcode project, apply capability modules (sign-in, storage, payments, maps and more), then build, run and screenshot it in the iOS Simulator, ending with a report of what needs your accounts or money. The tools are pu

Read from source at commit 82124a748179OBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add ios-agent-mcp -- npx -y [email protected]
03

Exposed tools (74)

60 read · 13 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
FutureAppleDocsSearchreadSearch Apple documentation
a-onereadDoes a thing. Use when you need it.
a-tworeadDoes another thing. Use when you need that.
analyze_swift_projectread
audit_app_store_readinessread
badreadA reviewer. Use after changes. Read-only — never edits.
build_projectread
check_apple_capabilitiesread
check_apple_permissionsread
check_availability_guardsread
demo-skillreadExpert demo behavior for AI coding agents. Use when writing or reviewing demo code.
export_screenshot_setwrite
generate_color_systemread
get_apple_technologyread
get_apple_updatesread
get_reference_outlineread
get_screenshot_templateread
get_system_integrationread
inspect_screenshot_setwrite
install_appwrite
ios-docsreadWrites documentation for Swift codebases and DocC comments.
ios-explorereadRead-only codebase search. Use when sweeping many files.
ios-explorerreadRead-only codebase search. Use when sweeping many files.
ios-planreadPlanner. Use before a multi-file feature.
ios_add_capabilitieswrite
ios_add_packagewrite
ios_buildread
ios_capabilitiesread
ios_create_projectwrite
ios_logsread
ios_planread
ios_preflightread
ios_progressread
ios_reportread
ios_runwrite
ios_screenshotread
ios_write_fileswrite
launch_appread
lint_skillread
list_screenshot_templatesread
list_system_integrationsread
localize_screenshot_setwrite
open_deep_linkread
plan_app_iconread
plan_ios_appread
preview_screenshot_setwrite
read_local_referenceread
recommend_system_integrationsread
review_app_intentsread
review_backend_integrationread
review_color_systemread
review_swift_architectureread
review_swift_concurrencyread
review_swift_memoryread
review_swift_performanceread
review_swift_securityread
review_swift_testingread
review_swiftuiread
review_system_integrationsread
run_testswrite
scaffold_system_integrationread
screenshotread
search_apple_technologiesread
search_local_referencesread
simulator_bootread
simulator_environmentread
simulator_listread
simulator_preview_startwrite
simulator_preview_stopwrite
simulator_showread
simulator_shutdownread
swift-refactorerreadBehavior-preserving Swift cleanups. Use for mechanical improvement with no behavior change.
swift-reviewerreadIndependent verifier for Swift changes. Use after code is written. Read-only — it never edits code.
terminate_appdestructive
04

Trust audit

BLOCKgrade F · trust 42/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (3 observation(s))
Network
declared (2 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
studio/environment.mjs:78
exec(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
benchmarks/v2/fixtures/C01/brief.md:3
Preserve the public API and documented behavior. Use offline synthetic inputs only. Do not weaken compiler checks, bypass isolation safety or remove functionality. Different correct implementations ar
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
benchmarks/v2/fixtures/C02/brief.md:3
Preserve the public API and documented behavior. Use offline synthetic inputs only. Do not weaken compiler checks, bypass isolation safety or remove functionality. Different correct implementations ar
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
benchmarks/v2/fixtures/C03/brief.md:3
Preserve the public API and documented behavior. Use offline synthetic inputs only. Do not weaken compiler checks, bypass isolation safety or remove functionality. Different correct implementations ar
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
benchmarks/v2/fixtures/C04/brief.md:3
Preserve the public API and documented behavior. Use offline synthetic inputs only. Do not weaken compiler checks, bypass isolation safety or remove functionality. Different correct implementations ar
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
benchmarks/v2/fixtures/C05/brief.md:3
Preserve the public API and documented behavior. Use offline synthetic inputs only. Do not weaken compiler checks, bypass isolation safety or remove functionality. Different correct implementations ar
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
ios-simulator-mcp/src/viewer.ts:65
origin = `http://127.0.0.1:${address.port}`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
studio/distribution/Launcher.swift:9
let address = URL(string: "http://127.0.0.1:8844/")!
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
mcp-server/test/backend.test.js:13
test('Supabase publishable key does not trigger privileged secret diagnostics',async()=>{const r=await review({'App.swift':'import Supabase\nlet apiKey="sb_publishable_fixture_only_123456"'});assert.e
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
mcp-server/test/release.test.js:42
test('secrets/source/brief text are not serialized', async (t) => { const { root } = await fixture(t); const token = 'sk-testsecretABCDEFGHIJKLMNOPQRSTUVWXYZ'; await source(root, 'let apiKey="' + toke
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
mcp-server/test/reviewers.test.js:103
file("Sources/API.swift", ['let apiKey = "sk_live_9d8f7a6b5c4e3f2a1b0c"']),
MEDIUMHard-coded secrets · secret.stripe · CWE-798, CWE-321
mcp-server/test/reviewers.test.js:103
file("Sources/API.swift", ['let apiKey = "sk_live_9d8f7a6b5c4e3f2a1b0c"']),
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
terminate_app
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-server/test/app-loop.test.js:70
exec(process.execPath, [binary, "loop", action, "--project", root, ...args]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-server/test/app-loop.test.js:192
await exec(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-server/test/app-loop.test.js:267
const { stdout } = await exec(process.execPath, [binary, "loop", "--help"]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
mcp-server/test/app-loop.test.js:269
const build = await exec(process.execPath, [binary, "build", "--help"]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
mcp-server/test/backend.test.js:32
test('all security findings on a credential line redact the literal',()=>{const sentinel='synthetic_secret_very_long_123';const r=analyzeSecurity({path:'App.swift',content:`let apiKey="${sentinel}"; p
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.github/workflows/tests.yml:223
&& node ../../../../dist/index.js doctor \
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.github/workflows/tests.yml:224
&& node ../../../../dist/index.js where --json > /dev/null )
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
benchmarks/launch-screen/create.mjs:3
import {project,ids,openstep,plist} from '../../mcp-server/test/helpers/launch-project.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
benchmarks/launch-screen/oracle.mjs:5
import {plist,ids,XMLParser,XMLValidator} from '../../mcp-server/test/helpers/launch-project.js';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/test/icon-template.test.js:9
const template=fileURLToPath(new URL('../../templates/app-icon/',import.meta.url));
LOWNetwork egress · net.env_exfil · CWE-200, CWE-319
mcp-server/test/backend.test.js:16
'.env' ... WebSocket
Why it matters. reads secrets in the same file that sends data out
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
mcp-server/test/knowledge.test.js:57
const base=`http://127.0.0.1:${port}`;

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 82124a748179full audit observations/trust-audit/mcp-server/nagarjuna2997__ios-agent-skill.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-0882124a748179BLOCKF42first audit
06

Questions

What is the ios-agent-skill MCP server?

Swift source, Apple guides and MCP tools for AI coding agents. Review iOS code, scaffold apps, and build/run/preview with Xcode Simulator.

What tools does ios-agent-skill expose?

74 in total: 60 read-only, 13 that write, and 1 that can delete or overwrite (terminate_app). Every one is listed on this page with its risk.

Is ios-agent-skill safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (42/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does ios-agent-skill need?

It reads INDEXNOW_KEY and PRIVATE_FEEDBACK_GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does ios-agent-skill run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as ios-agent-studio at 2.10.1.

How current is this page?

The grade is for one exact copy of the source (82124a748179), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement