{"slug": "i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke", "title": "I Wired 11 WordPress Sites to an LLM With MCP. Here’s Some Things That Broke.", "summary": "An SEO professional who runs a content pipeline across 11 WordPress sites using Model Context Protocol servers detailed several failure modes encountered in production, including connectors that appear registered but fail to connect, transient errors that models misinterpret as permanent, and tools that behave differently than their descriptions suggest. The developer emphasized that MCP is easy to implement but that real-world integration issues arise from business logic, connector standardization, and tool capability mismatches, recommending retry-with-backoff in the tool layer and reading actual implementations before trusting destructive operations.", "body_md": "I’m not a developer by trade. I’ve spent about twenty years in SEO — Raven Tools, TapClicks, now my own [seo agency shop](https://seoarcade.com) and a [podcast network](https://unscriptedseo.com). But somewhere in the last year I ended up maintaining a production content pipeline that runs on Model Context Protocol servers, publishes to eleven WordPress installs, schedules across eight social platforms, and composites video with ffmpeg in a sandboxed container.\n\nIt works. It also broke in about a dozen ways that no MCP tutorial mentions, because every MCP tutorial stops at “and now the model can read your files!”\n\nHere’s the part after that.\n\nMCP is trivially easy. That’s the trap.\n\nAn MCP server is a thin wrapper around an HTTP call. That’s genuinely it. If you can write an Express route, you can write an MCP server. I’ve watched Claude Code scaffold one in an afternoon.\n\nWhich means the moment you start planning an integration, the protocol is not your constraint. The constraint is always one of these:\n\nNumber one is a business problem.\n\nNumbers two, three and four are where I lost actual weeks.\n\nEg I spent two whole weeks where Desktop Claude pretended to access my Obsidian Vault but was just mining my previous chats for answers, the lie surfaced when I got deeper into using terminal and stopped feeding Desktop materials\n\nFailure mode Confident Liar: the connector that’s registered but not connected\n\nThe single most disorienting bug in my whole setup. A connector appears in your server list. It shows up in config. The model can see its name. And it exposes zero callable tools.\n\nYou get some variation of “Server X is not connected — the user needs to connect this integration.” But it’s listed. It’s right there.\n\nTen of my sites run one WordPress MCP adapter at /wp-json/royal-mcp/v1/mcp. One site ran a different default adapter at /wp-json/mcp/mcp-adapter-default-server. The odd one out was the only one that wouldn’t handshake — and it took me an embarrassingly long time to notice the URL pattern difference, because “it’s in the list” reads as “it’s connected.”\n\nLesson: registration and authentication are separate states, and most tooling collapses them into one green dot. When you’re standardizing a fleet, standardize the adapter, not just the endpoint. One-off integrations are where your debugging time goes to die.\n\nFailure mode Ghost Problems: transient failures that look permanent\n\nTwo of my connectors regularly return No approval received on the first call and succeed on an immediate retry. Same payload. Same session. Seconds apart.\n\nIf you’re building agentic workflows, this matters more than it sounds. A human sees a failure, shrugs, hits it again. A model sees a failure and reasons about it — it’ll write you a beautifully argued paragraph about how your authentication has lapsed and you should check your plugin settings. It’s confidently wrong, and now you’re chasing a ghost.\n\nLesson: bake retry-with-backoff into your tool layer, not your prompt layer. Do not make the model responsible for distinguishing flaky from broken. It’s bad at it, and it’s bad at it persuasively.\n\nFailure mode Capability Mismatch: tools that are narrower than they look\n\nwp_upload_media sounds like it uploads media. It uploads images. Hand it a .pptx and you get an instant rejection on MIME type — not a size limit, not a timeout, a type check firing before a single byte transfers.\n\nThat restriction lives in the connector, not in WordPress. And WordPress also blocks .pptx in its default allowlist. Two independent gates, one generic-sounding tool name.\n\nSimilarly: wp_update_post overwrites the entire content field. Not a patch. Not a merge. The whole thing. If you’re feeding it partial content, you just deleted a page.\n\nLesson: tool descriptions are marketing copy for the model. They describe the happy path. Read the actual implementation, or probe the edges deliberately before you trust anything destructive.\n\nFailure Mode Wrong Tool Use: MCP is a fragile toy\n\nAt the end of the day I wasted SOOOO much time rejoicing for my “unlock” of using MCP for my wordpress sites.\n\nTruth: it was the wrong tool, broke on plugin updates and was not consistent.\n\nHonestly the solution was REST access the whole time. Claude code could do 10000x what the limited MCP could deliver and was insanely easy to setup immediately and has not had a fraction of the problems.", "url": "https://wpnews.pro/news/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke", "canonical_source": "https://dev.to/seo-arcade-jeremy/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-everything-that-broke-2ch0", "published_at": "2026-07-31 15:08:39+00:00", "updated_at": "2026-07-31 15:36:04.411092+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "mlops", "artificial-intelligence"], "entities": ["WordPress", "Model Context Protocol", "Claude Code", "Obsidian", "Raven Tools", "TapClicks", "SEO Arcade", "Unscripted SEO"], "alternates": {"html": "https://wpnews.pro/news/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke", "markdown": "https://wpnews.pro/news/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke.md", "text": "https://wpnews.pro/news/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke.txt", "jsonld": "https://wpnews.pro/news/i-wired-11-wordpress-sites-to-an-llm-with-mcp-heres-some-things-that-broke.jsonld"}}