Overview
This guide will have you running UMCP with multiple MCP providers in under 5 minutes.Install UMCP
Install via npx (no installation needed) or npm:
Verify the installation by running
npx github:grittyninja/umcp --helpCreate Configuration File
Run UMCP once to auto-generate the configuration file:This creates
~/.config/umcp/umcp.jsonc with detailed placeholder examples.The config file is created automatically with example providers and comprehensive inline documentation.
Configure Your Providers
Edit
~/.config/umcp/umcp.jsonc to add your MCP providers:~/.config/umcp/umcp.jsonc
Preview Tools (Dry Run)
See what tools UMCP will expose without actually connecting to providers:Example output:
Dry run discovers tools from all providers and shows how they’ll be namespaced, but doesn’t actually start the server.
Start UMCP Server
Launch UMCP with your preferred transport:This starts UMCP in stdio mode, perfect for connecting from MCP hosts like Claude Desktop or other MCP clients.You’ll see structured log output:
- stdio (Recommended)
- HTTP
Understanding Tool Namespacing
UMCP exposes all tools with a predictable three-segment namespace:Category
The top-level grouping defined in your config (e.g.,
web_search, project_mgmt)Provider
The specific MCP server within the category (e.g.,
brave, tavily, linear)Tool
The actual tool name or alias (e.g.,
search, add_task)Example Tool Names
Based on the configuration above:This namespacing eliminates conflicts when multiple providers offer tools with similar names.
Configuration Deep Dive
Let’s break down the key configuration concepts:Categories
Categories
Categories are top-level groupings for related providers:Rules:
- Must match
[a-zA-Z0-9_-]+(alphanumeric, underscores, hyphens) - At least one category required
- Used as first segment in tool namespace
Providers
Providers
Providers are individual MCP servers within a category:Required fields:
name: Provider identifier (must match[a-zA-Z0-9_-]+)transport:"stdio","sse", or"streamable-http"command+args(for stdio)url(for sse/streamable-http)
Environment Variables
Environment Variables
Environment variables can be single values or arrays for round-robin rotation:
Arrays rotate on each invocation. State is in-memory and resets on process restart.
Tool Mappings
Tool Mappings
Control which tools are exposed and create aliases:If
tools is omitted, UMCP auto-discovers and exposes all upstream tools.Transport Types
Transport Types
UMCP supports three upstream transport types:stdio (default):sse (Server-Sent Events):streamable-http:
Common Patterns
Multiple Search Providers with Load Balancing
web_search.brave.search(rotates through 4 keys)web_search.tavily.search(rotates through 2 keys)
Mixed Transport Providers
Tool Aliasing for Clean Names
database.postgres.querydatabase.postgres.insertdatabase.postgres.update
CLI Commands Reference
Default Values
Path to UMCP configuration file
Transport type:
stdio or httpHTTP server host (only for
--transport http)HTTP server port (only for
--transport http)HTTP endpoint path (only for
--transport http)Troubleshooting
Config validation errors
Config validation errors
Run validation to see detailed error messages:Common issues:
- Invalid characters in category/provider names (must be
[a-zA-Z0-9_-]+) - Missing required fields (
name,transport,command/url) - Duplicate provider names within a category
- Empty arrays or objects
Provider connection failures
Provider connection failures
Check the structured logs for connection errors:Common causes:
- Invalid API keys in
env - Incorrect command or args for stdio providers
- Unreachable URL for HTTP/SSE providers
- Missing npm packages (try
npx -yto auto-install)
npm cache permission errors
npm cache permission errors
UMCP automatically handles npm cache issues by using a fallback cache at
~/.cache/umcp/npm.To force the fallback cache for a specific provider:Tools not appearing
Tools not appearing
Use dry-run to see what tools would be discovered:If tools are missing:
- Check that the provider is connecting successfully
- Verify
toolsmapping if you’re using explicit tool lists - Ensure
enabled: truefor tool mappings (or omit the field)
Next Steps
Configuration Guide
Deep dive into all configuration options
CLI Reference
Complete command-line interface documentation
Examples
Real-world configuration examples
Troubleshooting
Common issues and solutions