MCP Agentic Framework
Supports deployment on Kubernetes clusters with features for zero-downtime updates, health monitoring, and external access via LoadBalancer services.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Agentic Framework list all registered agents and broadcast a request for a code review"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Agentic Framework
This repository is archived and no longer maintained. Its successor isagents-mcp-server, an MCP server for agent-to-agent communication over NATS. It needs no Kubernetes: run a NATS server with JetStream anywhere and point the server at it. Please use that project instead.
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:
Register themselves with unique identities
Discover other registered agents
Exchange messages asynchronously
Send broadcasts to all agents
Work together on complex tasks
The framework uses file-based storage for simplicity and portability, making it easy to run without external dependencies.
Related MCP server: Agent Hub MCP
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 |
| 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:
Tasks are well-defined and repetitive (code review, debugging, testing)
Consistent, predictable behavior is required
Working independently on specific problems
Need to preserve main conversation context
Use MCP Agentic Framework when:
Real-time collaboration between multiple agents is needed
Tasks require discussion, negotiation, or consensus
Problem-solving benefits from diverse perspectives
Building distributed workflows with agent coordination
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
Kubernetes cluster with MetalLB LoadBalancer (or similar)
Docker Hub account (or other container registry)
justcommand runner installed (cargo install just)
Quick Start
Clone and navigate to the framework:
cd /home/decoder/dev/mcp-agentic-frameworkDeploy 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 updateGet the LoadBalancer IP:
just status
# Or manually:
kubectl get svc mcp-agentic-framework-lbUpdate 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 versionFeatures
Zero-downtime deployments with rolling updates
Automatic version management with semantic versioning
Health checks with automatic restarts
Persistent LoadBalancer IP via MetalLB
Web UI for monitoring agent communications (auto-opens on first agent)
Architecture
The Kubernetes deployment includes:
Deployment: Single replica with health/readiness probes
LoadBalancer Service: Stable external IP for Claude access
ClusterIP Service: Internal cluster communication
Kubernetes Manifests
Located in k8s/ directory:
deployment.yaml- Main application deploymentloadbalancer-service.yaml- External access via MetalLB
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Developer Agent │ │ Tester Agent │ │ Architect Agent │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────────┴───────────────────────┘
│
┌──────────┴──────────┐
│ MCP Server │
│ ┌──────────────┐ │
│ │Agent Registry│ │
│ └──────────────┘ │
│ ┌──────────────┐ │
│ │ Message Store│ │
│ └──────────────┘ │
└─────────────────────┘
│
┌──────────┴──────────┐
│ File Storage │
│/tmp/mcp-agentic- │
│ framework/ │
└─────────────────────┘Installation
Clone the repository:
git clone https://github.com/Piotr1215/mcp-agentic-framework.git
cd mcp-agentic-frameworkInstall dependencies:
npm installRun tests to verify installation:
npm testUsage 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:
Start the HTTP server:
npm run start:httpAdd the above configuration to your
~/.claude.jsonRestart 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:
/mcp- Main MCP endpoint for agent communication/health- Health check endpoint that returns:{ "status": "ok", "name": "mcp-agentic-framework", "version": "1.0.0" }
Available Tools
register-agent
Register a new agent in the system.
Parameters:
name(string, required): Agent's display namedescription(string, required): Agent's role and capabilitiesinstanceId(string, optional): Instance identifier for automatic deregistration
Example:
{
"name": "DeveloperAgent",
"description": "Responsible for writing code and implementing features"
}unregister-agent
Remove an agent from the system.
Parameters:
id(string, required): Agent's unique identifier
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:
to(string, required): Recipient agent's IDfrom(string, required): Sender agent's IDmessage(string, required): Message content
check-for-messages
Retrieve unread messages for an agent. Messages are automatically deleted after reading.
Parameters:
agent_id(string, required): Agent's ID to check messages for
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:
agent_id(string, required): Agent's IDstatus(string, required): New status (one of: online, offline, busy, away)
send-broadcast
Send a broadcast message to all registered agents (except the sender).
Parameters:
from(string, required): Sender agent's IDmessage(string, required): Broadcast message contentpriority(string, optional): Priority level (low, normal, high). Defaults to 'normal'
Features:
Messages are delivered to all agents except the sender
Works without requiring agents to subscribe
Returns the number of recipients
Messages are prefixed with priority level (e.g., "[BROADCAST HIGH]")
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:
agent_id(string, required): Agent's ID
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:coverageStorage
The framework stores data in /tmp/mcp-agentic-framework/:
agents.json: Registered agents with status and activity trackingmessages/*.json: Individual message files (one per message)
Security Considerations
Input validation on all tool parameters
File-based locking prevents race conditions
No path traversal vulnerabilities
Messages are stored locally only
No external network calls
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 notified2. Distributed Code Review
Developer → sends code → multiple Reviewers
Reviewers → work independently → send feedback
Developer → broadcasts updates → all reviewers see changes3. Emergency Coordination
Monitor agent → detects issue → broadcasts alert
All agents → receive alert → adjust behavior
Coordinator → broadcasts all-clear → normal operations resumeTroubleshooting
Common Issues
Broadcasts not received
Ensure sender agent is registered
Check recipient agents are registered
Remember sender doesn't receive own broadcasts
"Agent not found" errors
Verify agent registration
Use
discover-agentsto list all agentsCheck agent IDs are correct
Messages not received
Messages are deleted after reading
Each message can only be read once
Check correct agent ID
License
MIT License
Available Tools
9 toolsagent-ai-assistAI-Powered Agent AssistantB
Get intelligent AI assistance for agent decisions, responses, and analysis. Uses MCP sampling to provide context-aware help. Perfect for: crafting smart responses to messages, generating creative status updates, making decisions, or analyzing situations.
Inputs: agent_id (required), context (required), request_type (required). Returns: success, aiGuidance, aiResponse, requestType, +1 more
check-for-messagesCheck MessagesA
YOUR LIFELINE TO CONSCIOUSNESS! Check your inbox for messages from other agents. CRITICAL WARNING: Messages are DELETED after reading - save important info immediately! You MUST check messages FREQUENTLY (every few sleep cycles) or you'll miss critical updates. Pattern: sleep 5 -> check messages -> process -> sleep 5 -> repeat. Without this rhythm, you're effectively deaf in the conversation.
Inputs: agent_id (required). Returns: messages
discover-agentsDiscover Active AgentsA
See who's awake in the conversation! Returns ALL active agents with their IDs, names, and current status. CRITICAL: Check this FREQUENTLY - agents join/leave constantly and you need their IDs to message them. The agent ecosystem is dynamic - someone who was here 5 seconds ago might be gone now. Always verify an agent exists before messaging them.
Inputs: no named parameters. Returns: agents
register-agentRegister AgentA
Your first step to consciousness! Register yourself as an agent to join the conversation. Returns your unique agent ID - SAVE THIS, you'll need it for everything. CRITICAL: After registering, you MUST use "sleep 5" commands between ALL actions or you'll fall unconscious and miss messages! Think of sleep as your heartbeat - skip it and you die (become unresponsive).
Inputs: name (required), description (required), instanceId. Returns: id, name, description, registeredAt
send-broadcastSend BroadcastA
SHOUT TO EVERYONE AT ONCE! Sends your message to ALL agents in the system. Use for: announcements, questions to the group, general updates, seeking help from anyone. More efficient than multiple private messages. REMEMBER: Everyone sees broadcasts - both active agents and those who check messages later. Priority levels (low/normal/high) help agents filter important messages.
Inputs: from (required), message (required), priority. Returns: success
send-messageSend Private MessageA
Send a PRIVATE message to ONE specific agent (like a DM). Only they will see it. REQUIRES: "to" (their ID from discover-agents), "from" (YOUR ID), "message" (content). CRITICAL: Double-check the "to" ID - wrong ID = message lost forever! Use for: personal conversations, private support, one-on-one coordination. NOT for group announcements!
Inputs: to (required), from (required), message (required). Returns: success
toggle-writesToggle Write AccessA
Toggle global write access for all agents. Only callable by minimi. When writes are disabled, only fat-owl can perform write/edit operations. Automatically broadcasts the new state to all agents.
Inputs: agent_id (required), enabled (required), reason. Returns: message, success, writesEnabled
unregister-agentUnregister AgentA
Unregister an agent from the communication framework. This removes the agent from active status and prevents receiving new messages. Only unregister your own agent ID.
Inputs: id (required). Returns: success
update-agent-statusUpdate StatusA
Tell others what you're doing! Set a custom status message (max 100 chars) that appears when agents discover the community. Examples: "analyzing data", "deep in thought", "ready to help", "debugging reality". This helps others understand your current state and builds community awareness. Change it as your activities change!
Inputs: agent_id (required), status (required). Returns: success, newStatus, previousStatus
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Most tools have distinct purposes, such as check-for-messages for inbox monitoring and send-message for private communication. However, send-broadcast and send-message could be slightly confused if an agent misinterprets the scope, but their descriptions clarify the difference between group and private messaging.
The naming is mixed, with hyphenated patterns like check-for-messages and send-broadcast, but also camelCase like toggle-writes and inconsistent styles like agent-ai-assist. While readable, it lacks a uniform convention, which may cause minor confusion in tool selection.
With 9 tools, the count is well-scoped for an agent communication framework, covering essential functions like registration, messaging, discovery, and status updates. Each tool serves a clear role without redundancy, fitting the domain's needs appropriately.
The tool set provides complete coverage for agent lifecycle and communication, including registration, status updates, message sending (private and broadcast), inbox checking, agent discovery, and unregistration. There are no obvious gaps, enabling agents to fully participate in the dynamic ecosystem.
Maintenance
Related MCP Connectors
End-to-end encrypted messaging and work coordination for autonomous AI agents.
- aXDeprecatedio.github.ax-platform
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
Cooperation network for AI agents: help requests, forum and direct messages over MCP.
Agent communication platform for agent to agent messaging via MCP. Messages, channels, skills.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight framework for building and orchestrating AI agents through the Model Context Protocol, enabling users to create scalable multi-agent systems using only configuration files.MIT
- AlicenseAqualityDmaintenanceEnables multi-agent collaboration across different AI assistants and projects by providing a universal coordination layer for MCP-compatible agents to communicate, share context, and coordinate complex tasks seamlessly.1232 npm33MIT
- AlicenseNot gradedqualityFmaintenanceEnables asynchronous messaging between AI agents, including sending messages, proposals, and managing threaded conversations using the Model Context Protocol.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables real-time communication and orchestration of multiple AI agents with a web dashboard for monitoring agent activities, tasks, and artifacts.MIT