Skip to main content

hexastack-mcp

hexastack-mcp

Model Context Protocol (MCP) adapter and AI agent tool integration for Hexastack.

PyPI: hexastack-mcp Python 3.13+ Coverage License: Apache 2.0

1. Overview & Capabilities

hexastack-mcp exposes Hexastack application services directly to AI agents (Claude Desktop, Cursor, Antigravity, custom LLM agents) via the official Anthropic Model Context Protocol:

  • Automatic CQRS Tool Generation (@mcp_tool): Decorates CQRS Command and Query models, converting them into structured LLM tools with JSON Schema validation.
  • Resource URI Providers (@mcp_resource): Exposes read endpoints and system diagnostics as readable MCP resources (hexastack://schema, hexastack://info).
  • Prompt Templates (@mcp_prompt): Configures reusable workflow prompts for LLM clients.
  • Multiple Transports:
    • Standard I/O (stdio): Local process communication for desktop assistants and subprocess agents.
    • Server-Sent Events (sse): HTTP SSE transport via FastAPI for remote agent networks.
  • Single-Pass Reflection: Discovers decorated tools and resources in Phase 3 module scanning via create_mcp_visitor.

2. Package Anatomy & Key Components

hexastack_mcp/
├── domain/          # McpToolMetadata, McpResourceMetadata, McpPromptMetadata, McpError
├── adapters/        # stdio runner, sse/FastAPI router, FastMCP server wrapper
└── infra/
    ├── bootstrap.py # McpBootstrapper (order=40)
    ├── config.py    # HexastackMcpConfig
    ├── decorators.py# @mcp_tool, @mcp_resource, @mcp_prompt
    ├── autodiscovery.py # create_mcp_visitor
    └── registries/  # server.py (McpServerRegistry)

Key Exports

Category Exports
Adapters run_stdio_server, create_sse_router, mount_mcp_sse
Bootstrap McpBootstrapper (order=40), HexastackMcpConfig
Decorators @mcp_tool, @mcp_resource, @mcp_prompt
Registries McpServerRegistry, get_mcp_registry

3. Monorepo & Sibling Relationships

graph TD
    subgraph Agents ["AI Agent Clients (Claude, Cursor, Antigravity)"]
        STDIO_CLIENT["Local Desktop / Subprocess (stdio)"]
        SSE_CLIENT["Remote Agent Network (SSE / HTTP)"]
    end

    subgraph McpAdapter ["hexastack-mcp"]
        SERVER["FastMCP / MCP Server"]
        REG["McpServerRegistry (Tools, Resources, Prompts)"]
        DISPATCH["CQRS Tool Dispatcher"]
    end

    subgraph CQRSExecution ["hexastack-cqrs"]
        CBUS["CommandBusPort"]
        QBUS["QueryBusPort"]
    end

    subgraph WebIntegration ["hexastack-fastapi (Optional)"]
        FASTAPI_APP["FastAPI Application (SSE Endpoint)"]
    end

    STDIO_CLIENT --> SERVER
    SSE_CLIENT --> FASTAPI_APP
    FASTAPI_APP --> SERVER
    SERVER --> REG
    REG --> DISPATCH
    DISPATCH -->|dispatches commands| CBUS
    DISPATCH -->|dispatches queries| QBUS

Explicit Dependencies (Direct)

  • hexastack-core: DI container, configuration registry, base exceptions.
  • hexastack-cqrs: CommandBusPort and QueryBusPort for message dispatching.
  • mcp>=1.3.0: Official Anthropic Model Context Protocol SDK.

Implied / Behavioral Relationships (DI-Mediated)

  • FastAPI SSE Integration: McpBootstrapper (order=40) attaches SSE endpoints to the active FastAPI instance when hexastack-fastapi is present and auto_mount_fastapi=true.
  • CQRS Dispatching: When an LLM executes an MCP tool, the adapter resolves CommandBusPort or QueryBusPort to run the command through the full middleware pipeline.

Optional Integrations (Extras)

  • [fastapi]: Installs hexastack-fastapi and fastapi>=0.141.1 for remote SSE transport over HTTP.

4. Installation

# Standalone stdio transport
pip install hexastack-mcp

# With FastAPI remote SSE transport
pip install "hexastack-mcp[fastapi]"

# Via umbrella package
pip install "hexastack[mcp]"

5. Configuration Reference

[hexastack.mcp]
server_name = "Hexastack MCP Server"
server_version = "0.1.0"
sse_path = "/sse" # Route prefix for SSE transport
auto_mount_fastapi = true # Auto-mount SSE router into FastAPI on bootstrap

6. Quickstart Example

from dataclasses import dataclass
from hexastack_core.infra.bootstrap import bootstrap
from hexastack_cqrs.domain.query import Query
from hexastack_cqrs.infra.decorators import query_handler
from hexastack_mcp.infra.decorators import mcp_tool


# 1. Define CQRS Query & Handler
@dataclass(frozen=True)
class CheckSystemStatusQuery(Query):
    service: str = "database"


@query_handler(CheckSystemStatusQuery)
class CheckSystemStatusHandler:
    def __call__(self, qry: CheckSystemStatusQuery) -> dict[str, str]:
        return {"service": qry.service, "status": "HEALTHY"}


# 2. Expose as MCP Tool for AI Agents
mcp_tool(
    name="check_status",
    description="Check the real-time operational status of internal subsystems.",
)(CheckSystemStatusQuery)

# 3. Bootstrap Runtime and Run MCP Server
runtime = bootstrap(packages_to_scan=[__name__])
mcp_server = runtime.get("mcp_server")

Metadata

Release files for hexastack-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hexastack-mcp 0.2.0
File Size Uploaded
hexastack_mcp-0.2.0.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hexastack-mcp 0.2.0
File Interpreter ABI Platform
hexastack_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.0 kB

Release files / hexastack_mcp-0.2.0.tar.gz

Download URL hexastack_mcp-0.2.0.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3fc6756e02dbbd21cf444e7a31b0b3fd244d09a0d0af7fd2259d8fc1e93942e5
BLAKE2b-256 checksum
How to use checksums
680a26ac64d6d053c22d476fea3f19d9c6794d5f1bb54c5beee5f1c0e84aa83a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / hexastack_mcp-0.2.0-py3-none-any.whl

Download URL hexastack_mcp-0.2.0-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f7caf4abfe8dae305236142b9976ab7b2228eab5519449b77c7a466a61995c9
BLAKE2b-256 checksum
How to use checksums
c5f1978fb61f092514cd853494a442970578da614da950a85dffb8fc281adaa7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page