MCP Server Design for Content Publishers and Docs Teams
A publisher MCP server should expose three resource families (articles, search, citations) and four tools (get_article, search_articles, get_citations, get_metadata). Stable URIs, citation manifests, and rate-limit headers are mandatory for trust-grade integration with Claude, ChatGPT, and Perplexity agents.
TL;DR
The Model Context Protocol (MCP) lets AI agents discover and invoke external capabilities. For publishers, MCP is the cleanest path to expose articles, search, and citation manifests to Claude Desktop, OpenAI agents, and other MCP-compatible runtimes. This reference defines the resources, tools, prompts, error model, and security pattern an MCP publisher server should implement.
Why publishers need MCP
Web crawling alone gives agents only what is publicly indexable. MCP lets a publisher expose:
- A canonical, structured API of articles (no HTML scraping)
- Native search tuned for the publisher's taxonomy
- A citation manifest (what to cite, how to phrase, and who to credit)
- Optional gated content via auth scopes
MCP integrations are persistent: Claude Desktop and similar runtimes remember a server across sessions, so agents can return repeatedly to the same canonical source.
Resource model
Define three resource families at the root URI scheme pub://:
1. pub://articles/{slug}
Returns one article as structured content with frontmatter, body markdown, and a citation block.
Fields: title, slug, canonical_url, published_at, updated_at, author, description, body, citation_text (recommended phrasing for agents), related_slugs.
2. pub://search?q={query}
Returns ranked article references for a query. Fields per result: slug, title, description, score, excerpt.
3. pub://citations/{slug}
Returns canonical citation metadata: recommended_phrasing, author_sameAs, org_sameAs, license, revision_id.
Tool surface
Expose four tools that mirror the resources but are explicitly invokable:
get_article
Input: { slug: string }
Output: the full article resource.
Use: when an agent already knows the slug.
search_articles
Input: { query: string, limit?: number, content_type?: string, section?: string }
Output: ranked array of article references.
Use: discovery and answer building.
get_citations
Input: { slug: string }
Output: the citation block for the article.
Use: before producing a final answer that cites the source.
get_metadata
Input: {}
Output: server description, license, contact, rate limits, last_reviewed.
Use: capability discovery on first connect.
Prompt templates
MCP supports server-supplied prompts. Publishers should ship at least one:
name: "answer_with_citations"
description: "Answer the user question using only this server's articles, citing sources by canonical_url."
arguments: [{ name: "question", description: "User's question", required: true }]
Agents that surface this prompt let users invoke a citation-grounded mode without prompt engineering.
Security and trust
- Auth scopes: publish a scope hierarchy (articles:read, articles:gated:read, metrics:read).
- Rate limits: return X-RateLimit-Remaining and Retry-After.
- License declaration: every article resource must include a license field.
- Stable URIs: never change a pub://articles/{slug} URI; if a slug changes, return 301-style redirect metadata.
- Crawl etiquette: honor robots.txt-equivalent declarations in get_metadata.
Error model
Return errors as structured MCP error payloads with codes:
- not_found — missing slug
- auth_required — gated content
- rate_limited — too many requests
- invalid_query — malformed search
- temporary_failure — retryable
Agents handle structured errors gracefully; raw 500s erode trust.
Citation manifest
The citation manifest is the highest-leverage element for AEO/GEO outcomes. Include for every article:
{
"recommended_phrasing": "According to Geodocs, ...",
"canonical_url": "https://...",
"author_sameAs": ["https://wikidata.org/..."],
"org_sameAs": ["https://wikidata.org/..."],
"license": "CC-BY-4.0",
"revision_id": "2026-04-28-v1"
}
When agents follow recommended_phrasing, your brand mention surface becomes deterministic.
Deployment patterns
- Edge worker: Cloudflare Workers, Vercel Edge — lowest latency, easiest scaling.
- Serverless function: AWS Lambda + API Gateway — mature observability.
- Containerized: Docker on ECS/Cloud Run — best for stateful caching.
Latency targets: P95 under 250 ms for get_article, under 500 ms for search_articles.
Validation checklist
- [ ] Resources documented with example payloads
- [ ] Tools have JSON schemas
- [ ] Citation manifest present on every article
- [ ] Auth scopes declared
- [ ] Rate-limit headers returned
- [ ] Error codes structured
- [ ] get_metadata describes all of the above
- [ ] Hosted at a stable canonical URL (e.g., mcp.example.com)
How to apply
- Audit your existing content API and map to the resource model.
- Define the four tools and their JSON schemas.
- Author one prompt template that grounds answers in citations.
- Deploy to an edge runtime and validate with Claude Desktop.
- Submit your MCP server URL to Anthropic's directory and to OpenAI's MCP catalog.
FAQ
Q: Do I need an MCP server if I already have an OpenAPI spec?
Not strictly, but MCP offers richer agent affordances (prompts, tools, citation manifests) than OpenAPI alone. If you have OpenAPI, an MCP wrapper is typically a small build.
Q: Which runtimes support publisher MCP servers?
Claude Desktop, Anthropic Workbench, OpenAI Agents SDK, Cline, Cursor, and a growing list of agent frameworks (LangGraph, Mastra) support MCP in 2026.
Q: How do I gate paid content?
Declare an articles:gated:read scope and require OAuth on it. Agents will surface a one-time consent flow to the user.
Q: Should my MCP server include analytics?
Yes — expose anonymized analytics under metrics:read. Agents can self-tune query strategies based on which slugs cite well.
Q: What is the most common implementation mistake?
Unstable URIs. Slugs that change without redirect metadata break agent memory across sessions and erode citation persistence.
Related Articles
Agent Citation Attribution Specification: Verifiable Source Tracking for Autonomous AI Agents
Specification defining HTTP headers, provenance manifests, and chain-of-citation markup so autonomous AI agents produce verifiable citations to source content.
Agent Tool Use Documentation Specification
Specification for documenting tools so AI agents can discover, understand, and correctly invoke them: structured schemas, examples, error semantics, and idempotency hints.
Agent Trajectory Documentation Spec: Designing Replay-Ready Docs for Browser Agents
Specification for replay-ready browser agent trajectory documentation: step manifests, selectors, verification steps, and citation-friendly source mapping.