Dynamic MCP integration for AI agents - search 1,960+ servers, install with HITL approval, connect via LangChain or Docker
Project description
haive-mcp
Dynamic MCP integration for AI agents — search 1,960+ servers, install with HITL approval, connect via LangChain or Docker.
haive-mcp enables runtime discovery and integration of tools from the Model Context Protocol (MCP) ecosystem. Instead of hard-coding tool integrations, your agents can search the MCP registry, install relevant servers (with human approval), and use them as standard LangChain tools.
What is MCP?
Model Context Protocol is Anthropic's open standard for connecting LLM applications to external tools and data sources. There are 1,960+ MCP servers covering everything from databases to file systems to GitHub APIs to browser automation.
haive-mcp is the bridge between MCP and the Haive agent framework. It provides:
- Server discovery — search across the entire MCP registry by capability
- Multiple transports — STDIO (npx/uvx), SSE, Streamable HTTP, Docker
- HITL approval — Human-in-the-loop gating for server installation
- LangChain bridge — MCP tools work as standard LangChain tools
- Docker isolation — run servers in containers for security
- Intelligent agent —
IntelligentMCPAgentauto-discovers tools for tasks
Why dynamic MCP?
Static tool libraries are limiting. You either:
- Pre-install tools you might never need (bloat)
- Don't have a tool when you need it (hard-coded constraint)
Dynamic MCP integration: Your agent has access to 1,960+ servers on demand. Need to query a database? It finds and installs mcp/postgres. Need to scrape a website? It pulls playwright-mcp. Need GitHub access? github-mcp-server. With HITL approval gates so the user controls what gets installed.
Installation
pip install haive-mcp
Transport Types
MCP servers communicate over different transports. haive-mcp supports all four:
| Transport | Value | Use Case | Example |
|---|---|---|---|
| STDIO | stdio |
CLI servers via npx/uvx (most common) | npx @modelcontextprotocol/server-filesystem |
| SSE | sse |
HTTP streaming servers | Long-running services |
| Streamable HTTP | streamable_http |
Continuous data | Real-time feeds |
| Docker | docker |
Isolated containers | Untrusted servers, complex deps |
Usage Patterns
1. Static Configuration
Hand-pick servers and configure them upfront:
from haive.mcp.config import MCPConfig, MCPServerConfig, MCPTransport
from haive.mcp.manager import MCPManager
config = MCPConfig(
enabled=True,
servers={
"filesystem": MCPServerConfig(
name="filesystem",
transport=MCPTransport.STDIO,
command="npx",
args=["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
),
"github": MCPServerConfig(
name="github",
transport=MCPTransport.STDIO,
command="npx",
args=["-y", "@modelcontextprotocol/server-github"],
env={"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."},
),
"postgres": MCPServerConfig(
name="postgres",
transport=MCPTransport.DOCKER,
command="mcp/postgres",
env={"POSTGRES_HOST": "host.docker.internal"},
docker_volumes=["/data:/data:ro"],
docker_network="host",
),
}
)
# Connect and get tools
manager = MCPManager(config)
await manager.connect_all()
tools = await manager.get_all_tools()
# Use with any Haive agent
from haive.agents.react.agent import ReactAgent
from haive.core.engine.aug_llm import AugLLMConfig
agent = ReactAgent(
engine=AugLLMConfig(tools=tools),
max_iterations=5,
)
result = await agent.arun("List files in /workspace and create a summary issue on GitHub")
2. Dynamic Discovery (IntelligentMCPAgent)
Let the agent discover and install tools as needed:
from haive.mcp.agents import IntelligentMCPAgent
from haive.core.engine.aug_llm import AugLLMConfig
agent = IntelligentMCPAgent(
engine=AugLLMConfig(),
auto_discover=True, # Search registry for relevant servers
require_approval=True, # HITL approval before installing
)
result = await agent.arun(
"Find Python repositories on GitHub about quantum computing"
)
# Agent flow:
# 1. Searches MCP registry for "github"
# 2. Finds github-mcp-server
# 3. Asks for approval to install
# 4. Installs via npx
# 5. Connects to server
# 6. Calls github_search_repositories tool
# 7. Returns results
3. CLI
Manage MCP servers from the command line:
# Install the CLI (comes with haive-mcp)
pip install haive-mcp
# Discover servers
haive-mcp discover "database"
haive-mcp discover "web scraping"
haive-mcp discover "github"
# List available transports
haive-mcp transports
# Install a specific server
haive-mcp install postgres
# Test a server
haive-mcp test filesystem
# Show server tools
haive-mcp tools filesystem
HITL Approval Flow
When require_approval=True, the agent pauses and asks before installing any new server:
🔍 Searching MCP registry for 'database'...
✅ Found: postgres-mcp (mcp/postgres)
Description: PostgreSQL database access via MCP
Tools: query, schema, list_tables, describe_table
Transport: stdio
Trust: ⭐⭐⭐⭐⭐ (1.2k installs)
❓ Install postgres-mcp? [y/N]: y
📦 Installing via npx...
✅ Installed and connected
🔧 Available tools: query, schema, list_tables, describe_table
Architecture
┌─────────────────────────────────────────────────┐
│ IntelligentMCPAgent │
│ (auto_discover + HITL approval) │
└────────────────────┬────────────────────────────┘
│
┌────────────┴────────────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Discovery │ │ MCPMgr │
│ │ │ │
│ • Search │ │ • Lifecycle │
│ • Documentation│ │ • Connection │
│ • 1960+ servers│ │ • Tools │
└──────────────┘ └──────┬───────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ STDIO │ │ SSE │ │ Docker │
│ npx/uvx │ │ HTTP │ │ Container │
└─────────────┘ └─────────────┘ └─────────────┘
Documentation
📖 Full documentation: https://pr1m8.github.io/haive-mcp/
Related Packages
| Package | Description |
|---|---|
| haive-core | Foundation: engines, graphs |
| haive-agents | Production agents (use MCP tools) |
| haive-tools | Static tool implementations |
License
MIT © pr1m8
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 haive_mcp-1.0.1.tar.gz.
File metadata
- Download URL: haive_mcp-1.0.1.tar.gz
- Upload date:
- Size: 176.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
287dcb035c503e1ce1af6e3894a3f821354b20ebea115aa07fe47b397f428712
|
|
| MD5 |
20279a18d641e6142e52559ad6032044
|
|
| BLAKE2b-256 |
c8cdebb3f17055ae25ae1f88a5ca1e47525b1c434cc2f9d2ec3636b85d8b3dc2
|
File details
Details for the file haive_mcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: haive_mcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 211.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41096f98324a8bfa5cfb238950a17f6a1c4c1690c1f3033d8c43409476ed29f3
|
|
| MD5 |
7e7652817c38baf6c71072c22cc688fa
|
|
| BLAKE2b-256 |
864a1deaa211bf22dfd836fc881d813ca93de38bf7617e39785c5159d2183de0
|