eventuali-mcp-server


Nameeventuali-mcp-server JSON
Version 0.2.2 PyPI version JSON
download
home_pageNone
SummaryMCP server and client for Eventuali event sourcing system with integrated API server
upload_time2025-08-25 20:34:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords event-sourcing eventuali fastmcp mcp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
  <img src="https://raw.githubusercontent.com/primevalai/onyx-octopus/main/assets/onyx-octopus-avatar.png" alt="Onyx Octopus" width="300">
  
  # Eventuali MCP Server
</div>

A Model Context Protocol (MCP) server for the Eventuali event sourcing system, providing real-time event streaming, agent lifecycle management, and workflow orchestration capabilities with integrated API server support.

## Features

- **Real-time Event Streaming**: Continuous polling and streaming of events from Eventuali API
- **Agent Lifecycle Management**: Tools for starting, monitoring, and completing agent workflows
- **Workflow Orchestration**: Support for complex multi-agent workflows with proper correlation
- **Three-Aggregate Pattern**: Enforces proper event naming for Agent, Workflow, and System aggregates
- **Integrated API Server**: Optional auto-start of eventuali-api-server for self-contained operation
- **Type Safety**: Full Pydantic validation and type hints throughout
- **Async Performance**: Built on FastMCP 2.0 for high-performance async operations

## Installation

```bash
pip install eventuali-mcp-server
```

## Quick Start

### Running the MCP Server

```bash
# Start the server on default port 3333
eventuali-mcp-server

# Start with integrated API server (auto-starts eventuali-api-server)
export START_API_SERVER=true
eventuali-mcp-server

# Or specify custom configuration
export EVENT_API_URL=http://localhost:8765
export MCP_PORT=3333
export START_API_SERVER=false
eventuali-mcp-server
```

### Using the Event API Client

```python
from eventuali_mcp_server import EventAPIClient

async def main():
    async with EventAPIClient("http://localhost:8765") as client:
        # Emit an event
        await client.emit_event(
            event_name="agent.myAgent.started",
            attributes={"agent_id": "my-agent-123"},
            aggregate_id="my-agent-123"
        )
        
        # Stream events
        async for event in client.stream_events():
            if event.event == "event_created":
                print(f"Received: {event.data}")
```

### MCP Tools

The server provides several MCP tools for event management:

#### Start Agent
```python
await mcp_client.call_tool("start_agent", {
    "agent_name": "urlCacher",
    "agent_id": "cache-agent-123",
    "workflow_id": "workflow-456",
    "parent_agent_id": "orchestrator"
})
```

#### Emit Agent Event
```python
await mcp_client.call_tool("emit_agent_event", {
    "agent_id": "cache-agent-123",
    "agent_name": "urlCacher",
    "event_name": "processing_started",
    "attributes": {"url_count": 5}
})
```

#### Complete Agent
```python
await mcp_client.call_tool("complete_agent", {
    "agent_id": "cache-agent-123",
    "agent_name": "urlCacher", 
    "success": True,
    "message": "Successfully cached 5 URLs"
})
```

## Event Naming Convention

The server enforces a three-aggregate event naming pattern:

### Agent Events (`agent.<agentName>.*`)
- Format: `agent.<agentName>.<eventName>`
- Examples: `agent.urlCacher.started`, `agent.simonSays.completed`
- Required: `agent_id`, `agent_name`
- Optional: `workflow_id`, `parent_agent_id`

### Workflow Events (`workflow.*`)
- Format: `workflow.<eventName>`
- Examples: `workflow.started`, `workflow.completed`
- Required: `workflow_id`
- Optional: `user_prompt`

### System Events (`system.*`)
- Format: `system.<eventName>`
- Examples: `system.session_started`, `system.error`
- Optional: `session_id`

## Configuration

Environment variables:

- `EVENT_API_URL`: Eventuali API endpoint (default: `http://127.0.0.1:8765`)
- `MCP_PORT`: MCP server port (default: `3333`)
- `MCP_HOST`: MCP server host (default: `127.0.0.1`)
- `START_API_SERVER`: Auto-start eventuali-api-server (default: `false`)

## Development

### Setup

```bash
git clone https://github.com/primevalai/eventuali-mcp-server
cd eventuali-mcp-server
uv pip install -e ".[dev]"
```

### Running Tests

```bash
uv run pytest
```

### Code Quality

```bash
uv run black .
uv run flake8 .
uv run mypy .
```

## Architecture

The package provides:

- **EventAPIClient**: Async HTTP client for Eventuali API communication
- **MCP Server**: FastMCP-based server with event streaming and tools
- **Models**: Pydantic models for type-safe event handling
- **Tools**: MCP tools for agent and workflow management

## Contributing

1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request

## License

MIT License - see LICENSE file for details.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "eventuali-mcp-server",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "event-sourcing, eventuali, fastmcp, mcp",
    "author": null,
    "author_email": "Primeval AI <noreply@primevalai.com>",
    "download_url": "https://files.pythonhosted.org/packages/74/9f/b3a1896b327ccdca1617264e221f3b95f3c0e20fe705e383ea6593bf0461/eventuali_mcp_server-0.2.2.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/primevalai/onyx-octopus/main/assets/onyx-octopus-avatar.png\" alt=\"Onyx Octopus\" width=\"300\">\n  \n  # Eventuali MCP Server\n</div>\n\nA Model Context Protocol (MCP) server for the Eventuali event sourcing system, providing real-time event streaming, agent lifecycle management, and workflow orchestration capabilities with integrated API server support.\n\n## Features\n\n- **Real-time Event Streaming**: Continuous polling and streaming of events from Eventuali API\n- **Agent Lifecycle Management**: Tools for starting, monitoring, and completing agent workflows\n- **Workflow Orchestration**: Support for complex multi-agent workflows with proper correlation\n- **Three-Aggregate Pattern**: Enforces proper event naming for Agent, Workflow, and System aggregates\n- **Integrated API Server**: Optional auto-start of eventuali-api-server for self-contained operation\n- **Type Safety**: Full Pydantic validation and type hints throughout\n- **Async Performance**: Built on FastMCP 2.0 for high-performance async operations\n\n## Installation\n\n```bash\npip install eventuali-mcp-server\n```\n\n## Quick Start\n\n### Running the MCP Server\n\n```bash\n# Start the server on default port 3333\neventuali-mcp-server\n\n# Start with integrated API server (auto-starts eventuali-api-server)\nexport START_API_SERVER=true\neventuali-mcp-server\n\n# Or specify custom configuration\nexport EVENT_API_URL=http://localhost:8765\nexport MCP_PORT=3333\nexport START_API_SERVER=false\neventuali-mcp-server\n```\n\n### Using the Event API Client\n\n```python\nfrom eventuali_mcp_server import EventAPIClient\n\nasync def main():\n    async with EventAPIClient(\"http://localhost:8765\") as client:\n        # Emit an event\n        await client.emit_event(\n            event_name=\"agent.myAgent.started\",\n            attributes={\"agent_id\": \"my-agent-123\"},\n            aggregate_id=\"my-agent-123\"\n        )\n        \n        # Stream events\n        async for event in client.stream_events():\n            if event.event == \"event_created\":\n                print(f\"Received: {event.data}\")\n```\n\n### MCP Tools\n\nThe server provides several MCP tools for event management:\n\n#### Start Agent\n```python\nawait mcp_client.call_tool(\"start_agent\", {\n    \"agent_name\": \"urlCacher\",\n    \"agent_id\": \"cache-agent-123\",\n    \"workflow_id\": \"workflow-456\",\n    \"parent_agent_id\": \"orchestrator\"\n})\n```\n\n#### Emit Agent Event\n```python\nawait mcp_client.call_tool(\"emit_agent_event\", {\n    \"agent_id\": \"cache-agent-123\",\n    \"agent_name\": \"urlCacher\",\n    \"event_name\": \"processing_started\",\n    \"attributes\": {\"url_count\": 5}\n})\n```\n\n#### Complete Agent\n```python\nawait mcp_client.call_tool(\"complete_agent\", {\n    \"agent_id\": \"cache-agent-123\",\n    \"agent_name\": \"urlCacher\", \n    \"success\": True,\n    \"message\": \"Successfully cached 5 URLs\"\n})\n```\n\n## Event Naming Convention\n\nThe server enforces a three-aggregate event naming pattern:\n\n### Agent Events (`agent.<agentName>.*`)\n- Format: `agent.<agentName>.<eventName>`\n- Examples: `agent.urlCacher.started`, `agent.simonSays.completed`\n- Required: `agent_id`, `agent_name`\n- Optional: `workflow_id`, `parent_agent_id`\n\n### Workflow Events (`workflow.*`)\n- Format: `workflow.<eventName>`\n- Examples: `workflow.started`, `workflow.completed`\n- Required: `workflow_id`\n- Optional: `user_prompt`\n\n### System Events (`system.*`)\n- Format: `system.<eventName>`\n- Examples: `system.session_started`, `system.error`\n- Optional: `session_id`\n\n## Configuration\n\nEnvironment variables:\n\n- `EVENT_API_URL`: Eventuali API endpoint (default: `http://127.0.0.1:8765`)\n- `MCP_PORT`: MCP server port (default: `3333`)\n- `MCP_HOST`: MCP server host (default: `127.0.0.1`)\n- `START_API_SERVER`: Auto-start eventuali-api-server (default: `false`)\n\n## Development\n\n### Setup\n\n```bash\ngit clone https://github.com/primevalai/eventuali-mcp-server\ncd eventuali-mcp-server\nuv pip install -e \".[dev]\"\n```\n\n### Running Tests\n\n```bash\nuv run pytest\n```\n\n### Code Quality\n\n```bash\nuv run black .\nuv run flake8 .\nuv run mypy .\n```\n\n## Architecture\n\nThe package provides:\n\n- **EventAPIClient**: Async HTTP client for Eventuali API communication\n- **MCP Server**: FastMCP-based server with event streaming and tools\n- **Models**: Pydantic models for type-safe event handling\n- **Tools**: MCP tools for agent and workflow management\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new functionality\n4. Ensure all tests pass\n5. Submit a pull request\n\n## License\n\nMIT License - see LICENSE file for details.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "MCP server and client for Eventuali event sourcing system with integrated API server",
    "version": "0.2.2",
    "project_urls": {
        "Bug Reports": "https://github.com/primevalai/eventuali-mcp-server/issues",
        "Documentation": "https://github.com/primevalai/eventuali-mcp-server#readme",
        "Homepage": "https://github.com/primevalai/eventuali-mcp-server",
        "Repository": "https://github.com/primevalai/eventuali-mcp-server"
    },
    "split_keywords": [
        "event-sourcing",
        " eventuali",
        " fastmcp",
        " mcp"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "749fb3a1896b327ccdca1617264e221f3b95f3c0e20fe705e383ea6593bf0461",
                "md5": "c1cf74efdaa636c85bafbffd91221146",
                "sha256": "d7d013c53bc5e1f9e8546bd536a95aacdbc8d922492ace4d778734eabba5f8c3"
            },
            "downloads": -1,
            "filename": "eventuali_mcp_server-0.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "c1cf74efdaa636c85bafbffd91221146",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 12772,
            "upload_time": "2025-08-25T20:34:48",
            "upload_time_iso_8601": "2025-08-25T20:34:48.765930Z",
            "url": "https://files.pythonhosted.org/packages/74/9f/b3a1896b327ccdca1617264e221f3b95f3c0e20fe705e383ea6593bf0461/eventuali_mcp_server-0.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-25 20:34:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "primevalai",
    "github_project": "eventuali-mcp-server",
    "github_not_found": true,
    "lcname": "eventuali-mcp-server"
}
        
Elapsed time: 1.29346s