MCP Server Gaps Blocking End-to-End Agent Content Workflows #1070
marcusbellamyshaw-cell
started this conversation in
Ideas
Replies: 1 comment
|
Built a plugin that works around gaps 1 and 2 while waiting on native MCP support: https://github.com/marcusbellamyshaw-cell/emdash-auto-meta — happy to collaborate if any of this is useful upstream. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
MCP Server Gaps Blocking End-to-End Agent Content Workflows
Context
I’m running an Emdash-powered content site (everybittexas.com) and managing it primarily through Claude’s MCP connector on mobile (iPhone app). The goal is a fully agent-driven publishing workflow: write article → create tags → upload media → assign taxonomies → set SEO metadata → save as draft.
The MCP server handles article creation, tag creation, and content updates well. But three operations that exist in the REST API are either missing or broken in the MCP surface, which forces manual admin UI work for every post.
Gap 1: No
content_set_termsMCP ToolREST API has it:
MCP does not. The MCP server exposes taxonomy CRUD tools (
taxonomy_create_term,taxonomy_list_terms, etc.) but has no tool to assign terms to content items. This means an agent can create a post and create the tags, but cannot wire them together.Impact: Every post requires a manual trip to the admin UI to assign categories, tags, regions, and eras — even though the agent already knows exactly which term IDs to assign.
Suggested fix: Add a
content_set_termsMCP tool that mirrors the REST endpoint. Something like:Gap 2:
content_updateSEO Parameter Serialization FailureThe
content_updateMCP tool schema includes anseoparameter with aContentSeoInputtype:When called from Claude’s MCP client with a valid object:
{ "collection": "posts", "id": "01KRSAHVZVJ1TQ7H2ESCSYS50M", "seo": { "title": "Cowboy Mardi Gras in Bandera, Texas", "description": "Bandera's Cowboy Mardi Gras blends Cajun flavor with Hill Country grit..." } }It returns:
The
dataparameter (typed as plain"type": "object") works fine in the same call. The issue appears to be with how theallOf+$refschema pattern is handled — either by the MCP server’s input validator not resolving the$refbefore type-checking, or by the client’s serialization layer passing the value as a string instead of an object. Hard to tell from the error alone which side is dropping it.Impact: SEO title and meta description must be set manually in the admin for every post.
Suggested fix: Either inline the
ContentSeoInputschema instead of usingallOf/$ref, or ensure the MCP input validator resolves$refdefinitions before validation. This may also affect thebylinesparameter which uses a similar pattern.Gap 3: Media Upload Path for MCP Agents
This one is documented and intentional — MCP transport can’t carry binary uploads, and the
media_createtool registers metadata for files already in storage. The signed-upload flow requires direct HTTP access to the Emdash instance, which MCP clients like Claude.ai don’t have (Claude’s container can’t reach arbitrary domains).I have paid Cloudflare Workers, so one possible workaround would be a plugin that accepts a media URL and handles the upload server-side. But a native solution would be cleaner.
Possible approaches:
media_upload_from_urlthat fetches a remote image URL server-side and registers it in the media libraryEnvironment
Summary
Gaps 1 and 2 seem like straightforward additions/fixes. Gap 3 is a harder transport-level problem, but
media_upload_from_urlwould cover the most common agent use case (working from Library of Congress images, stock photo URLs, etc.).Happy to help test any of these if there’s a branch to try.
All reactions