Skip to main content

Python framework for implementing multi-agent systems

Project description

Agentic A2A

A Python framework for developing and deploying complete AI applications that includes:

  • Multi-agent systems according to the Agent2Agent (A2A) protocol
  • MCP tools

⚠️ Beta Version: This framework is currently in active development and is considered a beta release. Features may change, and some functionality may be unstable.

Overview

Agentic is a powerful framework that simplifies the creation of multi-agent systems by leveraging the a2a protocol. Built on top of FastAPI and the a2a-sdk, Agentic enables developers to easily define, deploy, and manage multiple AI agents. Agentic also allows the creation of tools according to the MCP standard. The MCP system is built on top of FastApiMCP.

Key Features

  • Simple Agent Definition: Use @agent and @skill decorators to define agents and their capabilities with minimal boilerplate code
  • Multi-Agent Server: Deploy multiple agents on the same server instance
  • A2A Protocol Support: Built-in support for agent-to-agent communication using the standardized a2a protocol
  • FastAPI Integration: Leverages FastAPI's performance and features for robust web service deployment
  • A2A Client: Included client for easy interaction with deployed agents
  • MCP Tools: Use @mcp decorator to expose tools according to the MCP standard

Development Status

This project is currently in beta development. We are actively working on:

  • Stabilizing the core API
  • Adding comprehensive documentation
  • Implementing additional features

Feedback and contributions are highly appreciated as we work towards a stable release.

Getting Started

Note: As this is a beta version, the API may change in future releases.

  1. Define project structure:

- app
-- agents
--- init.py
--- hello_agent.py
-- tools
--- init.py
--- hello_tool.py
main.py

  1. Define an Agent:

Create the hello_agent.py file with the following content:

from agentic.a2a.core import agent, skill, BaseAgent
from a2a.server.agent_execution import RequestContext
from a2a.utils import new_agent_text_message
from a2a.server.events import Event

@agent(
    description="Hello World Agent",
)
class HelloAgent(BaseAgent):

    async def execute(self, input:RequestContext) -> Event:
        out = new_agent_text_message("Hello World!")
        return out

    @skill(
        name="say_hello", 
        description="Say hello to someone by name",
    )
    async def say_hello(self, name):
        ...
        return "Hello " + name + "!"
  1. Define an MCP Tool:

Create the hello_tool.py file with the following content:

from agentic.mcp.core import mcp

@mcp(
    methods=["GET"],
    tags=["hello"],
    path="/hello/{name}",
)
def hello_world(name:str) -> str:
    """ Hello World MCP tool """
    return "Hello, " + name + "!"
  1. Deploy the Server:

Create the main.py file with the following content:

from agentic.server import AgenticApp
AgenticApp(title="Agentic", root_package='app', port=8080).run()

The 'app' package should contain the agents and tools defined in steps 1 and 2.
You can define sub-packages (must define the init.py file) to organize your agents and tools. At the server start, the server will automatically discover all agents and tools.
Run the app with:

python main.py

The app will start by default on "http://localhost:8080". You can see the APIs documentation at "http://localhost:8080/docs".

  1. Use the A2A Client:

To test the server, you can use the A2A client. Here's an example of how to use the client to interact with the server:

import asyncio
from agentic.a2a.client import ClientA2A
from agentic.a2a.utility import ResponseParser
from a2a.types import DataPart

async def main():
    client = ClientA2A(url='http://localhost:8080')

    data = { "messages": [
            {'role': 'user', 'content': 'Hello!'},
    ]}
    
    result = await client.invoke("/say_hello", parts=[DataPart(data=data)])
    parser = ResponseParser(result)
    print("RESULT: ", parser.get_parts())

if __name__ == "__main__":
asyncio.run(main())

Integration with external MCP client

The MCP server can be integrated with any MCP client such as Cloude Desktop. Below is an example configuration (claude_desktop_config.json):

{
    "mcpServers": {
        "mytool": {
            "command": "uv",
            "args": ["tool", "run", "mcp-proxy", "http://localhost:8080/mcp"]
        }
    }
}

To configure the mcp proxy you can use uv:

uv tool install mcp-proxy

Contributing

As this is a beta project, contributions are especially welcome! Please feel free to:

  • Report bugs and issues
  • Suggest new features
  • Submit pull requests
  • Provide feedback on the API design

Links

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

agentic_a2a-0.1.9-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file agentic_a2a-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: agentic_a2a-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for agentic_a2a-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 31ab60f3a890983f85a52286f09d6a045b3ea6a067ff9f7a8834ec1f1f8af6de
MD5 b14e2d86a7ba37ffa6cd88f29a7ef6df
BLAKE2b-256 0d47035c28a7d69986313238dfe769234fb9454429d152c5d3f24f4c88a2e69d

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentic_a2a-0.1.9-py3-none-any.whl:

Publisher: publish.yml on DevTurtleBlog/agentic

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