Skip to main content

MCP tools loader for Axio

Project description

axio-tools-mcp

PyPI Python License: MIT

Model Context Protocol (MCP) bridge for axio.

Connect any MCP server to your axio agent. Tools exposed by MCP servers are discovered at runtime and become first-class axio Tool instances — no manual wiring required.

Features

  • Dynamic tool discovery — connects to MCP servers and converts their tools into axio Tool instances automatically
  • Multiple servers — configure and run several MCP servers simultaneously
  • Lifecycle management — handles server startup, shutdown, and reconnection
  • TUI integration — ships a settings screen for managing MCP server configuration from within axio-tui

Installation

pip install axio-tools-mcp

Usage

With axio-tui (recommended)

pip install "axio-tui[mcp]"
uv run axio   # MCP Servers section appears in settings

Standalone

import asyncio
from axio_tools_mcp.registry import MCPRegistry
from axio.agent import Agent
from axio.context import MemoryContextStore

async def main() -> None:
    registry = MCPRegistry()
    await registry.init(config=None)

    tools = registry.all_tools   # list[axio.Tool]
    print(f"Loaded {len(tools)} tools from MCP servers")

    # Pass any CompletionTransport — e.g. OpenAITransport, AnthropicTransport
    agent = Agent(
        system="You are a helpful assistant.",
        tools=tools,
        transport=transport,
    )
    result = await agent.run("Use the available tools to help me", MemoryContextStore())
    print(result)

    await registry.close()

asyncio.run(main())

Transport types

Two transport types are supported, selected by which field is set in the server config:

Transport Config field Protocol
stdio command Spawns a subprocess; communicates over stdin/stdout (MCP stdio transport)
HTTP url Connects to a running HTTP server using the MCP Streamable HTTP transport (httpx)

Exactly one of command or url must be set per server — providing both or neither raises a ValueError.

For stdio servers, stderr output from the subprocess is forwarded to the Python logger as warnings under the mcp:<server-name> prefix.

HTTP servers accept optional headers (e.g., for bearer tokens) and a configurable timeout (default: 30 seconds).

Tool naming

Tools from MCP servers are named using the pattern <server_name>__<tool_name>. For example, a server named filesystem that exposes a tool called read_file becomes filesystem__read_file in axio. The tool description is taken from the MCP tool's description field, falling back to the tool name if no description is provided.

Error handling

When an MCP server fails to connect or start, the error is logged at ERROR level and the server is skipped — no exception is raised to the caller. registry.all_tools will simply not include any tools from the failed server. The error message is accessible via registry.server_status(name) (returns "error") and the raw error string is stored internally.

Lifecycle: close()

Call await registry.close() when the agent session ends to disconnect all MCP server sessions and release resources (subprocess file descriptors, HTTP connections):

await registry.close()

MCP server configuration

MCP servers are configured via the axio-tui settings UI or programmatically:

stdio server (spawns a subprocess):

{
  "servers": [
    {
      "name": "filesystem",
      "command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    {
      "name": "github",
      "command": ["npx", "-y", "@modelcontextprotocol/server-github"],
      "env": {"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."}
    }
  ]
}

HTTP server (connects to a running MCP HTTP endpoint):

{
  "servers": [
    {
      "name": "remote",
      "url": "https://my-mcp-server.example.com/mcp",
      "headers": {"Authorization": "Bearer my-token"},
      "timeout": 60.0
    }
  ]
}

Plugin registration

[project.entry-points."axio.tools.settings"]
mcp = "axio_tools_mcp.plugin:MCPPlugin"

Part of the axio ecosystem

axio · axio-tools-local · axio-tools-docker · axio-tui

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

axio_tools_mcp-0.8.0.tar.gz (69.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

axio_tools_mcp-0.8.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file axio_tools_mcp-0.8.0.tar.gz.

File metadata

  • Download URL: axio_tools_mcp-0.8.0.tar.gz
  • Upload date:
  • Size: 69.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for axio_tools_mcp-0.8.0.tar.gz
Algorithm Hash digest
SHA256 0fe382b7a93e8d5bca2aa99df538f73aa46379b2e3d3d62021dec0fa6c1b051e
MD5 9767d16e3baa05481f40aa3cb2974ea1
BLAKE2b-256 716938b5396cf9d63c0311209445a7ec9cc94bae6d2d0a19b0ab13a0f2ea0299

See more details on using hashes here.

Provenance

The following attestation bundles were made for axio_tools_mcp-0.8.0.tar.gz:

Publisher: publish.yml on mosquito/axio-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file axio_tools_mcp-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: axio_tools_mcp-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for axio_tools_mcp-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14a4ebfde5c22d7c3b713cb31f82f790310a962d9d60414ce12327657720afbe
MD5 265bdddadc2644ee5516fb5c74ec18f6
BLAKE2b-256 49d4e961ff02e40d05985ef796fe45346aab2dd6080af1e40f7d259aceaa6f5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for axio_tools_mcp-0.8.0-py3-none-any.whl:

Publisher: publish.yml on mosquito/axio-agent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page