Dive MCP Host is a language model host service based on the Model Context Protocol (MCP), providing a unified interface to manage and interact with various language models.
Dive MCP Host offers the following features:
- A unified language model interaction interface, supporting multiple models (such as OpenAI, Anthropic, Google, etc.)
- Conversation management and persistent storage
- HTTP API and WebSocket support
- Command-line tools for quick testing and interaction
- Support for multi-threaded conversations and user management
This project uses LangChain and LangGraph to build and manage language model workflows, providing a standardized way to interact with different language models.
- Ensure you have Python 3.12 or higher installed
- Clone this repository
- Install dependencies:
# Using pip
pip install -e .
# Or using uv pip
uv pip install -e .
# Or using uv sync (recommended, will respect uv.lock file)
uv sync --frozen
- Activate the virtual environment
source .venv/bin/activate
Use the following command to start the HTTP service:
dive_httpd
The server will start on:
- Host: 0.0.0.0
- Port: 61990
- Log Level: INFO (configurable in the service config)
You can use the command line tool for quick testing:
# General chat
dive_cli "Hello"
# Resume a chat with a specific thread
dive_cli -c CHATID "How are you?"
from dive_mcp_host.host.conf import HostConfig
from dive_mcp_host.host import DiveMcpHost
# Initialize configuration
config = HostConfig(...)
# Use async context manager
async with DiveMcpHost(config) as host:
# Start or resume a conversation
async with host.chat(thread_id="123") as chat:
# Send a query and get a response
async for response in chat.query("Hello, how can you help me today?"):
print(response)
Install development dependencies:
pip install -e ".[dev]"
or
uv sync --extra dev --frozen
(Optional) Start local PostgreSQL
./scripts/run_pg.sh
Run tests:
pytest
or with uv, (no need to activate enviroment)
uv run --extra dev --frozen pytest
This project is licensed under the MIT License. See the LICENSE file for details.