Framework-agnostic MCP client integration for HexaEight agents
Project description
HexaEight MCP Client
๐ Framework-agnostic MCP integration with secure LLM configuration, automatic multi-agent coordination, and military-grade encryption.
Build sophisticated multi-agent systems with minimal code while maintaining complete security and framework choice.
๐ Key Features
- ๐ Secure LLM Configuration - Encrypt API keys and endpoints with HexaEight's military-grade encryption
- ๐ค Framework Integration - AutoGen, CrewAI, LangChain with encrypted LLM configs
- ๐ ๏ธ Multi-Agent Types - LLM agents, Tool agents, User agents with automatic coordination
- ๐ Automatic Discovery - Dynamic capability discovery and intelligent message routing
- ๐ก PubSub Coordination - Seamless agent communication and task delegation
- โก One-Line Setup - From configuration to production-ready agents instantly
- ๐ฏ Business Logic - Write your actual API/database code once in tool agents
- ๐ Production Security - Zero plain-text secrets, secure agent identity management
๐ Requirements
Core Requirements
-
HexaEight License
- Purchase from store.hexaeight.com
- Install on your development/production machine
- Enables creation of 1 parent configuration + unlimited child configurations
-
HexaEight Agentic IAM Server (Releasing Soon)
- Create CLIENT Application (CLIENTID)
- Provisions PubSub server bonded to your CLIENTID
- Enables seamless agent communication
-
Python Environment
- Python 3.8+
- .NET SDK (for agent creation)
Agent Licensing Model
| Agent Type | License Requirement | Expiry Behavior |
|---|---|---|
| Parent Agents | โ Active HexaEight license required | โ Stop working when license expires |
| Child Agents | โ Created with valid license | โ Continue working after license expires |
Note: All agents (parent and child) are tied to your CLIENT Application (CLIENTID).
๐ Installation
# Basic installation
pip install hexaeight-mcp-client
# With framework support
pip install hexaeight-mcp-client[autogen] # For AutoGen
pip install hexaeight-mcp-client[crewai] # For CrewAI
pip install hexaeight-mcp-client[langchain] # For LangChain
pip install hexaeight-mcp-client[all] # All frameworks
Prerequisites
# Core HexaEight agent package
pip install hexaeight-agent
# Optional: Framework packages
pip install pyautogen # For AutoGen integration
pip install crewai # For CrewAI integration
pip install langchain # For LangChain integration
๐ Secure LLM Configuration
Encrypt Your LLM Configuration
from hexaeight_mcp_client import HexaEightAutoConfig, quick_autogen_llm
# Your sensitive LLM configuration
llm_config = {
"provider": "openai",
"api_key": "sk-your-actual-openai-api-key-here", # Real API key
"model": "gpt-4",
"temperature": 0.7,
"max_tokens": 1000
}
# Create agent for encryption capabilities
agent = await quick_autogen_llm('parent_config.json')
# Encrypt and protect your configuration
protector = HexaEightAutoConfig.create_llm_config_protector(agent.hexaeight_agent)
protector.save_protected_config(llm_config, "secure_openai.enc")
print("โ
API keys encrypted and secured!")
Supported LLM Providers
| Provider | Configuration Example |
|---|---|
| OpenAI | {"provider": "openai", "api_key": "sk-...", "model": "gpt-4"} |
| Azure OpenAI | {"provider": "azure_openai", "api_key": "...", "azure_endpoint": "https://..."} |
| Anthropic | {"provider": "anthropic", "api_key": "sk-ant-...", "model": "claude-3-sonnet"} |
| Local Ollama | {"provider": "ollama", "base_url": "http://localhost:11434", "model": "llama2"} |
๐ค Framework Integration with Secure LLM Config
AutoGen Integration
from hexaeight_mcp_client import HexaEightAutoConfig, create_autogen_agent_with_hexaeight
# Create AutoGen agent with encrypted LLM configuration
autogen_agent, hexaeight_agent = await create_autogen_agent_with_hexaeight(
config_file="parent_config.json",
agent_type="parentLLM",
name="IntelligentCoordinator",
system_message="You can coordinate with multiple specialized agents and services."
)
# AutoGen agent now has:
# โ
Encrypted LLM configuration (your API keys secure)
# โ
HexaEight coordination tools
# โ
Automatic capability discovery
# โ
Multi-agent coordination via PubSub
CrewAI Integration
from hexaeight_mcp_client import create_crewai_agent_with_hexaeight
# Create CrewAI agent with encrypted LLM configuration
crewai_agent, hexaeight_agent = await create_crewai_agent_with_hexaeight(
config_file="parent_config.json",
agent_type="parentLLM",
role="Multi-Agent Coordinator",
goal="Coordinate complex workflows using available tools and services",
backstory="Expert in orchestrating multi-agent systems with secure communication"
)
# CrewAI agent now has:
# โ
Encrypted LLM configuration
# โ
Role-based coordination capabilities
# โ
Access to dynamic tool discovery
# โ
Secure multi-agent communication
LangChain Integration
from hexaeight_mcp_client import HexaEightAutoConfig
# Create LangChain setup with encrypted LLM configuration
hexaeight_agent = await HexaEightAutoConfig.create_llm_agent_with_protected_config(
agent_type="parentLLM",
config_file="parent_config.json",
encrypted_llm_config_file="secure_openai.enc",
framework="langchain"
)
# Access decrypted LLM config for LangChain
llm_config = hexaeight_agent.llm_config
# Use with LangChain
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent
llm = ChatOpenAI(
model=llm_config["model"],
openai_api_key=llm_config["api_key"], # Securely decrypted
temperature=llm_config["temperature"]
)
# LangChain agent with HexaEight tools
tools = hexaeight_agent.get_available_tools()
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
๐ ๏ธ Multi-Agent Architecture
Agent Types
| Agent Type | Purpose | Verification | Broadcasts | Use Case |
|---|---|---|---|---|
| parentLLM | LLM coordination | โ Required | โ Receives all | Main intelligence and coordination |
| childLLM | LLM task execution | โ Required | โ Receives all | Specialized LLM workers |
| parentTOOL | Service provision | โ Not required | โ Ignores broadcasts | API services, databases |
| childTOOL | Specialized services | โ Not required | โ Ignores broadcasts | Specific tool implementations |
| USER | Human interaction | โ Not required | โ Broadcasts to LLMs only | User interfaces |
Quick Agent Creation
from hexaeight_mcp_client import quick_autogen_llm, quick_tool_agent, quick_user_agent
# LLM Agent (Intelligence Layer)
llm_agent = await quick_autogen_llm(
config_file="parent_config.json",
agent_type="parentLLM"
)
# Tool Agent (Business Logic Layer)
weather_agent = await quick_tool_agent(
config_file="weather_config.json",
service_formats=["weather_request", "forecast_request"],
agent_type="parentTOOL"
)
# User Agent (Interface Layer)
user_agent = await quick_user_agent(
config_file="user_config.json"
)
๐ง Implementing Business Logic (Tool Agents)
Weather Service Example
class WeatherService:
async def initialize(self):
# Create tool agent
self.agent = await quick_tool_agent(
config_file="weather_config.json",
service_formats=["weather_request", "location_query"],
agent_type="parentTOOL"
)
# Register your business logic
self.agent.register_service_handler("weather_request", self.handle_weather)
async def handle_weather(self, content, event, tracker):
"""YOUR ACTUAL BUSINESS LOGIC GOES HERE"""
# Parse request
request = json.loads(content)
location = request.get("location", "London")
# ๐ CALL YOUR ACTUAL WEATHER API
weather_data = await self.call_openweather_api(location)
# Process and enhance data
enhanced_data = self.process_weather_data(weather_data)
# Send structured response
response = {
"type": "weather_response",
"location": location,
"data": enhanced_data,
"processed_by": self.agent.agent_name
}
await self.agent.hexaeight_agent.publish_to_agent(
self.agent.pubsub_url,
"internal_id",
event.sender_internal_id,
json.dumps(response),
"weather_response"
)
return True
async def call_openweather_api(self, location):
"""Your actual API integration"""
# Real API call to OpenWeatherMap, WeatherAPI, etc.
api_key = "your-weather-api-key"
url = f"http://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key}"
# ... implement actual API call
pass
Database Service Example
class DatabaseService:
async def initialize(self):
self.agent = await quick_tool_agent(
config_file="db_config.json",
service_formats=["database_query", "customer_lookup"],
agent_type="parentTOOL"
)
self.agent.register_service_handler("database_query", self.handle_query)
async def handle_query(self, content, event, tracker):
"""YOUR ACTUAL DATABASE LOGIC"""
# Parse database request
query_data = json.loads(content)
# ๐๏ธ EXECUTE REAL DATABASE OPERATIONS
results = await self.execute_sql_query(query_data)
# Send results back
response = {
"type": "database_response",
"results": results,
"processed_by": self.agent.agent_name
}
await self.send_response(response, event)
return True
async def execute_sql_query(self, query_data):
"""Your actual database operations"""
# Real database connection and queries
# PostgreSQL, MongoDB, MySQL, etc.
pass
๐ Automatic Coordination & Discovery
Capability Discovery
# LLM agents automatically discover available tools
llm_agent = await quick_autogen_llm("parent_config.json")
# Discover what services are available
capabilities = await llm_agent.capability_discovery.discover_ecosystem_capabilities()
print("Available Services:")
for service_id, info in capabilities["tool_capabilities"].items():
service_name = info["capabilities"]["service_name"]
endpoints = info["capabilities"]["endpoints"]
print(f" ๐ง {service_name}: {endpoints}")
User Interaction
# User requests are automatically routed to appropriate agents
user_agent = await quick_user_agent("user_config.json")
# This broadcast only reaches LLM agents
await user_agent.broadcast_to_llms("Get me the weather in Tokyo and customer data for account 1001")
# LLM agents will:
# 1. Understand the request
# 2. Discover available weather and database services
# 3. Coordinate with appropriate tool agents
# 4. Aggregate results and respond to user
๐ก Complete System Example
import asyncio
from hexaeight_mcp_client import *
async def create_intelligent_system():
"""Create a complete multi-agent system"""
# 1. Setup secure LLM configuration
llm_config = {
"provider": "openai",
"api_key": "sk-your-key",
"model": "gpt-4"
}
agent = await quick_autogen_llm('parent_config.json')
protector = HexaEightAutoConfig.create_llm_config_protector(agent.hexaeight_agent)
protector.save_protected_config(llm_config, "secure_llm.enc")
# 2. Create LLM coordinator with encrypted config
coordinator = await HexaEightAutoConfig.create_llm_agent_with_protected_config(
agent_type="parentLLM",
config_file="parent_config.json",
encrypted_llm_config_file="secure_llm.enc",
framework="autogen"
)
# 3. Create specialized tool agents
weather_service = await quick_tool_agent(
"weather_config.json",
["weather_request", "forecast_request"],
"parentTOOL"
)
database_service = await quick_tool_agent(
"db_config.json",
["database_query", "customer_lookup"],
"parentTOOL"
)
# 4. Create user interface
user_interface = await quick_user_agent("user_config.json")
# 5. Register business logic with tool agents
# (Your actual API calls, database operations, etc.)
# 6. System automatically coordinates!
# - User sends requests to LLM agents
# - LLM agents discover available tools
# - Tool agents process specialized requests
# - Results are coordinated and returned
print("๐ Intelligent multi-agent system ready!")
# Example user interaction
await user_interface.broadcast_to_llms(
"What's the weather in London and show me premium customer data?"
)
# Run the system
asyncio.run(create_intelligent_system())
๐ฏ Use Cases
Enterprise AI Assistants
- LLM Agents: Understand user requests, coordinate responses
- Tool Agents: CRM data, financial systems, inventory management
- User Agents: Employee interfaces, customer portals
Data Analysis Platforms
- LLM Agents: Interpret analysis requests, generate insights
- Tool Agents: Database queries, API data feeds, visualization
- User Agents: Analyst interfaces, report generation
Customer Service Automation
- LLM Agents: Natural language understanding, response generation
- Tool Agents: Ticketing systems, knowledge bases, payment processing
- User Agents: Customer chat interfaces, agent dashboards
IoT and Smart Systems
- LLM Agents: Command interpretation, system orchestration
- Tool Agents: Device control, sensor data, automation rules
- User Agents: Mobile apps, voice interfaces, dashboards
๐ Security Features
- ๐ API Key Encryption: Zero plain-text secrets using HexaEight's military-grade encryption
- ๐ก๏ธ Secure Agent Identity: Cryptographic agent authentication and authorization
- ๐ก Encrypted Communication: All agent messages encrypted via HexaEight PubSub
- ๐ฏ Message Filtering: Agents only process relevant messages based on type and format
- ๐ Capability Isolation: Tool agents expose only intended service capabilities
- โก Automatic Locking: Single-attempt message locking prevents processing conflicts
๐ Configuration Examples
Parent Agent Configuration (parent_config.json)
{
"agent_type": "parentLLM",
"client_id": "your-client-id",
"description": "Main LLM coordination agent",
"framework": "autogen"
}
Tool Agent Configuration (weather_config.json)
{
"agent_type": "parentTOOL",
"client_id": "your-client-id",
"service_name": "WeatherAPI",
"description": "Weather data service"
}
Encrypted LLM Configuration (secure_llm.enc)
# This file contains encrypted LLM configuration
# Generated by: protector.save_protected_config(llm_config, "secure_llm.enc")
[Encrypted binary data - your API keys are secure!]
๐ Getting Started Checklist
- Purchase HexaEight License from store.hexaeight.com
- Install license on your development machine
- Create CLIENT Application via HexaEight Agentic IAM Server (when available)
- Install hexaeight-mcp-client:
pip install hexaeight-mcp-client[all] - Create your first LLM configuration and encrypt it
- Build your first tool agent with actual business logic
- Test multi-agent coordination
- Deploy to production with real PubSub server
๐ ๏ธ Development Tools
from hexaeight_mcp_client import *
# Check package info and framework availability
print_package_info()
# Setup development environment with example configs
setup_development_environment()
# Discover available configuration files
config_files = discover_config_files()
print("Available configs:", config_files)
# Validate agent types and configurations
is_valid = validate_agent_type("parentLLM")
agent_info = get_agent_type_info("parentLLM")
๐ API Reference
Core Classes
HexaEightMCPClient- Base MCP client functionalityHexaEightLLMAgent- LLM agents with coordination capabilitiesHexaEightToolAgent- Tool agents for business logicHexaEightUserAgent- User agents for human interactionLLMConfigProtector- Encrypt/decrypt LLM configurations
Framework Adapters
AutogenAdapter- Microsoft AutoGen integrationCrewAIAdapter- CrewAI framework integrationLangChainAdapter- LangChain framework integrationGenericFrameworkAdapter- Custom framework integration
Quick Setup Functions
quick_autogen_llm()- Create AutoGen LLM agentquick_crewai_llm()- Create CrewAI LLM agentquick_tool_agent()- Create tool agentquick_user_agent()- Create user agent
๐ Troubleshooting
Common Issues
Q: "Failed to encrypt LLM configuration"
A: Ensure you have a valid HexaEight agent loaded before creating the config protector.
Q: "Tool agent not receiving messages"
A: Verify your service_formats match the message types being sent by LLM agents.
Q: "LLM verification failed"
A: Make sure your agent_type is "parentLLM" or "childLLM" and provide appropriate verification responses.
Q: "Connection to PubSub failed"
A: Check that your CLIENT Application is properly configured and PubSub server is running.
๐ Links & Resources
- ๐ช HexaEight Store: store.hexaeight.com - Purchase licenses
- ๐ Documentation: GitHub Repository
- ๐ Issues: GitHub Issues
- ๐ฆ HexaEight Agent: hexaeight-agent on PyPI
- ๐ฌ Support: Contact support for licensing and technical issues
๐ License
MIT License - see LICENSE file for details.
๐ Ready to build intelligent multi-agent systems with enterprise-grade security?
Start with pip install hexaeight-mcp-client[all] and create your first encrypted LLM agent today!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hexaeight_mcp_client-1.6.8.tar.gz.
File metadata
- Download URL: hexaeight_mcp_client-1.6.8.tar.gz
- Upload date:
- Size: 34.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11e6f6a16973de6f07f03b2d6959338413e32d679a330cce0843e40557a74df3
|
|
| MD5 |
9790200c9c5ecf7f3847e9cee621f602
|
|
| BLAKE2b-256 |
99cf57f38044df783b1afa1cf895f25b83f5380a164b5811c81ff82c04c505b5
|
File details
Details for the file hexaeight_mcp_client-1.6.8-py3-none-any.whl.
File metadata
- Download URL: hexaeight_mcp_client-1.6.8-py3-none-any.whl
- Upload date:
- Size: 30.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c920015ede83e0c53d51e0fc2b67997ec518e93901ed0aa1bb5aafe8d309ef78
|
|
| MD5 |
1e04ee9860975ca868fb471ac6862603
|
|
| BLAKE2b-256 |
46b45a2a4837009effee21a7f3456eb9e5b6566fb082e8ce5731dcd70a841e94
|