Tool Protocols

Agents are only as useful as the tools they can reach. The agentic ecosystem has converged on a layered protocol stack that separates tool access, agent-to-agent communication, and web connectivity into distinct, composable concerns.

MCP Won

Model Context Protocol (MCP) is the de facto standard for connecting agents to tools:

The Three-Layer Protocol Stack

LayerProtocolScopeStatus
1MCPAgent-to-ToolStable. Linux Foundation stewardship.
2A2AAgent-to-AgentEmerging. Google-led, Linux Foundation stewardship.
3WebMCPAgent-to-WebDraft specification. Standardizing web access patterns.

MCP Architecture

MCP uses a client-server architecture with a JSON-RPC 2.0 wire format.

sequenceDiagram
    participant A as Agent (MCP Client)
    participant S as MCP Server (e.g. GitHub)

    A->>S: initialize (capabilities negotiation)
    S-->>A: serverInfo, capabilities

    A->>S: tools/list
    S-->>A: [{name: "create_issue", inputSchema: {...}}, ...]

    A->>S: tools/call {name: "create_issue", arguments: {repo: "org/app", title: "Fix login bug"}}
    S-->>A: {content: [{type: "text", text: "Created issue #42"}]}

Configuration: .mcp.json

Projects declare MCP server dependencies in a .mcp.json file at the repository root, checked into version control so every developer and agent gets the same tool configuration.

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_CONNECTION_STRING": "${DATABASE_URL}"
      }
    }
  }
}

The ${ENV_VAR} syntax is resolved at runtime by the MCP client. Secrets never appear in the config file — only references to environment variables.

Tool Discovery

When an MCP client connects to a server, it calls tools/list. The server responds with a JSON Schema for each tool:

{
  "tools": [
    {
      "name": "create_issue",
      "description": "Create a new GitHub issue in a repository.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "repo": { "type": "string", "description": "owner/repo" },
          "title": { "type": "string" },
          "body": { "type": "string" }
        },
        "required": ["repo", "title"]
      }
    }
  ]
}

The protocol is self-describing — no hardcoded tool knowledge required.

ServerPackageUse Cases
GitHub@modelcontextprotocol/server-githubPR creation and review, issue triage, code search
Slack@modelcontextprotocol/server-slackNotifications, message search, channel management
PostgreSQL@modelcontextprotocol/server-postgresSQL queries, schema inspection, data analysis
Playwright@anthropic/mcp-playwrightBrowser automation, E2E testing, web scraping
JIRAmcp-jiraTicket management, sprint workflows, automation
Filesystem@modelcontextprotocol/server-filesystemScoped file read/write, directory listing, file search

Any of these can be added to .mcp.json and immediately become available to any MCP-compatible agent.

A2A Protocol

Agent-to-Agent (A2A) addresses multi-agent coordination: how agents discover, authenticate with, and delegate work to other agents. Each A2A-compatible agent publishes an Agent Card at /.well-known/agent.json advertising its skills, auth requirements (standard OAuth 2.0 / OIDC), and endpoint. A2A defines a stateful task lifecycle (submitted, working, completed, failed) for tracking long-running delegations. The protocol is Google-led and now under Linux Foundation stewardship. MCP and A2A are complementary — MCP connects agents to tools, A2A connects agents to agents.

Security

Cross-Platform Adoption

PlatformMCP SupportConfig LocationTransportNotes
Claude CodeNative, first-party.mcp.json, ~/.claude/settings.jsonstdio, SSE, HTTPDeepest integration. Built-in permission model.
OpenAI Codex CLINativecodex-config.jsonstdio, HTTPSupports remote MCP servers. Tool approval flow.
Gemini CLINative.mcp.jsonstdio, SSEDirect MCP support. Google Cloud auth integration.
Google ADKVia MCPToolsetPython codestdio, SSE, HTTPMCPToolset.from_server() wraps any MCP server.
LangGraphVia adapterPython codestdio, SSElangchain-mcp-adapters converts MCP to LangChain tools.
CrewAIVia adapterPython codestdio, SSEMCP tools integrate through CrewAI’s tool interface.

Further Reading