Skip to content
~/connor.meador
← back to build log
4 min read

Claude Code + MCPs: my AI-assisted dev loop

Not the marketing-page version. The tools I actually run, how I decide which model gets which task, the gate that blocks a release, and where the human still has to think.

AIClaude CodeMCPworkflow

"AI-assisted developer" is a phrase that means different things depending on who's saying it. Here is what it concretely means in my day, broken down so you can decide whether any of it is useful to copy.

The IDE: Claude Code

Claude Code is my primary editor. Not VS Code, not Cursor, not a hand-rolled CLI. The single most useful thing about it for the way I work is that it runs entire projects under one context — so when I ask it to refactor a Zod schema, it remembers every file that imports the schema and updates them in the same pass.

I match the model to the task, and the matching matters more than which model happens to be current this quarter:

  • A frontier model with a very large context window: codebase-wide refactors, architecture decisions, anything where holding the whole shape of a project at once is the actual requirement. It costs more per token and earns it back the first time it replaces a multi-day refactor.
  • A mid-tier model for the daily work: single-file edits, new routes, content changes, tests. That is where most of the hours go, and it is capable enough for nearly all of them.
  • A local model on my own GPU for mechanical work: typecheck errors, lint cleanup, JSON transforms. It costs nothing, runs offline, and is never the bottleneck.
  • A small hosted model for inference inside shipped products, where the job is a well-scoped, grounded answer rather than editing code.

This post is dated, and the specific models in rotation have moved since — /uses has the current names and the date I last checked them. The judgment worth having is the part that does not move: knowing which class of task needs which class of model, and noticing when you have been paying frontier prices to rename a variable.

MCPs are the surface area

If Claude Code is the cortex, MCPs are the limbs. The ones I actually use, in approximate order of how often they fire:

  • Firecrawl: site mapping, content extraction, competitive scrapes. When I take on a new client I crawl their old site (or their competitor's) into the project so the model can ground every copy decision in real text.
  • Playwright / chrome-devtools-mcp: headless QA, accessibility tree inspection, real-Chrome screenshots. Tests run against the real DOM, not a synthetic snapshot.
  • Sharp Image: bulk image conversion (PNG → WebP, hero AVIFs, dimension extraction). Saved ~80% bandwidth on one project's gallery alone.
  • GitHub: PR review automation, commit-message generation. The default for VCS work.
  • Vercel: deploy, inspect, log retrieval. The release flow runs through it.

I check the tools are actually alive before starting a session that depends on them. One that fails quietly costs me an hour of debugging the wrong thing before I notice it was never running.

The release gate

Building something like this? Let’s talk →

Releasing is one command that does three things in order: deploy, notify the search engines that accept a direct ping that URLs changed, then verify the result. Bing’s index also feeds Microsoft Copilot and ChatGPT search, so that notification does double duty.

The verification step is the one worth copying. It fetches the live URL, follows the redirects, and fails loudly if the canonical the page declares is not the host actually serving it. That check exists because two of my sites shipped with exactly that mismatch. It cannot ship unnoticed again.

Pre-merge, every PR runs Lighthouse mobile. Performance ≥ 95, Accessibility = 100, SEO = 100. Below threshold = block. I've cut releases for less.

Where the model still doesn't think

Two places I refuse to outsource:

1. Architecture decisions. Whether to use Supabase auth or roll my own with Auth.js. Whether to put the RAG store in Sanity or in a flat JSON file checked into git. These calls have downstream taste consequences the model can't see ahead. 2. Voice. Every copy edit goes through me. The model proposes; I rewrite. Brand voice across my three sites looks consistent because one person owns it, not because Claude has a "professional but warm" preset.

Everything else — typing, transforming, validating, deploying — is automated.

What this isn't

It's not "AI ships my code." The model lowers typing cost. The human still owns the system shape. The day someone confuses those two is the day they ship something they can't debug.

If you want the actual setup file by file, the /uses page lists every model, every MCP, every backend service in current rotation.

I’m looking for a remote role — AI automation, integration, or full-stack, full-time or contract. If your team wants someone who thinks about AI tooling like this, I reply within one business day.

// let’s talk

Open to AI automation, applied-AI, or full-stack roles, and available now. If your team is hiring, I reply personally within one business day.

Remote (U.S.) · Hybrid or on-site · Open to relocation · Full-time or contract · Eastern Time

Get in touch →