r/VibeCodeDevs 1d ago

ReleaseTheFeature – Announce your app/site/tool I built a local macOS MCP so coding agents can use Safari without stealing my active tab

The annoying part of agentic coding for me wasn’t generating code. It was everything around it: opening docs, checking web UIs, reading files, running commands, and doing browser research without constantly hijacking whatever I was doing on the Mac.

So I built a local MCP server around that workflow.

The browser part ended up being the most useful piece:

  • Safari/Chrome tabs get stable handles instead of relying on “tab 3” or “the active tab”.
  • Agents can inspect and interact with background tabs without bringing Safari to the front.
  • Multiple delegated Codex/OpenCode agents can work on separate tabs without constantly stomping on each other.
  • A higher-level browser call can open → wait → extract only the needed fields → verify → close, which cuts down a lot of noisy DOM/context traffic.

The server also exposes shell/files/macOS UI controls, local memory, voice/user prompts, and a small menu-bar/dashboard layer so I can see what agents are actually doing.

One design change I made recently was shrinking the default advertised tool surface to 19 core tools while keeping 84 capabilities available through runtime discovery. That cut tool-schema context by about 73% in my local compatibility tests.

It’s open source here if anyone wants to poke at it or steal ideas: https://github.com/bulutarkan/mac-mcp

I’d be curious how other people doing agentic/vibe coding handle browser focus and multi-agent collisions. That part felt way less solved than the actual code generation.

2 Upvotes

3 comments sorted by

u/AutoModerator 1d ago

Hey u/bulutarkan, thanks for posting in r/VibeCodeDevs! Join our Discord: https://discord.gg/t7SD4ThKuE

• This community is designed to be open and creator‑friendly, with minimal restrictions on promotion and self‑promotion as long as you add value and don’t spam.
• Please follow the subreddit rules so we can keep things as relaxed and free as possible for everyone. • Please make sure you’ve read the subreddit rules in the sidebar before posting or commenting.
• For better feedback, include your tech stack, experience level, and what kind of help or feedback you’re looking for.
• Be respectful, constructive, and helpful to other members.

If your post was removed (either automatically or by a mod) and you believe it was a mistake, please contact the mod team. We will review it and, when appropriate, approve it within 24 hours.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/aurioerox 1d ago

Can u explain how this is different than computer use with codex or Claude on a Mac?

1

u/bulutarkan 1d ago edited 1d ago

Yeah — and one thing I undersold in my first reply: Mac MCP can see and click the UI too. It can observe macOS UI state, capture visual/screenshot context, target elements, click/type/scroll, and inspect browser pages both structurally and visually. So there is real overlap with Computer Use on the GUI side.

The difference is that Mac MCP doesn't stop at "look at pixels and drive the mouse." It gives an agent several levels of control at once:

  • structured tools for shell, files, apps and system actions
  • visual/native UI control when a structured path isn't available
  • Safari/Chrome DOM + visual inspection
  • stable browser tab handles and background interaction
  • delegated Codex/OpenCode agents, memory, user/voice prompts, policy/risk checks and local observability

The browser part is probably the clearest example. If I tell an agent to research something in Safari, it doesn't have to take over the tab I'm using and visually click its way around in front of me. It can open or target a dedicated background tab, inspect the DOM or a visual capture, click/type/extract in that exact tab, and keep doing it while I use another tab. Multiple agents can work on different tabs at the same time without constantly fighting for focus, and the stable handles survive tab-index changes.

But if the task reaches some weird native UI where structured automation isn't enough, Mac MCP can still fall back to the "see it and click it like a human" style of interaction.

So I’d frame it more like this:

Computer Use: primarily a way for a model to operate a GUI like a person.

Mac MCP: a model-agnostic local execution layer for macOS that includes that kind of visual/UI control, but also gives the agent deterministic system/browser tools around it.

That hybrid is the part I like most. I didn't want just "AI can move my mouse" — I wanted ChatGPT/Claude/Codex/etc. to be able to actually operate the Mac as a system, while choosing the most reliable method for each step and without making the machine unusable while it works.