A model context protocol server for interacting with Unblu deployments.
Project description
unblu-mcp
A Model Context Protocol (MCP) server for debugging and operating Unblu deployments. Optimised for debugging workflows — curated typed tools for common operations, plus an escape hatch for the full 300+ endpoint API.
Design
The server exposes three layers, each progressively more powerful:
| Layer | What it is | When to use |
|---|---|---|
| Curated tools | Typed, token-efficient tools for common debugging tasks | 90% of debugging sessions |
execute_operation |
Generic escape hatch for any of 331 Unblu API operations | When a curated tool doesn't exist |
| Resources | Read-only api:// URIs for browsing the API surface |
Discovery and schema inspection |
Quick Start
Installation
uv tool install unblu-mcp
MCP Client Configuration
Direct API access with an API key:
{
"mcpServers": {
"unblu": {
"command": "unblu-mcp",
"env": {
"UNBLU_BASE_URL": "https://your-instance.unblu.cloud/app/rest/v4",
"UNBLU_API_KEY": "your-api-key"
}
}
}
}
Kubernetes port-forward (auto-managed):
{
"mcpServers": {
"unblu": {
"command": "unblu-mcp",
"args": ["--provider", "k8s", "--environment", "dev"],
"env": {
"PATH": "/Users/YOUR_USERNAME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
Tools
Curated tools (read-only)
| Tool | Description |
|---|---|
get_current_account |
Current account info — good first call to verify connectivity |
search_conversations(status?, topic?, assignee_id?, limit?, fields?) |
Search conversations with filters |
get_conversation(conversation_id) |
Full conversation detail with participants |
search_persons(query?, email?, limit?, fields?) |
Find persons (visitors, agents) |
get_person(person_id) |
Full person detail |
get_persons(identifiers, fields?) |
Batch-resolve up to 20 persons in parallel |
search_users(query?, email?, limit?, fields?) |
Find registered users |
get_user(user_id) |
Full user detail |
check_agent_availability(named_area_id?) |
Check agent availability per named area |
search_named_areas(query?, limit?) |
List named areas (routing targets) |
find_operation(query, service?, include_schema?, limit?) |
Discover API operations by keyword |
Mutation tools
| Tool | Description |
|---|---|
assign_conversation(conversation_id, agent_id) |
Assign a conversation to an agent |
end_conversation(conversation_id) |
End an active conversation |
Escape hatch
| Tool | Description |
|---|---|
execute_operation(operation_id, path_params?, query_params?, body?, fields?, confirm_destructive?) |
Execute any of the 331 Unblu API operations |
Resources
| URI | Description |
|---|---|
api://services |
JSON list of all API service groups |
api://operations/{operation_id} |
Full resolved schema for a specific operation |
Prompts
| Prompt | Description |
|---|---|
debug_conversation(conversation_id) |
Step-by-step debugging workflow for a conversation |
find_agent(criteria) |
Locate an agent and check their availability |
account_health_check |
Validate account configuration and connectivity |
Safety
By default, execute_operation blocks DELETE operations unless confirm_destructive=True is passed. For stricter control, install the optional Eunomia policy engine:
uv tool install "unblu-mcp[safety]"
Then point to a policy file:
{
"mcpServers": {
"unblu": {
"command": "unblu-mcp",
"args": ["--policy", "config/mcp_policies.json"],
"env": { "UNBLU_BASE_URL": "...", "UNBLU_API_KEY": "..." }
}
}
}
The bundled config/mcp_policies.json allows all read-only and curated tools while blocking destructive execute_operation calls by operation ID pattern.
Development
git clone https://github.com/detailobsessed/unblu-mcp.git
cd unblu-mcp
uv sync --all-extras --dev
uv run poe test
License
ISC License
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 unblu_mcp-0.7.1.tar.gz.
File metadata
- Download URL: unblu_mcp-0.7.1.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a990d74502a23376f2fd2880a1c32432529fcf304a1935d52bddf885d2f834b3
|
|
| MD5 |
5a7509b1d6ded4f09a7c9f65eb25d5de
|
|
| BLAKE2b-256 |
0d9ee5fff4560244d3d4d3ba8d77bd144a5b2874677cc3f8e6030571a25215da
|
File details
Details for the file unblu_mcp-0.7.1-py3-none-any.whl.
File metadata
- Download URL: unblu_mcp-0.7.1-py3-none-any.whl
- Upload date:
- Size: 34.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e145276e3e26c7050592c334d705d7d9d49949ab27d3da19fe72dae6571b23f5
|
|
| MD5 |
b1d0768ba4390b628321591549afc033
|
|
| BLAKE2b-256 |
f994aeff98566514b7834e5b362e62c928911c64a27e78e94911ba231adfaea9
|