The Forensic Team: Architecting Multi-Agent Handoffs with MCP

Why One LLM Isn’t Enough—And How to Build a Specialized Agentic Workforce

In my last post, we explored the “Zero-Glue” architecture of the Model Context Protocol (MCP). We established that standardizing how AI “talks” to data via an MCP Server is the “USB-C moment” for AI infrastructure.

But once you have the pipes, how do you build the engine?

In 2026, the answer is no longer “one giant system prompt.” Instead, it’s Functional Specialization. Today, we’re building a Multi-Agent Forensic Team: a group of specialized Python agents that use our TypeScript MCP Server to perform deep-dive archival audits.

The “Context Fatigue” Problem

Early agent architectures relied on a single LLM handling everything:

  • retrieve data
  • reason about it
  • run tools
  • write the final output

Even with large context windows, this approach quickly hits a reasoning ceiling.

A single agent juggling too many tools often suffers from:

  1. Tool Confusion
    Choosing the wrong function when multiple tools are available.
  2. Logic Drift
    Losing track of the objective during multi-step reasoning.
  3. Latency and Cost
    Sequential reasoning loops increase response time and token usage.

The solution is functional specialization.

Instead of one overloaded agent, we build a team of focused agents coordinated by a supervisor.

Before diving into the multi-agent design, it helps to understand where the agents live in the MCP stack.

Figure 1. The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.

Layered architecture diagram of an MCP-based AI system showing applications, agent orchestration, the Model Context Protocol layer, tools and resources, and underlying data systems.
The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.

The Architecture: A Polyglot Powerhouse

One of MCP’s strengths is that it decouples tools from orchestration.

This allows each layer of the system to use the language best suited for the job.

In our case:

  • The “Hands” (TypeScript)
    Our MCP server handles data access and tool execution with strong typing.
  • The “Brain” (Python)
    A Python orchestrator manages reasoning and agent coordination using frameworks like LangGraph or PydanticAI.

Because both layers communicate through MCP, the language boundary disappears.

Multi-Agent MCP Architecture

Diagram showing a multi-agent architecture using the Model Context Protocol (MCP) with a Python supervisor agent coordinating Librarian and Analyst agents that access tools through a TypeScript MCP server connected to an archive database.
Multi-agent MCP architecture: a Python supervisor coordinates specialized agents that access tools through a shared MCP server.

Each agent communicates with tools through the MCP server, not directly with the data source.

The Forensic Team Roles:

Role Agent Identity Primary Responsibility MCP Tools Used
Supervisor The Orchestrator Receives request, manages state, and handles handoffs. list_tools, list_resources
Librarian The Researcher Gathers historical facts and archival metadata find_book_in_master_bibliography
Analyst The Forensic Tech Compares observed data against metadata to find flaws audit_artifact_consistency

How It Works: Glue-Free Agent Handoffs

The beauty of MCP is the Transport Layer. Our Python client connects to the TypeScript server via stdio. It doesn’t care that the server is written in Node.js; it only cares about the protocol.

  1. Spawning the Sub-process
    In our orchestrator.py, we define how to “wake up” the TypeScript server. Notice how we point Python directly at the Node.js build:
def get_server_params() -> StdioServerParameters:
    # This is the bridge: Python spawning a Node.js process
    return StdioServerParameters(
        command="node",
        args=[str(SERVER_ENTRY)], # Points to our TS /build/index.js
        cwd=str(PROJECT_ROOT),
    )
  1. The Functional Handoff
    Because MCP tools expose strict schemas, the agents can pass structured results between each other without custom translation layers.

The Supervisor doesn’t manually parse JSON or remap fields.

Instead it simply chains the outputs:

# 1. Librarian: pull book details
librarian_result = await librarian_agent(session, title, author)

# 2. Analyst: audit for discrepancies (using Librarian's data)
analyst_result = await analyst_agent(
    session, book_page_id, book_standard, observed
)

Why This Wins in the Enterprise:

Auditability

You can track exactly what each agent saw and what conclusions it produced.

Security

Agent permissions can be scoped by tool access.
The Librarian may only read archives, while the Analyst writes forensic reports.

Maintainability

Each agent owns a single responsibility.
If the forensic logic changes, only the Analyst agent needs to be updated.

Scaling to the “AI Mesh”

By using MCP as the backbone, you’ve built more than an app; you’ve built a System of Intelligence. Any new tool you add to your TypeScript server is instantly “discoverable” by your Python team. You are no longer writing “Glue Code”; you are orchestrating a digital workforce.

The MCP server becomes the shared capability layer for your entire AI system.

📚 The “Zero-Glue” Series
– Post 1: The End of Glue Code: Why MCP is the USB-C Moment for AI
– Post 2: The Forensic Team: Architecting Multi-Agent Handoffs – You are here
– Post 3: From Cloud to Laptop: Running MCP Agents with SLMs – Coming Soon
– Post 4: Enterprise Governance: Scaling MCP with Oracle 26ai – Coming Soon

Explore the Code:

The full multi-agent orchestrator is now live in the /examples folder of the repo:
👉 MCP Forensic Analyzer – Multi-Agent Example

Up Next in the Series:

Next week, we go small. We’re moving the “Forensic Team” out of the cloud and onto your laptop. We’ll explore Edge AI and how to run this entire stack using Small Language Models (SLMs) like Phi-4—no $10,000 GPU required.

Facebooktwitterredditlinkedinmail

The End of Glue Code: Why MCP Is the USB-C Moment for AI Systems

Architecting the Zero-Glue AI Stack with the Model Context Protocol

A practical look at building protocol-driven AI systems with the Model Context Protocol (MCP).

Two years ago, if you wanted an AI agent to perform a task—auditing a rare book archive, updating a Notion database, or reconciling records in a system—you had to write a custom integration layer.

Traditional AI integrations (M × N complexity)

A flowchart illustrating the M x N integration problem. Two AI models (Model A and Model B) are shown with individual, overlapping lines connecting directly to three separate tools (Tool A, Tool B, and Tool C), creating a dense, brittle "spaghetti" architecture.
Figure 1: The exponential complexity of traditional point-to-point AI integrations, where every new model requires a unique connector for every available tool.


You spent weekends mapping JSON fields to LLM function calls, building fragile wrappers around APIs, and hoping the upstream interface didn’t change.

When it did, everything broke.

We were building a tangled web of point-to-point integrations.

In software engineering terms, this is the M × N problem:

M models x N tools = MxN integrations

Every new model required new connectors.
Every new tool required new wrappers.

By 2026, that architecture has become a technical liability.

A different model is emerging: protocol-based AI systems.

And the protocol at the center of that shift is the Model Context Protocol (MCP).


The Protocol Shift: What MCP Actually Is

The Model Context Protocol is an open standard for connecting AI systems to tools and data.

The easiest analogy is USB-C for AI infrastructure.

Where does MCP actually sit in an AI system?

Layered architecture diagram of an MCP-based AI system showing applications, agent orchestration, the Model Context Protocol layer, tools and resources, and underlying data systems.
The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.

Instead of building custom integrations between every model and every tool, developers implement a single MCP server that exposes capabilities in a standardized way.

Agents then discover and use those capabilities dynamically.

In this architecture:

Protocol-based architecture (M + N complexity)

A hierarchical architecture diagram showing an AI Agent connecting via the MCP Protocol to an MCP Server. The server manages three distinct primitives—Tools, Resources, and Prompts—which in turn interface with underlying databases, APIs, and enterprise systems.
Figure 2: The Model Context Protocol (MCP) acts as a universal interface, allowing a single agent to dynamically discover and orchestrate tools, resources, and prompts via a unified server.


Rather than hard-coding what a model can access, the server describes its capabilities to the agent.

When an agent connects, it performs a protocol handshake and discovers exactly what is available.

No manual wiring required.

A side-by-side comparison. The left side shows a "Spaghetti" model with multiple models criss-crossing connections to tools. The right side shows the "Hub-and-Spoke" MCP model, where models and servers connect through a central MCP Standard, demonstrating a cleaner and more scalable system design.
Figure 3: Comparing the linear scaling of MCP (M + N) against the unsustainable growth of traditional manual wiring (M x N).



The Three Primitives of MCP

MCP works because it simplifies tool integration into three core primitives.

1. Resources (The Nouns)

Resources are structured data exposed to the agent.

Examples might include:

  • a rare book’s metadata record
  • a digitized archival scan
  • a Notion page
  • a database entry

The key point: the agent doesn’t scrape or guess.
It accesses structured resources intentionally exposed by the server.


2. Tools (The Verbs)

Tools are executable actions.

An MCP tool is essentially a function with a strict schema that tells the agent how to call it.

Example:

// Define a tool in the MCP Forensic Analyzer
server.tool(
"audit_book",
{ book_id: z.string().describe("The archival ID of the volume") },
async ({ book_id }) => {
const metadata = await archive.getMetadata(book_id);
const result = await forensicEngine.audit(metadata);
return {
content: [{ type: "text", text: JSON.stringify(result) }]
};
}
);

Because tools include a JSON schema, the model knows:

  • what parameters exist
  • which are required
  • what type of result will be returned

This dramatically improves reliability compared to traditional prompt-based tool use.

3. Prompts (The Recipes)

Prompts define reusable workflows.

Instead of embedding a fragile 500-line system prompt inside your application, you can expose a structured prompt template.

Example:

Forensic Audit Template
- Retrieve metadata
- Check publication year consistency
- Verify publisher watermark
- Compare against known first-edition patterns

The agent can then dynamically load and use that prompt when performing an audit.

Case Study: The MCP Forensic Analyzer

To explore MCP in practice, I built an MCP Forensic Analyzer.

The system analyzes archival records and identifies inconsistencies between historical metadata and physical characteristics.

Before MCP, implementing this workflow required a large amount of orchestration code:

  1. Fetch metadata
  2. Normalize fields
  3. Construct prompt
  4. Send to LLM
  5. Parse result
  6. Retry if formatting failed

With MCP, the architecture becomes dramatically simpler.

The agent discovers available tools and invokes them directly.

The MCP Discovery Loop

Instead of manually wiring integrations, the agent follows a protocol lifecycle.

  1. Protocol Negotiation

The client and server establish a connection
(STDIO for local tools or SSE for remote services).

  1. Schema Exchange

The server returns a manifest of available tools, resources, and prompts.

  1. Intent Mapping

The agent matches the user request to the appropriate tool.

  1. Tool Execution

The tool is invoked with structured parameters.

A sequence diagram involving a User, AI Agent, Archival MCP Server, and Data Layer. It shows the agent requesting a tool list, the server returning forensic tools, the agent selecting 'audit_book', and the server querying the database to return a structured forensic result back to the user.
Figure 4: The MCP Handshake and Discovery Loop. The agent identifies capabilities at runtime rather than relying on hard-coded instructions.


Unlike traditional systems that cram every tool into the system prompt, MCP allows the agent to fetch the tool definition only when its reasoning engine determines it is required. The important shift here is that the agent discovers the system instead of being manually wired to it.

Why MCP Is Emerging Now

Three shifts in AI architecture made MCP almost inevitable.

  1. Agents Need Tool Discovery
  • Hard-coded function lists don’t scale as systems grow.
  • Agents need the ability to discover capabilities dynamically.
  1. Context Windows Exploded
  • Modern models can reason over large tool catalogs and schemas.
  • Instead of embedding everything in a single prompt, agents can now navigate structured capability manifests.
  1. Enterprises Need Governance
  • Prompt-level guardrails are brittle.
  • Protocol-level permissions are enforceable.
  • MCP moves governance into the infrastructure layer.

MCP + Agentic Memory

Another emerging pattern in 2026 is combining MCP with agent memory systems.

MCP provides the agent’s eyes and hands.

Memory provides the identity.

In the MCP Forensic Analyzer, memory operates on two levels.

Working Memory
– The specific book currently under investigation.

Semantic Memory
– A vector database storing historical observations.

Example:

“First editions from this publisher often contain a watermark on page 12.”

As the system performs more audits, it accumulates domain-specific knowledge.

The agent doesn’t just run tools.

It develops forensic intuition.

Enterprise Governance: Why REST Isn’t Enough

A common question is:

“Why not just use REST APIs?”

REST APIs were designed for application integrations, where developers explicitly code each interaction.

MCP targets a different use case: machine-to-machine autonomy.

Three architectural advantages emerge.

1. The M×N → M+N Scaling Shift

Without MCP:

M models × N tools = M×N integrations

With MCP:

M models + N MCP servers = M+N integrations

A new model can immediately interact with existing systems without additional integration work.

2. Permissioned Recall

Enterprise systems require strict data boundaries.

An MCP server can enforce Row-Level Security (RLS) at the protocol layer.

If a junior auditor runs the agent, the server only returns resources they are authorized to access.

The agent literally cannot see restricted data.

3. Auditability

Enterprise AI systems must be explainable.

MCP provides structured logging for:

  • tool calls
  • resource access
  • returned data

This creates a defensible audit trail of every decision made by the agent.

From Hackathon Projects to Production Systems

One MCP example experiment I did occurred for the Notion MCP Challenge.

That project proved the protocol works.

The next step is evolving that prototype into a Production AI Mesh.

In upcoming posts in this series we’ll explore:

  • Multi-Agent Handoffs
    (specialized agents collaborating)
  • Edge AI with Small Language Models
    (running agent systems without large GPU infrastructure)
  • Enterprise Governance Layers
    (secure, auditable AI systems using databases like Oracle 26ai)

MCP is no longer just a developer curiosity.

It’s becoming the foundation for production-grade agent architectures.

Ready to Explore the Code?

Repository
MCP Forensic Analyzer

Learn More About the Protocol
Model Context Protocol Documentation

Up Next in the “Zero-Glue” Series:
– The Forensic Team: Multi-Agent Handoffs and Orchestration.
– AI on a Toaster: Running SLMs on the Edge.
– The Secure Archive: Governance with Oracle 26ai.

Facebooktwitterredditlinkedinmail