DEV Community

weiwuji
weiwuji

Posted on

MCP Isn''t a New Concept — It''s the "USB Port" for AI Agents

The Pain: Your agent has 20 tools — email fetching, rate calculation, contact search, quote generation. Each tool has its own interface, and every integration requires rewriting adapter code. More tools, more mess, more mis-selection.
What You'll Learn: Why MCP (Model Context Protocol) is the "USB port" of agent infrastructure in 2026, and how to use protocol thinking to converge your tool system.


Why This Article Matters

In 2026, a consensus is forming across the global AI community: what limits an agent is no longer the model itself — it's the layer of "interfaces" between the model and the outside world.

Anthropic released MCP, Google released A2A, every major framework has adopted them — the tool layer is going through a "USB standardization" transformation.

Here's how it relates to you: if you're still writing 20 scattered tools with custom interfaces, you're hand-soldering wires instead of using USB plugs.


MCP = USB for AI Agents
Before: scattered tools, each with its own interface. After: one protocol, plug and play.


The Problem: The "Adapter Hell" of Scattered Tools

I run "MoLi AGI" as a one-person company, and my agent handles many things:

  • Email scene: fetch inbox, classify, reply, forward
  • Quoting scene: check rates, check history, generate quotes
  • Report scene: pull in-transit data, generate daily reports, push
  • Finance scene: check AR/AP, generate statements

At first I wrote 20 Python functions, each with its own interface:

# Tool 1: fetch email
def fetch_inbox(folder="INBOX", limit=10):
    return {"status": "ok", "data": []}

# Tool 2: calculate rate
def get_rate(origin, dest, weight):
    return 100.0

# Tool 3: search contacts
def search_contact(name_or_company):
    return []
Enter fullscreen mode Exit fullscreen mode

The problems:

  1. Inconsistent parameter formats: folder for email, origin/dest for rates, name_or_company for contacts — the LLM has to guess every time
  2. Inconsistent auth: some tools need email passwords, some API keys, some read local DBs directly
  3. Inconsistent return formats: email returns dict, rate returns float, contact returns list — the LLM has to guess the structure
  4. High integration cost: every new tool requires writing "description → params → return" adapter code

Core insight: tools aren't better when there are more — they're better when they're more standard. The maintenance cost of scattered tools grows exponentially with count; the cost of standardized tools is linear.


What Is MCP: The "USB Port" for Agents

MCP (Model Context Protocol) was proposed and open-sourced by Anthropic. At its core, it's a standardized "tool access protocol."

The analogy:

Before USB: every device has its own interface — chargers, mice, keyboards each bought separately
After USB: one interface, plug in anything

Before MCP: every agent tool has its own interface — every integration requires rewriting adapters
After MCP: one protocol, any tool integrates the same standard way
Enter fullscreen mode Exit fullscreen mode

MCP's three core concepts:

Concept Role Analogy
Tools External capabilities an agent can call USB devices
Resources Contextual data an agent can read USB storage
Prompts Reusable prompt templates USB preinstalled drivers

Key point: any tool, as long as it implements the MCP standard interface, can be used directly by any agent. It doesn't matter whether the tool fetches email or calculates rates.


Unified Tool Interface
One protocol for all tools — the LLM stops guessing.


My Practice: Using MCP Thinking to Converge Scattered Tools

I didn't adopt the MCP SDK immediately (my project isn't big enough), but I applied MCP's protocol thinking to my existing tool system — converging all tools into a "unified access specification."

Unified Interface Specification

Every tool conforms to the (params) -> result structure:

class AgentTool:
    """Unified tool interface: any tool implements these four methods"""
    name: str          # globally unique tool name
    description: str   # tool description (for the LLM)

    def get_schema(self) -> dict:
        """Parameter JSON Schema — the LLM generates params from this"""
        ...

    def execute(self, params: dict) -> dict:
        """Execute — returns unified structure {status, data, error}"""
        ...
Enter fullscreen mode Exit fullscreen mode

Unified Return Structure

All tools return {status, data, error} — the LLM never guesses:

{"status": "ok", "data": {...}}
{"status": "error", "error": "rate limit exceeded"}
Enter fullscreen mode Exit fullscreen mode

Unified Authentication

All tools get credentials via a "tool context," never passing passwords in params:

class ToolContext:
    """Unified auth context"""
    def __init__(self, scene_id: str):
        self.scene_id = scene_id
        self.credentials = load_credentials(scene_id)  # scene-level credentials

    def get_credential(self, service: str) -> str:
        return self.credentials.get(service)
Enter fullscreen mode Exit fullscreen mode

Scene Whitelist (Linking with the Scene Routing Series)

Each scene only loads its own tools (least privilege):

SCENE_CONFIG = {
    "email": {"tools": ["fetch_inbox", "send_email"]},
    "quoting": {"tools": ["get_rate", "get_history"]},
}
Enter fullscreen mode Exit fullscreen mode

This is MCP thinking in practice: unified interfaces (protocol) + permission isolation (scenes).


The Payoff: From "Adapter Hell" to "Plug and Play"

After this standardization, the changes were concrete:

Dimension Before (scattered) After (standardized)
New tool time 2-3 hours (adapter) 30 minutes (implement interface)
Tool mis-selection 15% (guessing params) <3% (clear schema)
Return parse errors 1-2 per week nearly zero
Cross-scene reuse impossible direct reuse

Practical conclusion: the value of tool standardization isn't "looking nice" — it's "the LLM doesn't have to guess." With params, returns, and auth all standardized, tool-selection accuracy rises immediately.


Standardization ROI
Interface standardization: maintenance cost drops from exponential to linear.


Next Step: When to Move to Real MCP

If you only have a dozen tools in your own project, the "protocol thinking" above is enough. But move to a real MCP SDK when you hit these:

  1. Integrating third-party tools (WeChat bot, DingTalk) — MCP has an existing ecosystem
  2. Multiple agents sharing tools — MCP is the cross-agent standard
  3. Letting non-engineers add tools — MCP defines clear interfaces

MCP's 2026 evolution focus (from my tracking): from "usable" to "scalable, governable, enterprise-deployable" — tool registration, permission auditing, and multi-version management are all being solved at the protocol layer.


Where You Are Now

You're no longer the exhausted developer who writes adapter code for every new tool. You're becoming an engineer who builds agent infrastructure with protocol thinking.

Tool standardization is the dividing line between "runs" and "scales" in agent engineering. MCP is the standard answer in 2026 — you don't need to adopt the SDK today, but you need to adopt its thinking now.

Remember: your agent's boundary is defined by its interfaces. The more standard the interface, the more powerful the agent.


About the author: Wu Ji (无记) — AI & digitalization practitioner focused on Agent engineering, Loop Engineering, and digital transformation. Practical, hands-on tutorials — follow along and it just works.

Top comments (0)