Skip to content

MCP

Open standards

Model Context Protocol (MCP) lets an agent call tools hosted by a separate server. The agent still calls ToolContract.call_tool(name, arguments). Infra decides whether a local function or an MCP server answers.

How MAS-Lab implements it

MCP client and server plugins ship in mas-library-ioa and use the official Python SDK (mcp>=2.2). The console script is mas-mcp.

A remote tool is a ToolServerRegistry entry:

apiVersion: infra/v1
kind: ToolServerRegistry
metadata:
  name: mcp-localhost
spec:
  tool_servers:
    - name: mcp-web-search
      protocol: mcp
      usage: use
      url: http://127.0.0.1:9001/mcp
      tools: [web-search]

--bind NAME=mcp://host:port/mcp#tool is a shortcut for a usage: use row. Serve a tool with mas-mcp serve --tool-manifest … --transport streamable-http.

Dependencies

Piece Package
Client, server, mas-mcp mas-library-ioa
Official Python SDK mcp>=2.2 (mcp[cli] extra for mcp version / mcp dev)
Infra kind ToolServerRegistry

Compliance

Conformance uses the official npm runner, not a vendored checkout:

npx @modelcontextprotocol/conformance server \
  --url http://127.0.0.1:9001/mcp \
  --requirements 2026-07-28

Pinned revisions are MCP 2025-11-25 and 2026-07-28. The runner version is @modelcontextprotocol/conformance@0.2.0-alpha.11 (MCP_CONFORMANCE_VERSION). The v0.2 release notes record 98.3% of required checks on the 2026-07-28 stateless revision. Workflow, reports, and what is not scored: library-ioa MCP compliance and RESULTS.md.