dry-run command connects to all configured upstream MCP servers, discovers their tools, and displays the final namespaced tool list without actually starting the UMCP server.
Usage
Flags
Path to the UMCP configuration file.Examples:
Examples
Basic Dry Run
~/.config/umcp/umcp.jsonc and displays discovered tools.
Example output:
Dry Run with Custom Config
Using Compatibility Flag
umcp dry-run --config /etc/umcp/production.jsonc.
What Happens During Dry Run
The dry-run command:-
Loads configuration from the specified config file
-
Connects to each provider defined in your config
-
Discovers tools from all upstream servers
- Applies tool aliases if configured
- Displays the final tool list to stdout
-
Disconnects from all providers
-
Logs completion
Output Format
The tool list is printed to stdout, one tool per line:- Category: From your config (e.g.,
web_search,project_mgmt) - Provider: From your config (e.g.,
brave,tavily,linear) - Tool: Either the upstream tool name or your configured alias
Tool Aliasing Example
Given this config:search(upstream) →web_search.brave.search(canonical with alias)local_search(upstream) →web_search.brave.local(canonical with alias)
Use Cases
Verify Tool Discovery
Check that all expected tools are discovered:Count Total Tools
Debug Tool Naming
Verify that tool aliases are applied correctly:Pre-deployment Check
Ensure all providers are reachable before deploying:Compare Configurations
Compare tool discovery between different configs:Error Handling
Provider Connection Failure
If a provider fails to connect:- Log the error to stderr
- Continue with other providers
- Exit with a non-zero code
Invalid Config
If the config file has errors, dry-run will fail validation:Missing Upstream Tools
If you configure a tool alias for a non-existent upstream tool:Exit Codes
- 0: Dry-run completed successfully, all tools discovered
- Non-zero: Error occurred (config invalid, provider failed, etc.)
Structured Logs
All logs are emitted to stderr as JSON:Dry Run vs. Validate
When to use dry-run
When to use dry-run
Use
dry-run to:- Preview actual tool discovery from upstream servers
- Test provider connections and reachability
- Verify tool aliasing works correctly
- Debug tool naming issues
- Check that all expected tools are available
- Connects to upstream servers (takes longer)
When to use validate
When to use validate
Use
validate to:- Quick syntax and schema validation
- CI/CD config checks
- Pre-commit hooks
- Does not connect to upstream servers (faster)
Performance
Dry-run performance depends on:- Number of configured providers
- Provider connection speed (stdio vs. HTTP)
- Network latency (for remote HTTP providers)
- Number of tools each provider exposes
- 1-3 local stdio providers: 1-5 seconds
- Multiple remote HTTP providers: 5-15 seconds
Next Steps
Serve
Start the UMCP server
Validate
Validate your config
Configuration
Learn about config schema