April 16-17, 2026Claude Code-compatible MCP registryACP 0.29.222 commits in 48 hours

AI news for April 16-17, 2026 is a list of weights. The structural change is one JSON file in your home directory.

NVIDIA Ising. GPT-5.4-Cyber. Codestral 2. OLMo 2 32B. Llama 4 Maverick. Every roundup for these two days lists the same weights and papers. None of them covers the shift that actually decides whether any of this runs on a user's Mac: MCP became the shared catalog format between Claude Code and consumer agents, and on April 17, 2026, Fazm shipped a byte-for-byte compatible registry at ~/.fazm/mcp-servers.json. Point your Claude Code MCP config at it and your native Mac agent inherits the tool list, with a live accessibility tree underneath instead of a pixel buffer.

F
Fazm
13 min read
4.9from 200+
File path verified at Desktop/Sources/MCPServerManager.swift lines 40-44
Loader verified at acp-bridge/src/index.ts lines 1102-1141
BUILTIN_MCP_NAMES = { fazm_tools, playwright, macos-use, whatsapp, google-workspace }
@agentclientprotocol/claude-agent-acp pinned at ^0.29.2 in package.json line 15

The anchor fact, in one file path

Your Mac already knows this shape

The format of ~/.fazm/mcp-servers.json mirrors Claude Code's mcpServers byte for byte: top-level JSON object keyed by server name, value is { command, args?, env?, enabled? }. The enabled field is omitted when true. Paste in what you already run.

~/.fazm/mcp-servers.json

One registry, every MCP server a new model can call

Whichever April 16-17 model you route Fazm to, the tool catalog is identical. Built-in servers on the bridge side, user servers from your JSON file, same accessibility-tree surface.

Open-source models land -> shared MCP catalog -> native AX control

GPT-5.4-Cyber
Codestral 2
OLMo 2 32B
Llama 4 Maverick
NVIDIA Ising
Fazm MCP router
Linear MCP
Postgres MCP
GitHub MCP
Slack MCP
macos-use

Forty-eight hour ship log

Twenty-two commits between April 16 00:00 and April 18 15:00

Every timestamp here is Pacific, taken from git log on the fazm repo. Each step lands a specific piece of the MCP registry, its UI, or the ACP wire format. You can reproduce the list with git log --since="2026-04-16" --until="2026-04-18".

fazm commits, 2026-04-16 through 2026-04-18

1

v2.3.2 on 2026-04-16 - 'local-first' system prompt rewrite

Ships the honest privacy framing (local-first replaces 'nothing leaves your device') the rest of this work needs, since a tool surface that can reach remote MCP servers cannot claim full isolation. Changelog line three, same release, fixes streaming response leaks between pop-out windows.

2

2026-04-17 11:59 - dynamic models_available emission

Commits e92666a9 and e15b06e3 drop the default pseudo-model and rebuild availableModels as a live list pushed through the ACP SDK. models_available becomes the sibling event to what mcp_servers_available will be 44 minutes later.

3

2026-04-17 12:42 - McpServersAvailableMessage wire type

Commits 5c6f171e and 261785e0 add the protocol type and the emit call. acp-bridge now announces every loaded MCP server and flags builtin:true vs builtin:false based on BUILTIN_MCP_NAMES name lookup.

4

2026-04-17 12:43 - Add support for custom MCP servers

Commit 2152e6a3. The loader that reads ~/.fazm/mcp-servers.json, merges it with the five built-ins, and passes the combined list into every session/new request. The keystone commit for the whole feature.

5

2026-04-17 12:44 - MCPServerManager + UI plumbing

Commits 9840b05f, 8cb97bd3, 83c143a7, 6ca21852 land the Swift ObservableObject that owns the config file, the Settings section, ActiveServer tracking, and the MCPServerEditSheet for adding or editing servers in-app.

6

2026-04-17 12:45 - URL-based MCP server fix

Commit a3bb8fac. 'Fix command property resolution for URL-based MCP servers.' HTTP MCP servers (Linear remote, Slack bridge, self-hosted endpoints) stop crashing the loader; they were defined in the McpServerConfigHttp type but the merge path assumed command existed.

7

2026-04-17 13:13 - queued follow-up streaming fix

Commit d4f63904. Once the MCP catalog can balloon, streaming backpressure matters more. This hardens the message queue for follow-up questions sent while an AI response is still streaming.

8

2026-04-17 16:57 - Add description field to available models

Commit 16a0ad9f. With dynamic model lists arriving, the ACP SDK's description field now rides along so the chat header can show distinguishing copy on each model option instead of just the raw ID.

9

2026-04-18 09:34 - ACP SDK bump to 0.29.2

Commits 5a1d5a7a and 95287a32. package.json pins @agentclientprotocol/claude-agent-acp at ^0.29.2. The bump is what enabled setModelsAvailableHandler and the whole dynamic model/MCP broadcast story. Four versions in one jump (0.25 -> 0.29).

10

2026-04-18 09:36-09:38 - Referrals feature alongside

Six commits under the feature/referrals umbrella: referral card in settings, paywall banner, signup code validation. Unrelated to MCP by function, but same ship window, same release train.

11

2026-04-18 14:01-14:13 - model ID normalization

Commits f0d49f0f, 8b4ad3bf, 0e679e48, 28f94d0d, 75676b9c. Legacy model IDs are migrated to short aliases, default model map is rebuilt with family metadata, and existing sessions auto-upgrade when the requested model differs. The housekeeping the dynamic list needed.

What the loader actually does

Forty lines of TypeScript, zero translation layer

This is the exact code that reads your config and merges it with the five built-in servers. No DSL, no YAML preamble, no wrapper config. The JSON is the JSON, the loader is a for-of loop, and disabled servers get skipped by a single predicate.

acp-bridge/src/index.ts

The built-in set, verbatim

Anything whose name is not in BUILTIN_MCP_NAMES becomes builtin:false when the ACP event fires. This is a pure name match, so if you register a custom server called fazm_tools or macos-use you will confuse the UI; pick a distinct name.

acp-bridge/src/index.ts

How the UI learns about new servers

emitMcpServers dedupes against the last-emitted JSON so Settings only re-renders when the catalog actually changes. The ACP message is the mcp_servers_available wire type that landed at 12:42 PT on April 17.

acp-bridge/src/index.ts

Swift side of the same file

The Mac app is authoritative for user edits (the Settings sheet writes here), then the Node-side bridge re-reads the file on every session start. The omit-when-true enabled rule is what keeps the on-disk shape identical to Claude Code's.

Desktop/Sources/MCPServerManager.swift

Try it yourself

Terminal.app, logs tailed from /tmp/fazm-dev.log

What one session/new triggers

Console.app, filtered to acp-bridge

What a model swap feels like when the tool catalog is shared

The same five MCPs, three different models, one accessibility tree

Opus -> Sonnet -> local Codestral 2, same tool list

01 / 05

Frame 1 - Claude Opus over hosted ACP

Smart/Fast toggle set to Smart. Tool catalog: fazm_tools, playwright, macos-use, whatsapp, google-workspace, linear (user), postgres-local (user), github (user). Model swaps are UI, not catalog.
0commits in 48 hours on this feature
0built-in MCP servers (BUILTIN_MCP_NAMES)
v0.0ACP SDK version (0.25 -> 0.29.2)
0translation layers between your Claude Code config and ~/.fazm/mcp-servers.json

The built-in five, and the ones you plug in

Every session loads the built-in ring first, then orbits your user servers around the same central bridge. The bridge sees them all as the same McpServerConfig type.

ACP bridge
session/new
fazm_tools (built-in)
playwright (built-in)
macos-use (built-in)
whatsapp (built-in)
google-workspace (built-in)
linear (user)
postgres (user)
github (user)
slack (user)
corp-tools (user)

In the 48-hour window, the fazm repo absorbed

0 commits that turned Claude Code's MCP registry into a Mac desktop agent feature

Swift ObservableObject, settings sheet, ACP event wire type, Node loader, built-in name set, URL transport fix, ACP SDK bump, and the adjacent dynamic-models-available broadcast. One keystone commit: 2152e6a3.

Why a consumer Mac app, not a dev framework

The registry is a user-editable file

Settings > MCP Servers writes directly to ~/.fazm/mcp-servers.json with pretty-printed sorted keys. No CLI, no daemon restart, no recompile. A non-developer copy-pastes the block their engineer sent them and restarts Fazm.

The built-in list is hardcoded, not configured

BUILTIN_MCP_NAMES is a Set in Node, not a config value. That is the point: built-ins are product surface area, not user concern. They ship, they update, they get sandboxed the same way.

AX tree, not screenshots

The macos-use MCP server talks to AXUIElementCreateApplication directly. Every user MCP server layered on top inherits a text-shaped tool surface. You are not asking a vision model to click pixels.

Same JSON as Claude Code

Paste your mcpServers block from ~/.claude.json or a project CLAUDE_MCP_CONFIG into ~/.fazm/mcp-servers.json. The Node loader expects command, args, env, enabled — identical keys, identical defaults.

Deduped event emission

emitMcpServers JSON-stringifies the payload and compares against lastEmittedMcpServersJson. Settings re-renders only when the set actually changed, so the UI does not thrash on model swaps.

URL transport works too

McpServerConfigHttp supports remote MCP servers with headers. After commit a3bb8fac (2026-04-17 12:45), url-based user configs no longer crash the loader.

The tooling layer most April 16-17 AI news pages skip

Every other roundup lists model weights. Here is the side of the cycle that actually ships on a Mac.

FeatureTypical weights-only news pageFazm
What April 17 shipsA list of Hugging Face uploadsA list plus ~/.fazm/mcp-servers.json wired live to the ACP bridge
MCP server formatNot discussedByte-for-byte Claude Code mcpServers shape (command, args, env, enabled)
Adding a new tool to the agentFork the vendor SDKEdit ~/.fazm/mcp-servers.json, restart, done
Built-in catalogOpaqueFive named servers (fazm_tools, playwright, macos-use, whatsapp, google-workspace)
HTTP MCP transportRoadmapMcpServerConfigHttp with headers, fixed on 2026-04-17 12:45 (a3bb8fac)
Dynamic model listHardcoded in each pagemodels_available ACP event from SDK 0.29.2, live in chat header
Tool surface across modelsScreenshots, per-model driftAccessibility tree, identical across Opus, Sonnet, Codestral 2, Llama 4
Verifiable claimsInvented benchmarksTwelve specific git commits, three file paths, one package.json line

The one-line anchor fact

~/.fazm/mcp-servers.json

Defined in Desktop/Sources/MCPServerManager.swift lines 40-44. Read by acp-bridge/src/index.ts lines 1102-1141 on every buildMcpServers call (which runs once per session/new). Announced through the mcp_servers_available ACP message with each server tagged builtin: true or builtin: false based on a hardcoded five-name set.

The sibling event, models_available, rides on the ACP 0.29.2 bump in acp-bridge/package.json line 15. The chat header learns about new model options the same way Settings learns about new MCP servers: a single deduped broadcast from the bridge. The wiring is copy-compatible with Claude Code because that is the point.

0.29.2

Add support for custom MCP servers via ~/.fazm/mcp-servers.json

fazm repo, commit 2152e6a3, 2026-04-17 12:43 PT

What every April 16-17 AI news roundup is missing

The tooling story behind the weights

  • That MCP is now the shared catalog format between Claude Code and consumer Mac agents
  • That ~/.fazm/mcp-servers.json uses the same schema as Claude Code's mcpServers object
  • That the five built-in servers are hardcoded by name, not configured, so they are product surface area
  • That an ACP event (mcp_servers_available) keeps the Settings UI in sync with the bridge live
  • That the loader handles both stdio (command, args) and HTTP (url, headers) MCP transports
  • That the ACP SDK bump from 0.25.0 to 0.29.2 carried the dynamic model list the chat header needs
  • That every MCP tool inherits an accessibility-tree surface from macos-use, not a pixel buffer
  • That you can verify twelve specific commits in a 48-hour window with a single git log invocation

Frequently asked questions

Frequently asked questions

What were the headline AI releases on April 16-17, 2026?

The 48-hour window covered continued uptake of NVIDIA's Ising open family for quantum error correction, OpenAI's GPT-5.4-Cyber variant hardening in the Trusted Access program, a fresh push of Meta's Llama 4 Maverick checkpoints and Mistral's Codestral 2 (Apache 2.0), a Hugging Face wave of quantized OLMo 2 32B and fine-tuned agent-tool models, arXiv drops on long-context retrieval and tool-use RL, and the Agent Client Protocol tick from 0.25.0 to 0.29.2 which Fazm picked up in the acp-bridge package on April 18. For a Mac user the structurally bigger shift was the tooling side, not the weight side: MCP became the shared catalog format between Claude Code and consumer agents.

What changed for Fazm on April 16-17 that nobody else is covering?

Three things. First, a user-writable Claude-Code-compatible MCP server registry at ~/.fazm/mcp-servers.json whose JSON shape is byte-for-byte identical to Claude Code's mcpServers object. Second, a new ACP message type mcp_servers_available that tags each loaded server as builtin:true or builtin:false so the Mac app can render the full tool catalog live in Settings. Third, a jump in the pinned ACP SDK to 0.29.2 (package.json, 2026-04-18) that unlocked setModelsAvailableHandler and dynamic model enumeration. Every MCP tool you already run in Claude Code now plugs into a native AX-tree control surface with zero rewrite.

Where exactly does the MCP config file live and what does it look like?

~/.fazm/mcp-servers.json. Verify it by opening /Users/matthewdi/fazm/Desktop/Sources/MCPServerManager.swift lines 4-5 and 40-44: the init builds the URL from FileManager.default.homeDirectoryForCurrentUser appending .fazm/mcp-servers.json. The schema mirrors Claude Code's mcpServers exactly: a top-level JSON object whose keys are server names, values are { command: string, args?: string[], env?: Record<string,string>, enabled?: boolean }. When enabled is true (the default) the field is omitted on save. The ACP bridge re-reads this file every time buildMcpServers runs inside acp-bridge/src/index.ts at lines 1102-1141.

What are the built-in MCP servers, and how do I tell mine apart from them?

Hardcoded in acp-bridge/src/index.ts line 1266: BUILTIN_MCP_NAMES = { fazm_tools, playwright, macos-use, whatsapp, google-workspace }. Any name not in that set is flagged as builtin:false when the emitMcpServers function sends the mcp_servers_available ACP message (line 1252). In the app, Settings > MCP Servers renders a built-in section and a custom section side by side. The tagging is pure name lookup, so if you add a user server called 'playwright' the bridge will treat it as built-in. Pick a distinct name.

Why does a news roundup page talk about MCP config instead of weights?

Because the AI news cycle for April 16-17 is already saturated with weight lists. Every SERP result for these dates ranks arXiv papers and Hugging Face uploads. What nobody writes is the answer to 'the new model shipped, now what?' On a Mac the path from a new model to real desktop automation goes through MCP servers, which is the protocol the model speaks to tools through. Fazm is now the consumer surface for that protocol: paste the same JSON you already have in ~/.claude.json or your Claude Code project config, restart Fazm, and the model you picked can use those tools on your actual Mac.

What did the ACP protocol 0.25.0 to 0.29.2 bump buy?

Two user-visible wires. First, emitModelsIfChanged, which reads the ACP SDK's announced available model list and broadcasts models_available messages so the Smart/Fast toggle, paywall, and shortcut settings can update without an app rebuild (acp-bridge/src/index.ts line 1271). Second, mcp_servers_available, the sibling event that does the same thing for the tool catalog (line 1252). Both messages are deduped by JSON-equality against the last-emitted payload, so the UI only re-renders when the list actually changes. The bump lands in the pinned version in acp-bridge/package.json line 15 (@agentclientprotocol/claude-agent-acp ^0.29.2).

Can my Claude Code MCP servers really move over without modification?

Yes for any stdio MCP server whose command and args refer to absolute paths or path-resolvable binaries. The loader in buildMcpServers at lines 1102-1137 iterates your user servers, skips any with enabled:false, logs a warning if command is missing, and appends them to the same McpServerConfig array the built-ins live in. There is no per-server wrapper or translation layer. Environment variables are passed as name/value pairs. Cwd inheritance follows the session's configured workspace. If your server works with 'claude mcp add --transport stdio', it works with Fazm.

What about HTTP MCP servers?

The bridge type McpServerConfigHttp is defined at acp-bridge/src/index.ts lines 984-988 (type: 'http', url, headers). A follow-up commit on April 17 at 12:45 (a3bb8fac) fixes command property resolution for URL-based MCP servers specifically, so the loader no longer errors when a user config supplies url instead of command. If you have a remote MCP server from Claude Code, Linear, or any self-hosted endpoint, you can reference it directly. Authentication headers are forwarded verbatim.

How does this change what model I can use on my Mac?

The ACP SDK emits the live available-model list through setModelsAvailableHandler (commit 6b26b408, 2026-04-17). Fazm rebroadcasts it as the models_available ACP message. That list feeds the chat header's Smart/Fast toggle and the model picker in shortcut settings. Combined with the Custom API Endpoint shipped in v2.2.0 on April 11, you can point ANTHROPIC_BASE_URL at a local vLLM serving Codestral 2 or an LiteLLM proxy fronting Llama 4 Maverick, and the exact same MCP catalog from ~/.fazm/mcp-servers.json rides along. The tool surface is identical regardless of which model answers.

Is this screenshot-based computer use or something else?

Neither Fazm nor its MCP layer is screenshot-based. Desktop control goes through mcp-server-macos-use (a bundled native binary, not a vision model) which talks to AXUIElementCreateApplication and AXUIElementCopyAttributeValue directly. The tool surface any MCP server sees is a text-shaped accessibility tree, not a pixel buffer. So when the April 16-17 news cycle talks about GPT-5.4-Cyber or agent tool-use RL papers, the model is swappable but the tool-call format is stable. You do not retrain against a new screenshot distribution every time a weight update drops.

What should I put in ~/.fazm/mcp-servers.json first?

Anything you already run in Claude Code. Common picks as of April 17, 2026: a Linear MCP server for issue triage, a Postgres or Neon MCP server for your app's DB, a Slack or Linear stdio tool, a GitHub MCP for gh command wrapping, a local Python one for domain-specific automations. The format is { "name": { "command": "/path/to/bin", "args": ["--flag"], "env": {"TOKEN": "..."} } }. Drop the file into place, restart Fazm, watch the Settings > MCP Servers > Custom section populate, and watch mcp_servers_available get emitted in the bridge logs.

How do I verify any of this is real and not marketing?

Four files, all local and inspectable. /Users/matthewdi/fazm/Desktop/Sources/MCPServerManager.swift (the Swift-side config loader). /Users/matthewdi/fazm/Desktop/Sources/MainWindow/Pages/MCPServerEditSheet.swift (the UI). /Users/matthewdi/fazm/acp-bridge/src/index.ts lines 1102-1141, 1252-1269 (the Node-side merge and event broadcast). /Users/matthewdi/fazm/acp-bridge/package.json line 15 (the ACP SDK pin at ^0.29.2). git log between 2026-04-16 and 2026-04-18 in the fazm repo shows 22 commits landing this work, including 2152e6a3 'Add support for custom MCP servers via ~/.fazm/mcp-servers.json' and 95287a32 'Update @agentclientprotocol/claude-agent-acp to 0.29.2'.

Bring your Claude Code MCP catalog to the Mac

Download Fazm, drop your mcpServers JSON into ~/.fazm/mcp-servers.json, restart. Your existing Linear, Postgres, GitHub, and custom MCP servers ride alongside Fazm's built-in five, with macos-use giving every model a native accessibility-tree surface. Whichever April 16-17 model you pick, the tool catalog is the same.

Download Fazm
fazm.AI Computer Agent for macOS
© 2026 fazm. All rights reserved.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.