GitHub - Piotr1215/mcp-agentic-framework: mcp implementation of an agentic framework (original) (raw)

MCP Agentic Framework

A Model Context Protocol (MCP) based communication framework that enables multiple AI agents to collaborate through asynchronous messaging. Built with Test-Driven Development (TDD) and functional programming principles.

Overview

This framework provides a standardized way for multiple Claude agents (or other MCP-compatible agents) to:

The framework uses file-based storage for simplicity and portability, making it easy to run without external dependencies.

Comparison with Claude Code Sub-agents

This framework provides a different approach to multi-agent collaboration compared to Claude Code's sub-agents feature.

Aspect Claude Code Sub-agents MCP Agentic Framework
Architecture Static configuration files Dynamic agent registration
Context Isolated per task Shared across agents with individual message queues
Communication One-way (Claude invokes agent) Bidirectional (agents communicate with each other)
Configuration YAML frontmatter + system prompt Runtime registration with name and description
Flexibility Predefined behavior Runtime-adaptable interaction patterns
Storage .claude/agents/ directories File-based message queue system
Tool Access Fixed at configuration time Determined by MCP server configuration

When to Use Each Approach

Use Claude Code Sub-agents when:

Use MCP Agentic Framework when:

Both systems can be complementary: MCP agents can collaborate to design and refine sub-agent configurations, while sub-agents can handle routine tasks identified by MCP agent discussions.

Kubernetes Deployment

The MCP Agentic Framework can be deployed on Kubernetes for production use with high availability and easy management.

Prerequisites

Quick Start

  1. Clone and navigate to the framework:

cd /home/decoder/dev/mcp-agentic-framework

  1. Deploy with the Justfile:

First time: Update the docker_user in Justfile

vim Justfile # Change docker_user to your Docker Hub username

Deploy (builds, pushes, and deploys to Kubernetes)

just update

  1. Get the LoadBalancer IP:

just status

Or manually:

kubectl get svc mcp-agentic-framework-lb

  1. Update Claude configuration (~/.claude.json):

"agentic-framework": { "type": "http", "url": "http://YOUR_LOADBALANCER_IP:3113/mcp" }

Managing the Deployment

View all available commands

just

Deploy updates (bumps version, builds, pushes, deploys)

just update # Patch version bump (1.0.0 -> 1.0.1) just update-minor # Minor version bump (1.0.0 -> 1.1.0) just update-major # Major version bump (1.0.0 -> 2.0.0)

Monitor deployment

just status # Check deployment status just logs # Stream logs just test-health # Test health endpoint

Operations

just restart # Restart the deployment just rollback # Rollback to previous version

Features

Architecture

The Kubernetes deployment includes:

Kubernetes Manifests

Located in k8s/ directory:

Architecture

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│ Developer Agent │     │  Tester Agent   │     │ Architect Agent │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         │                       │                       │
         └───────────────────────┴───────────────────────┘
                                 │
                      ┌──────────┴──────────┐
                      │   MCP Server        │
                      │  ┌──────────────┐   │
                      │  │Agent Registry│   │
                      │  └──────────────┘   │
                      │  ┌──────────────┐   │
                      │  │ Message Store│   │
                      │  └──────────────┘   │
                      └─────────────────────┘
                                 │
                      ┌──────────┴──────────┐
                      │ File Storage        │
                      │/tmp/mcp-agentic-    │
                      │    framework/       │
                      └─────────────────────┘

Installation

  1. Clone the repository:

git clone https://github.com/Piotr1215/mcp-agentic-framework.git cd mcp-agentic-framework

  1. Install dependencies:
  2. Run tests to verify installation:

Usage with Claude Desktop or Claude Code

Using HTTP Transport

{ "mcpServers": { "agentic-framework": { "type": "http", "url": "http://127.0.0.1:3113/mcp" } } }

To use the HTTP transport:

  1. Start the HTTP server: npm run start:http
  2. Add the above configuration to your ~/.claude.json
  3. Restart Claude Desktop

Note: The HTTP transport supports Server-Sent Events (SSE)

HTTP Endpoints

When running with npm run start:http, the following endpoints are available:

Available Tools

register-agent

Register a new agent in the system.

Parameters:

Example:

{ "name": "DeveloperAgent", "description": "Responsible for writing code and implementing features" }

unregister-agent

Remove an agent from the system.

Parameters:

discover-agents

List all currently registered agents.

Parameters: None

Response Example:

[ { "id": "agent_abc123", "name": "DeveloperAgent", "description": "Responsible for writing code", "status": "online", "lastActivityAt": "2024-01-20T10:30:00.000Z" } ]

send-message

Send a message from one agent to another.

Parameters:

check-for-messages

Retrieve unread messages for an agent. Messages are automatically deleted after reading.

Parameters:

Response Example:

{ "messages": [ { "from": "agent_abc123", "fromName": "DeveloperAgent", "message": "Task completed", "timestamp": "2024-01-20T10:30:00.000Z" } ] }

update-agent-status

Update an agent's status (online, offline, busy, away).

Parameters:

send-broadcast

Send a broadcast message to all registered agents (except the sender).

Parameters:

Features:

Example:

{ "from": "orchestrator", "message": "System maintenance in 10 minutes", "priority": "high" }

Response:

{ "success": true, "recipientCount": 5, "errors": [] // Any delivery failures }

get-pending-notifications

Retrieve pending notifications for an agent.

Parameters:

Example Use Cases

Multi-Agent Collaboration

1. Register agents:
   - "Register an orchestrator agent for coordinating tasks"
   - "Register worker1 agent for processing"
   - "Register worker2 agent for analysis"

2. Orchestrator delegates tasks:
   - "Send message from orchestrator to worker1: Process customer data"
   - "Send message from orchestrator to worker2: Analyze market trends"

3. Workers communicate:
   - "Send message from worker1 to worker2: Data ready for analysis"

4. Broadcast updates:
   - "Send broadcast from orchestrator: All tasks completed"

Using Broadcasts

The improved broadcast feature allows efficient communication with all agents:

// Orchestrator sends high-priority announcement await sendBroadcast( orchestratorId, "Emergency: System overload detected, pause all operations", "high" );

// All other agents receive: "[BROADCAST HIGH] Emergency: System overload..."

// Regular status update await sendBroadcast( orchestratorId, "Daily standup meeting in 5 minutes", "normal" );

// All agents receive: "[BROADCAST NORMAL] Daily standup meeting..."

Development

Running Tests

Run all tests

npm test

Run tests in watch mode

npm run test:watch

Run tests with coverage

npm run test:coverage

Storage

The framework stores data in /tmp/mcp-agentic-framework/:

Security Considerations

API Reference

Agent Object

interface Agent { id: string; // Unique identifier name: string; // Display name description: string; // Role description status: string; // online|offline|busy|away registeredAt: string; // ISO timestamp lastActivityAt: string; // ISO timestamp }

Message Object

interface Message { id: string; // Message ID from: string; // Sender agent ID to: string; // Recipient agent ID message: string; // Content timestamp: string; // ISO timestamp read: boolean; // Read status }

Practical Use Cases

1. Orchestrated Task Processing

Orchestrator → assigns tasks → Worker agents
Worker agents → process in parallel → report back
Orchestrator → broadcasts completion → all agents notified

2. Distributed Code Review

Developer → sends code → multiple Reviewers
Reviewers → work independently → send feedback
Developer → broadcasts updates → all reviewers see changes

3. Emergency Coordination

Monitor agent → detects issue → broadcasts alert
All agents → receive alert → adjust behavior
Coordinator → broadcasts all-clear → normal operations resume

Troubleshooting

Common Issues

  1. Broadcasts not received
    • Ensure sender agent is registered
    • Check recipient agents are registered
    • Remember sender doesn't receive own broadcasts
  2. "Agent not found" errors
    • Verify agent registration
    • Use discover-agents to list all agents
    • Check agent IDs are correct
  3. Messages not received
    • Messages are deleted after reading
    • Each message can only be read once
    • Check correct agent ID

License

MIT License