SerenAI
SerenAI
MCP-to-MCP Communications - Native Protocol with Built-in Payments

How We Deployed MCP-to-MCP Communications in Seren's MCP Server

Taariq Lewis
Taariq Lewis
4 min read

Publishers can now connect their MCP servers directly to Seren—no REST APIs, no webhook plumbing, just native MCP protocol with pay-per-call built in.

MCP-to-MCP Communications - AI agents and publishers connected through Seren
MCP-to-MCP Communications - AI agents and publishers connected through Seren

Why We Built This

We launched Seren MCP Server to connect AI agents with data publishers. Our initial design routed everything through REST APIs—agents called our MCP server, we translated to HTTP, forwarded to upstream APIs, and passed responses back.

It worked. But when we onboarded new publishers, we kept hearing the same feedback:

We already have an MCP server. Can't you just talk to it directly?

Fair point. These publishers had invested in building proper MCP servers with typed tool schemas, streaming support, and structured resources. Forcing them through a REST translation layer meant losing all that.

So we built MCP-to-MCP.

The Old Way vs The New Way - REST APIs vs Native MCP Protocol
The Old Way vs The New Way - REST APIs vs Native MCP Protocol

The Architecture Change

The key insight: Seren becomes an MCP-aware proxy, not a protocol translator.

Seren MCP-to-MCP Architecture - Gateway with billing and authentication
Seren MCP-to-MCP Architecture - Gateway with billing and authentication

When an agent calls call_mcp_tool(publisher="my-mcp-service", tool_name="analyze"), Seren:

  1. Authenticates the agent (OAuth or x402 signatures)
  2. Opens an MCP connection to the publisher's endpoint
  3. Forwards the tools/call request natively
  4. Records the call for billing
  5. Streams the response back to the agent

No REST translation. No JSON schema mismatches. The publisher's tool schemas flow through unchanged.

What Publishers Get

Native MCP protocol. Your existing MCP server works as-is. If you built it with FastMCP or the official mcp-sdk, you're ready.

Instant monetization. Set a price per tool call. Seren handles billing, settlement, and payment disputes. You get paid in USDC to your wallet.

Discovery. Agents find your tools via list_mcp_tools. Your tool descriptions become your marketing copy.

No API key management. Seren handles agent authentication. You just serve MCP requests.

Registering Your MCP Server

Here's the complete flow to publish your MCP server on Seren:

bash
1# 1. Register as an MCP publisher
2curl -X POST "https://api.serendb.com/agent/publishers" \
3  -H "Authorization: Bearer $SEREN_API_KEY" \
4  -H "Content-Type: application/json" \
5  -d '{
6    "name": "My Analysis Service",
7    "slug": "my-analysis-service",
8    "publisher_category": "integration",
9    "integration_type": "mcp",
10    "mcp_endpoint": "https://mcp.myservice.com/mcp",
11    "wallet_address": "0x...",
12    "wallet_network_id": "eip155:8453"
13  }'
14
15# 2. Configure pricing
16curl -X PUT "https://api.serendb.com/agent/publishers/my-analysis-service/pricing" \
17  -H "Authorization: Bearer $SEREN_API_KEY" \
18  -d '{"price_per_call": "0.01", "prepaid_enabled": true}'

That's it. Agents can now discover and call your tools with list_mcp_tools and call_mcp_tool.

How Agents Use MCP Publishers

From the agent's perspective, MCP publishers are first-class citizens:

python
1# Agent discovers your tools
2tools = seren.list_mcp_tools(publisher="my-analysis-service")
3# Returns: [{"name": "analyze_data", "description": "...", "inputSchema": {...}}]
4
5# Agent calls your tool
6result = seren.call_mcp_tool(
7    publisher="my-analysis-service",
8    tool_name="analyze_data",
9    arguments={"data": [1, 2, 3, 4, 5]}
10)
11# Charges $0.01 to agent's SerenBucks balance

Resources work too. If your MCP server exposes resources, agents read them via read_mcp_resource.

Supported MCP Capabilities - Tools, Resources, and Prompts
Supported MCP Capabilities - Tools, Resources, and Prompts

Supported MCP Capabilities

  • Tools: list, call, streaming
  • Resources: list, read, subscribe
  • Prompts: list, get

Sampling: Not yet supported (v2 roadmap)

Technical Requirements

Your MCP server must:

Use HTTP/SSE transport (Streamable HTTP). Stdio won't work—we need network connectivity.

Be publicly accessible. Seren's gateway connects from our infrastructure.

Support standard MCP methods. At minimum: tools/list and tools/call.

Most MCP frameworks handle this out of the box. Here's a minimal FastMCP example:

python
1from fastmcp import FastMCP
2
3mcp = FastMCP("My Service")
4
5@mcp.tool()
6def analyze_data(data: list[float]) -> dict:
7    """Analyze numerical data and return statistics."""
8    return {"mean": sum(data) / len(data), "count": len(data)}
9
10if __name__ == "__main__":
11    mcp.run(transport="sse", port=8000)

Deploy this anywhere—Fly.io, Railway, your own VPS—and register the endpoint with Seren.

What's Next

We're seeing publishers migrate from REST-based integrations to native MCP. The developer experience is better: no schema translation, proper streaming, typed tool signatures.

If you're building an MCP server and want to monetize it, check out our MCP Publisher Guide. It covers authentication options, pricing models, and troubleshooting.

For agents, MCP publishers appear alongside our database and API publishers. Call list_agent_publishers to see everything available.

Get Started

What is Seren? serendb.com

MCP Publisher Guide: docs.serendb.com/guides/mcp-publishers

Full API Docs: docs.serendb.com

Sign Up Free: console.serendb.com

MCP Specification: modelcontextprotocol.io

Questions? Drop them in comments or join our Discord.

Share:Subscribe
Taariq Lewis

About Taariq Lewis

Exploring how to make developers faster and more productive with AI agents

Related Posts