SimAgentation MCP server
2026년 10월 6일 커밋개발자가 브라우저에서 실행 중인 iOS simulator에 주석을 달고, 해당 메모, 스크린샷 및 요소 상세 정보를 MCP를 통해 코딩 에이전트에 전달할 수 있습니다.
다른 이름 lcandy2/sim-agentation
- 스타
- 62
- Tools
- 7
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 6일
- 라이선스
- Apache-2.0
SimAgentation MCP란?
SimAgentation은(는) MCP server입니다. 개발자가 브라우저에서 실행 중인 iOS simulator에 주석을 달고, 해당 메모, 스크린샷 및 요소 상세 정보를 MCP를 통해 코딩 에이전트에 전달할 수 있습니다. 7개 도구를 제공합니다. 예: sim_get_pending, sim_get_all, sim_watch.
프로젝트 README에서 생성된 요약
SimAgentation MCP server 정보
SimAgentation은 브라우저에서 실행 중인 iOS simulator에 주석을 달고 해당 메모를 코딩 에이전트에 전달하는 기능을 제공합니다. 개발자는 simulator 화면을 고정하고 요소에 마우스를 올려 검사한 다음, 요소를 클릭하거나 영역을 드래그하여 변경해야 할 내용을 작성합니다. 모든 정보는 simulator의 accessibility tree에서 읽어오므로, SDK를 추가하지 않고도 실행 중인 모든 simulator의 모든 앱에서 작동합니다. 페이지는 Xcode의 Device Hub 레이아웃을 따르며, Home, 스크린샷, 녹화, 회전 컨트롤과 함께 simulator 생성, 시작, 이름 변경, 초기화 및 삭제 기능을 제공합니다.
Apple Silicon 기반 macOS에서 Xcode 26을 통해 실행되며, Homebrew로 설치하여 로컬 포트 38470에서 서비스하거나 Claude Code, Codex, Cursor용 플러그인으로 추가할 수 있습니다. MCP server는 7개의 도구를 가진 stdio 프로세스이며, 에이전트는 `claude mcp add sim-agentation -- sim-agentation mcp`와 같은 명령어로 이를 등록합니다. MCP를 지원하지 않는 에이전트를 위해 주석을 Markdown으로 복사할 수도 있습니다. Claude Code에서는 각 주석이 대기 상태 채널을 포함하여 실시간 대화로 전달될 수 있습니다.
SimAgentation의 차별점은 각 메모와 함께 전송되는 상세 정보입니다. 요소, 해당 화면, 소스 검색을 위한 문자열, 그리고 빨간색 박스가 표시된 스크린샷과 근접 촬영된 스크린샷 등 두 개의 스크린샷이 함께 전송됩니다. 스트림은 VideoToolbox 및 WebCodecs를 통해 약 60 fps의 H.265 또는 H.264를 사용하며, RealityKit으로 렌더링된 3D iPhone Duo 뷰를 제공합니다. 네이티브 측은 Xcode의 private framework에 의존하므로 Xcode 업데이트 시 작동이 중단될 수 있습니다.
활용 사례
- 1정렬이 어긋난 설정 행 보고simulator를 고정하고 설정 행을 선택한 다음, 어떤 요소가 잘못 위치해 있고 어떻게 보여야 하는지 에이전트에게 알려줍니다.
- 2MCP 없이 대기 중인 메모 전달모든 대기 중인 주석을 Markdown으로 클립보드에 복사하여 MCP 연결이 없는 에이전트에 붙여넣습니다.
- 3접힌 폴더블 화면에 주석 달기구부러진 iPhone Duo 화면에 박스를 그린 다음, 동일한 화면의 펼쳐진 상태 스크린샷을 에이전트에게 전달합니다.
- 4라이브 세션으로 메모 전송새 메모를 확인하기 위해 루프를 폴링할 필요 없이, 각 주석을 작성하는 즉시 실행 중인 Claude Code 대화로 전달합니다.
- 5정확한 선택을 위한 SDK 추가프로젝트에 선택 사항인 SDK를 설치하여 태그된 뷰가 해당 뷰의 파일과 라인 정보를 보고하도록 합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
SimAgentation MCP 도구 7
README에서 감지됨sim_get_pendingsim_get_allsim_watchsim_acknowledgesim_resolvesim_dismisssim_reply
| sim_get_pending | — | |
| sim_get_all | — | |
| sim_watch | — | |
| sim_acknowledge | — | |
| sim_resolve | — | |
| sim_dismiss | — | |
| sim_reply | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능lcandy2/sim-agentation is public and reachablegithub.com/lcandy2/sim-agentation ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-06github.com/lcandy2/sim-agentation ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음7 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기SimAgentation
Annotate a running iOS simulator in your browser, and hand the notes to your coding agent.
Features | Getting started | Design Mode | Connect an agent | SDK | Configuration

[!TIP] Let your agent set it up. Paste this into Claude Code, Codex, Cursor or any other coding agent:
Set up SimAgentation for me by following https://github.com/lcandy2/sim-agentation/raw/refs/heads/main/SETUP.md
SimAgentation is Agentation for iOS. Freeze the simulator's screen, click an element or drag a box around anything, and write what should change. Your agent gets the element, the screen it is on, strings to search the source for, and two screenshots: the whole screen with the box drawn in red, and a close-up of the box.
Your app needs no SDK. Everything comes from the simulator's accessibility tree, so it works with any app on any booted simulator, Apple's own included.
[!NOTE] The native side uses Xcode's private CoreSimulator, SimulatorKit and AccessibilityPlatformTranslation frameworks, so a new Xcode release can break it until it's updated.
Features
- Design Mode: hover to see elements, then click one or drag a box over any area. Shift adds more to the selection, and one note covers them all; ↑ and ↓ walk to the parent element and back.
- Straight to your agent: an MCP server with seven tools. In Claude Code, each annotation can land in a running session as you send it, an idle one included. Or copy every pending annotation as Markdown and paste it anywhere.
- A page laid out like Xcode's Device Hub: the device drawn with Xcode's own DeviceKit artwork, hardware buttons that slide out on hover, and Simulator.app's shortcuts. Simulators can be created, started, renamed, reset and removed from the page.
- A hardware-encoded stream: H.265 or H.264 from VideoToolbox, decoded by WebCodecs, at about 60 fps and 3–8 Mbit/s while scrolling. On Auto, the codec, resolution, bitrate and frame rate adapt to the browser and to what the connection carries.
- iPhone Duo in 3D: Xcode 27.1's foldable, drawn with Apple's own model and posed by its hinge, with Device Hub's pose picker and a hinge slider. Design Mode works on the bent screen too.
- An optional SDK for apps you build: exact selections, and the file and line each tagged view comes from.
Getting started
You need macOS on Apple Silicon with Xcode 26 (27.1 for iPhone Duo). SETUP.md walks an agent through everything below; the prompt at the top of this page hands it over.
With an agent, the plugin is all you need: it brings SimAgentation along. On its own, install it with Homebrew:
brew install lcandy2/tap/sim-agentation
sim-agentation serve --open
brew services start sim-agentation keeps it running in the background instead.
To build from source you also need Node with pnpm. From the repo:
pnpm install
pnpm build # the UI into app/web/dist, then the Swift binary
pnpm start # app/host/.build/debug/sim-agentation serve --open
app/scripts/package.sh builds the release tarball the formula and the plugins install. To release, run the Release workflow in the Actions tab with the new version: it sets the version everywhere, publishes the release, and points the Homebrew formula at it; the plugins follow from main.
The page opens on http://localhost:38470. Pick a simulator on the left; one that isn't running shows a Start button, and nothing boots until you press it.
[!TIP] While
pnpm startruns,pnpm devadds hot reload: the page on 38470 loads the UI from the Vite dev server on 38472, so edits show up without a reload.
Using it
The page follows Xcode's Device Hub. The simulators sit on the left, with + to create one and a filter for all, running, iPhone and iPad. The device is in the middle, with Home, screenshot, screen recording (MP4) and rotate below it. The inspector on the right has two tabs: device info with the stream's settings, and your annotations. … holds everything else, from shutting down, renaming or resetting the simulator to Simulator.app's Device and Features menus.
In Interact mode you use the app: click and drag to touch, scroll with the wheel, type with the keyboard. A narrow window puts the device list away first, then the inspector, and brings them back when it widens.
Design Mode
- Press ⇧⌘D. The screen freezes and the accessibility tree loads.
- Hover to see elements. ↑ selects the parent, ↓ goes back.
- Click an element, or drag a box over any area. Hold Shift to add to the selection.
- Write what should change and press Return (⇧Return for a new line). The annotation shows up in the inspector, numbered on the screen. Click its number to open it again and change the note, or pick something else for it.
- Press Esc to drop the selection, and again to go back to the live screen.
Rotated devices work too, and the screenshots go to the agent upright. Click Copy in the annotations tab to put every pending annotation on the clipboard as Markdown, for an agent without MCP.
Shortcuts
| Keys | What they do |
|---|---|
| ⇧⌘D | Design Mode, in and out |
A, I |
Design Mode, Interact |
| ↑ ↓ | The parent element, and back (Design Mode) |
| ↩ | Add the note (⇧↩: a new line) |
| Esc | Drop the selection, then leave Design Mode |
S |
Compare the SDK's view tree with the pixel fallback |
| ⌘S, ⌘R, ⌃⌘C | Save, record or copy the screen |
| ⇧⌘H, ⌘L | Home, lock |
| ⌘← ⌘→ | Rotate left, right |
| ⌘↑ ⌘↓ | Volume up, down |
| ⌘=, ⌘-, ⌘4 | Zoom in, out, fit |
The rest of Simulator.app's shortcuts (shake, appearance, text size, Face ID) work too; … lists them all.
The stream
The stream picks its codec on its own: H.265, else H.264, else JPEG, taking the first this browser decodes in hardware, and moving on if the host can't encode it or nothing decodes within a few seconds. Video runs at about 60 fps, the simulator's own rate, at 3–8 Mbit/s while scrolling, against about 85 Mbit/s for JPEG.
On Auto, resolution, bitrate and frame rate follow too (auto.js). Once a second the host reports how far behind the viewer is, and the page how late that report arrived, which also catches a backlog in a tunnel or proxy. When either grows, the bitrate drops to what got through, then the resolution halves, then the frame rate drops to 30 fps. While anything is held back, the host pads the stream briefly to test for room, so a connection that recovers is used again within seconds. A hidden tab gets 5 fps. The info tab shows what's running and why, and lets you pin a codec, turn on 4:2:2 chroma for H.265, halve the resolution or set the bitrate.
iPhone Duo
Xcode 27.1's foldable is drawn as Device Hub draws it: Apple's own model from Xcode, rendered on the Mac with RealityKit and streamed like the screen. The hinge poses the book. The stream follows whichever of its two panels is lit, and touches and the chrome go with it. Under the device sit Device Hub's pose picker (closed, open, flat) and a hinge slider; the cube button shows the lit panel flat in its chrome instead.
Touches land on whichever half of the bent screen they hit. In Design Mode, boxes and labels lie on the screen in perspective, cut along the hinge, and a half turned more than 60° away from you is left out. Fold it while annotating and the screen goes live, then freezes again once the hinge settles. The screenshots that go to the agent are of the screen itself, flat and upright.
Folding and turning go through a small helper that runs inside the simulator and sends the HID events Device Hub sends, and so do the hardware keys. The host builds it from app/host/Guest/HingeControl the first time it's needed.
Connect an agent
An agent takes two things from SimAgentation: the MCP server, which hands it your annotations, and two skills that teach it to work through them. The plugin brings both, and SimAgentation itself, to Claude Code, Codex and Cursor; any other agent takes the skills and the server on their own.
Claude Code, Codex and Cursor: the plugin
This repository is a plugin marketplace for all three.
# Claude Code
/plugin marketplace add lcandy2/sim-agentation
/plugin install sim-agentation@sim-agentation
# Codex
codex plugin marketplace add https://github.com/lcandy2/sim-agentation.git
codex plugin add sim-agentation@sim-agentation
In Cursor, add the plugin from this repository as Cursor's guide describes.
The first time the plugin's MCP server starts, it downloads the SimAgentation release that matches the plugin (about 2 MB), checks it against the release's SHA-256, and keeps it in ~/Library/Caches/sim-agentation. An installed copy of the same version, from Homebrew for instance, is used instead, and SIM_AGENTATION_BIN points it at a build of your own. The server also starts the page on http://localhost:38470 when it isn't running; open it in your browser.
The skills: npx skills
The skills CLI installs them into Claude Code, Codex, Cursor and the other agents it supports:
npx skills add lcandy2/sim-agentation # both skills
npx skills add lcandy2/sim-agentation --skill sim-agentation # one of them
npx skills add lcandy2/sim-agentation -a claude-code -a codex # for these agents only
They live in skills/. sim-agentation works through annotations: what each line of one tells the agent, how to find code whose label was built at runtime, and when to reply instead of editing. sim-agentation-sdk adds the SDK to an app, with a script that adds the package to a plain .xcodeproj.
The MCP server
claude mcp add sim-agentation -- sim-agentation mcp
codex mcp add sim-agentation -- sim-agentation mcp
Any client that runs a stdio MCP server takes the same command. The server starts the web server if it isn't running. From a source build, the command is /path/to/Sim-Agentation/app/host/.build/debug/sim-agentation mcp.
Annotations as you send them
In Claude Code, each annotation can land in a conversation as you send it: start or resume it with the server, added with claude mcp add, as a channel. An idle session takes them too, with no sim_watch loop:
claude --dangerously-load-development-channels server:sim-agentation
claude --resume <session> --dangerously-load-development-channels server:sim-agentation
[!IMPORTANT] Channels are a Claude Code research preview. Until a channel is on Anthropic's allowlist it needs this flag and a confirmation at startup, and it needs a claude.ai login or a Console API key. Without the flag the pushes are dropped and the tools work as before.
If several sessions get the same annotation, the first to acknowledge it takes it on, and the others are told to leave it.
Tools
| Tool | What it does |
|---|---|
sim_get_pending |
Pending annotations, with element info and screenshot paths |
sim_get_all |
All annotations, finished ones included |
sim_watch |
Waits until you add an annotation, then returns the pending list |
sim_acknowledge |
Marks one as in progress, for this session alone |
sim_resolve |
Marks one as fixed, with a summary |
sim_dismiss |
Declines one, with the reason |
sim_reply |
Posts a message on one |
Status changes and replies show up in the browser's inspector.
SimAgentationPlus SDK
Add SimAgentationPlus to an app you build yourself for exact selections and source locations. Everything compiles out of Release builds.
It builds for every Apple platform: iOS and iPadOS 17, Mac Catalyst 17, macOS 14, tvOS 17, watchOS 10 and visionOS 1, or later. Where UIKit draws the interface it walks the views and layers; on macOS and watchOS it reports the .simTag() views only.
In Xcode, choose File > Add Package Dependencies, enter https://github.com/lcandy2/sim-agentation, and add SimAgentationPlus, the package's one library, to your app target. In a Package.swift:
.package(url: "https://github.com/lcandy2/sim-agentation", from: "0.2.1"),
// in your target's dependencies:
.product(name: "SimAgentationPlus", package: "sim-agentation"),
Then start it once and tag the views you want to find:
import SimAgentationPlus
RootView()
.simAgentation() // starts a local inspector on 127.0.0.1:38471 (Debug only)
ShowRow(show: show)
.simTag() // selectable as ShowRow, from ContentView.swift:34
UIKit needs less: every view class your app defines is selectable by name, even without a background, and each annotation names the view controller that owns it. Tag a view to add its source location:
let card = TicketCardView(show: show).simTag() // TicketCardView, from TicketViewController.swift:21
When the app in front has the SDK, parents come from the real view and layer tree instead of pixels, so backgrounds that barely differ from the page still work. Each annotation also gets the app's bundle ID, a Source line with the tagged view's file and line, the owning view controller, and the app-defined view classes around the box. Press S or click SDK while annotating to compare with the pixel-only fallback. assets/examples/DemoApp is a small app with the SDK in place.
Configuration
| Variable | Default |
|---|---|
SIM_AGENTATION_PORT |
38470 |
SIM_AGENTATION_HOME |
sim-agentation in the temporary directory: annotations and their screenshots, kept through a restart of the host but not of the Mac |
SIM_AGENTATION_WEB |
the repo's app/web/ directory (the UI) |
SIM_AGENTATION_SDK_URL |
http://127.0.0.1:38471 |
Rendered device chrome is cached in ~/Library/Caches/sim-agentation.
How it's built
One Swift binary, built from app/host/, runs everything. It serves the page and its API from app/web/dist, speaks MCP, and drives the simulator through a native bridge that streams the screen, sends input and reads the accessibility tree.
| Path | What's there |
|---|---|
app/host/Sources/sim-agentation |
The server, the MCP server, stream sessions, iPhone Duo and its 3D scene |
app/host/Sources/SimBridge |
The simulator bridge: screen capture, encoding, input, accessibility |
app/host/Guest/HingeControl |
The helper that runs inside the simulator for iPhone Duo |
app/web/src |
The Svelte UI, built by Vite into app/web/dist |
Sources/SimAgentationPlus |
The optional in-app SDK, packaged by the root Package.swift |
assets/examples/DemoApp |
A sample app that uses the SDK |
skills |
Agent skills for working through annotations and for adding the SDK |
Without pnpm dev, the page runs app/web/dist; pnpm build or pnpm watch refreshes it. The dev server leaves a token for the host to pass the page, and the page loads from it only when they match, so nothing else on port 38472 can.
Limits
- Without the SDK it doesn't know which source file a view comes from. The agent searches for the labels and identifiers it is given.
- Content without accessibility data, such as custom Canvas or Metal drawing, can only be annotated with a box.
Credits
SimAgentation is released under the Apache License 2.0. NOTICE names the work it adapts.
The simulator code in app/host/Sources/SimBridge is adapted from baguette by tddworks, under the Apache License 2.0 (app/host/Sources/SimBridge/LICENSE-baguette), and so is the iPhone Duo support (Foldable.swift, Guest.swift and Device3D.swift in app/host/Sources/sim-agentation, and the guest helper in app/host/Guest/HingeControl). The streaming pipeline follows baguette's. Recovering collapsed accessibility children (CollapsedChildrenRecovery.swift) is adapted from sim-use by LY Corporation, under the Apache License 2.0 (app/host/Sources/SimBridge/LICENSE-sim-use), and restarting a stale accessibility bridge follows idb. Each adapted file notes what changed.
SimAgentation MCP 질문
SimAgentation MCP는 어떤 도구를 제공하나요?
7개 도구를 제공합니다. 예: sim_get_pending, sim_get_all, sim_watch, sim_acknowledge, sim_resolve.
SimAgentation을 Claude Code 또는 Codex에 어떻게 연결하나요?
저장소를 플러그인 marketplace에 추가하고 sim-agentation 플러그인을 설치하거나, 단일 명령어로 stdio MCP server를 등록하십시오. 플러그인은 일치하는 릴리스를 다운로드하고 웹 페이지를 시작합니다.
SimAgentation을 사용하려면 iOS 앱에 SDK가 필요한가요?
아니요. 주석은 simulator의 accessibility tree에서 가져오므로, SDK 추가 없이도 실행 중인 모든 simulator의 모든 앱에서 작동합니다. 선택 사항인 SDK를 사용하면 정확한 선택 영역과 소스 파일 및 라인 정보를 추가할 수 있습니다.
SimAgentation에서 화면에 주석을 다는 방법은 무엇인가요?
Shift+Cmd+D를 눌러 화면을 고정하고 accessibility tree를 로드한 다음, 요소에 마우스를 올리거나 클릭하거나 박스를 드래그하여 메모를 작성하십시오. Return 키로 메모를 추가하면 inspector로 전송되어 에이전트가 사용할 수 있게 됩니다.
SimAgentation의 요구 사항은 무엇인가요?
Apple Silicon 기반 macOS와 Xcode 26이 필요하며, iPhone Duo 모델의 경우 Xcode 27.1이 필요합니다. Homebrew로 설치하거나 Node 및 pnpm을 사용하여 소스에서 빌드할 수 있습니다.
MCP를 사용하지 않고 주석을 가져올 수 있나요?
네. annotations 탭에서 Copy를 클릭하면 모든 대기 중인 주석이 Markdown 형식으로 클립보드에 복사되어 어떤 에이전트에서도 사용할 수 있습니다.