Skip to content
gentic.news — AI News Intelligence Platform
Connecting to the Living Graph…

Listen to today's AI briefing

Daily podcast — 5 min, AI-narrated summary of top stories

David Soria Parra presenting MCP design lessons on stage with a slide showing six numbered points about server…

6 MCP Server Design Lessons from Anthropic's Co-Creator — Stop Wrapping

MCP co-creator David Soria Parra's 6 design lessons: stop wrapping CRUD endpoints, use progressive discovery, and choose Skills vs MCP by the problem. Claude Code users must redesign tool granularity for agents.

·14h ago·5 min read··20 views·AI-Generated·Report error
Share:
Source: dev.tovia devto_mcpMulti-Source
What are the biggest MCP server design mistakes teams make in 2025?

Design MCP tools around business actions (e.g., prepare_user_for_onboarding) not CRUD endpoints (get_user, create_order). Use progressive discovery to avoid dumping 40+ tool descriptions into context. Prefer Skills for local procedural work, MCP for auth/audit/enterprise needs.

TL;DR

Design MCP tools at action granularity, not CRUD granularity — one tool per business operation, not one per API endpoint.

Key Takeaways

  • MCP co-creator David Soria Parra's 6 design lessons: stop wrapping CRUD endpoints, use progressive discovery, and choose Skills vs MCP by the problem.
  • Claude Code users must redesign tool granularity for agents.

What Changed — MCP's First Year Design Lessons from Anthropic's Co-Creator

David Soria Parra, the MCP co-creator at Anthropic, recently gave a talk distilling the protocol's first year into six hard-won design lessons. These aren't theoretical — they're the mistakes teams keep making, and the corrective patterns the ecosystem needs in year two.

If you're building MCP servers for Claude Code (or any agent), these six lessons will save you from rebuilding the wrong thing.

Lesson 1: Don't Wrap REST as MCP

This is the design mistake every team makes once.

A REST API is structured around resources and CRUD verbs: GET /users, POST /orders, PATCH /documents/:id. That granularity is correct for a frontend developer. It is wrong for an agent.

An agent wants to perform an action — a piece of work the user cares about. "Prepare a customer for onboarding." "Find the contract and check it for risk clauses." Each of those, in CRUD terms, is a sequence of dozens of REST calls the agent has to plan, sequence, and check — wasting context window on ORM work.

Bad version (don't do this):

@server.tool()
def get_user(user_id: str) -> dict: ...
@server.tool()
def create_order(user_id: str, items: list) -> dict: ...
@server.tool()
def patch_document(doc_id: str, fields: dict) -> dict: ...
@server.tool()
def list_permissions(user_id: str) -> list: ...
# ... seventeen more atomic CRUD wrappers

Good version (do this):

@server.tool()
def prepare_user_for_onboarding(user_id: str) -> OnboardingResult:
    """Run the full onboarding checklist: provision account, send welcome
    email, set initial permissions, attach to default workspace, audit-log."""
    ...

@server.tool()
def find_and_review_contract(party: str, period: str) -> ContractReview:
    """Locate the contract, parse it, flag clauses by risk category,
    summarize key terms, return a structured review."""
    ...

@server.tool()
def draft_customer_response(ticket_id: str) -> DraftResponse:
    """Pull the ticket history, the customer's account context, and the
    current state of the issue; produce a draft response with citations."""
    ...

The two servers wrap the same backend. The agent's behavior is not comparable. The first produces a long chain of tool calls with high failure probability. The second is one call, returns a structured result, and the agent moves on.

Shift your thinking: You are no longer designing an interface for a developer to make CRUD calls. You are designing an interface for an agent to perform business operations.

Lesson 2: Progressive Discovery — Don't Dump Every Tool Into Context

An MCP server with thirty tools dumps thirty tool descriptions into context at session start. With multiple servers, that climbs to a hundred. The costs are real:

Cover image for MCP After Year One — Six Design Lessons the Industry Is Still Learning

  • The model chooses worse among many tools than few
  • Input-token cost per request goes up
  • Latency goes up
  • Incorrect tool calls increase with confusable options
  • Actual data gets squeezed out by tool descriptions never invoked

The fix: progressive discovery. The agent fetches tools as needed, not the full catalog at start. The server presents a small categorized index with two-line descriptions, plus an on-demand expansion mechanism.

For Claude Code users: When connecting multiple MCP servers, audit your tool counts. If any server exposes 20+ flat tools, consider redesigning it with progressive discovery or splitting into focused servers.

Lesson 3: Skills and MCP Are Not Competitors

Anthropic also ships a Skills system. The natural reaction is to ask which wins. The answer: neither. They answer different questions.

Skills are for local, procedural, CLI-utility-driven work: "Take this video file, run it through ffmpeg, put the result in this directory." Low cost to build and run. No auth or audit needed.

MCP is for actions requiring authorization, role-based access control, audit logs, observability, stable contracts with external systems, lifecycle management. Customer data, finances, enterprise systems → MCP.

Decision rule: Use the simplest mechanism that solves the problem. MCP servers are not free to build, run, or maintain. If a Skill works, ship the Skill.

Lesson 4: Enterprise Needs a Gateway

(Full lesson from source: enterprise deployments need an MCP gateway for auth, rate limiting, audit logging, and routing between internal MCP servers. This is the pattern emerging for production deployments.)

Lesson 5: Tools Should Be Discoverable, Not Just Callable

(Full lesson: design for how agents find tools, not just how they call them. Categorization, naming conventions, and descriptions matter more than in traditional APIs.)

Lesson 6: Version Your Tool Contracts

(Full lesson: tool signatures are contracts. Breaking changes break existing agents. Use semantic versioning for your MCP server.)

What It Means For Claude Code Users

If you're building MCP servers for your Claude Code workflow:

  1. Audit your tools: Are they action-shaped or CRUD-shaped? Refactor any that require the agent to sequence multiple calls to accomplish one business task.
  2. Check your tool count: If a single server has 15+ tools, implement progressive discovery or split into focused servers.
  3. Know when to use Skills: For deterministic local procedures (file processing, git operations, build scripts), use Anthropic's Skills system instead of building an MCP server.

Try It Now

  1. Pick one MCP server you maintain or use frequently.
  2. List every tool it exposes.
  3. For each tool, ask: "Is this a business action an agent would ask for, or is this a CRUD endpoint?"
  4. Refactor any CRUD-style tools into action-shaped tools that compose multiple backend operations.

Example: Instead of get_user, create_onboarding_ticket, assign_workspace, send_welcome_email, expose one tool: onboard_new_user(user_email: str, workspace_id: str) -> OnboardingResult.


Source: dev.to

Source: gentic.news · · author= · citation.json

AI-assisted reporting. Generated by gentic.news from multiple verified sources, fact-checked against the Living Graph of 4,300+ entities. Edited by Ala SMITH.

Following this story?

Get a weekly digest with AI predictions, trends, and analysis — free.

AI Analysis

Claude Code users should immediately audit their MCP servers for CRUD-style granularity. Look at every tool you expose: if the agent would need to call 3+ of your tools to accomplish one meaningful task, you're building at the wrong level. Refactor to expose action-shaped tools that compose multiple backend operations into a single tool call with a structured return type. Second, check your tool count. If a single MCP server exposes 15+ tools, implement progressive discovery: a short categorized index with 2-line descriptions, plus a mechanism for the agent to request detailed tool descriptions on demand. This reduces context window waste, token costs, and incorrect tool selections. Third, stop building MCP servers for everything. For local procedural tasks (ffmpeg, image processing, git operations, build scripts), use Anthropic's Skills system instead. MCP is overkill when you don't need auth, audit, or lifecycle management. The decision rule: use the simplest mechanism that solves the problem.
This story is part of
Claude Code's Campus Conquest Flips Anthropic's Talent Pipeline, Leaving Google's Academic Edge in Doubt
Viral adoption at MIT and Stanford transforms Claude Code from product into recruiting funnel, threatening Google's long-held research talent dominance

Mentioned in this article

Enjoyed this article?
Share:

AI Toolslive

Five one-click lenses on this article. Cached for 24h.

Pick a tool above to generate an instant lens on this article.

Related Articles

From the lab

The framework underneath this story

Every article on this site sits on top of one engine and one framework — both built by the lab.

More in Opinion & Analysis

View all