Complete toolkit for managing MCP (Model Context Protocol) server configurations
Build template-based configs, manage servers interactively, and automate deployments - all from one unified toolset.
# Install from PyPI
uv pip install buildmcp
# Choose your tool:
buildmcp --dry-run # Template builder
metamcp # Interactive TUI
metamcp-cli server:list # Command-line interfaceTemplate-based MCP server configuration builder with environment variable substitution and checksums.
Best for: Building configs from templates, deploying to multiple targets, managing environment-specific configs
# Preview build
uv run buildmcp --dry-run
# Deploy to targets
uv run buildmcp
# Print specific profile config (no write)
uv run buildmcp --profile default
# Force write (skip checksums)
uv run buildmcp --forceFeatures:
- β Template composition system
- β
Environment variable substitution (
${VAR_NAME}) - β SHA-256 checksum change detection
- β Lock file tracking
- β Multiple deployment targets
- β Profile-based configurations
π Full buildmcp Documentation
Full-featured terminal UI for browsing and managing MCP servers and namespaces.
Best for: Visual exploration, interactive management, namespace organization, tool status management
# Launch TUI
export METAMCP_SESSION_TOKEN="your-token"
uv run metamcpFeatures:
- β Server browsing and management
- β Namespace exploration with tools view
- β Interactive status toggling
- β Bulk import interface
- β Real-time updates
- β Keyboard-driven navigation
Keyboard Shortcuts:
q- Quitr- Refreshc- Created- Deletei- Imports- Toggle server statust- Toggle tool status
Scriptable CLI for all MetaMCP operations with full JSON input support.
Best for: Automation, CI/CD pipelines, shell scripts, batch operations
# List servers
metamcp-cli server:list
# Create from JSON (stdin)
echo '{"name": "test", "type": "STDIO", "command": "npx"}' | \
metamcp-cli server:create --stdin
# Bulk import
cat servers.json | metamcp-cli server:bulk-import --stdin
# Update namespace tools
metamcp-cli namespace:update-tool-status \
--namespace-uuid "..." \
--tool-uuid "..." \
--server-uuid "..." \
--status "ACTIVE"Features:
- β All server operations (list, create, delete, import)
- β Namespace management (list, get, tools, status)
- β JSON input (file, stdin, pipe)
- β Rich table output
- β Scriptable and pipeable
- β Error handling with exit codes
| Feature | buildmcp | TUI | CLI |
|---|---|---|---|
| Template system | β | β | β |
| Environment substitution | β | β | β |
| Server management | β | β | β |
| Namespace management | β | β | β |
| Tool status control | β | β | β |
| Visual interface | β | β | β |
| JSON input/output | β | β | β |
| Automation friendly | β | β | β |
| Real-time updates | β | β | β |
| Bulk operations | β | β | β |
- QUICKSTART.md - Get started in 5 minutes
- USAGE.md - Complete usage guide with workflows
- docs/metamcp.md - MetaβMCP TUI guide
- docs/metamcp-cli.md - CLI reference
- CLAUDE.md - Project context for Claude
- MCP_FORMAT_SPECIFICATION.md - MCP format details
- Python 3.12+
- uv package manager
# Install with pip
pip install buildmcp
# Or with uv (recommended)
uv pip install buildmcp
# Verify installation
buildmcp --help
metamcp --help
metamcp-cli --help# Clone repository
git clone https://github.com/starbased-co/buildmcp.git
cd buildmcp
# Install dependencies
uv sync
# Verify installation
uv run buildmcp --help
uv run metamcp --help
uv run metamcp-cli --help# Install in editable mode
uv pip install -e .
# Run tests
uv run pytest
# Run with verbose
uv run buildmcp --verbose --dry-run# 1. Edit templates
vim ~/.config/nix/config/claude/mcp.json
# 2. Preview specific profile
uv run buildmcp --profile default
# 3. Preview all (dry-run)
uv run buildmcp --dry-run
# 4. Deploy
uv run buildmcp
# 5. Verify
cat ~/.claude/mcp.json# Import existing Claude config
cat ~/.claude/mcp.json | \
jq '.mcpServers' | \
metamcp-cli server:bulk-import --stdin
# Browse in TUI
uv run metamcp# List namespaces
metamcp-cli namespace:list
# Get tools
metamcp-cli namespace:tools --uuid "ns-abc123..."
# Toggle tool status in TUI
uv run metamcp
# β Navigate to namespace β Tools β Press 't'#!/bin/bash
# Create servers from list
for name in $(cat servers.txt); do
echo "{\"name\": \"$name\", \"type\": \"STDIO\"}" | \
metamcp-cli server:create --stdin
doneLocation: ~/.config/nix/config/claude/mcp.json (or custom with --mcp-json)
{
"mcpServers": {
"base-server": {
"command": "npx",
"args": ["-y", "@scope/package"]
}
},
"templates": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
},
"profiles": {
"default": ["github"],
"minimal": []
},
"targets": {
"default": "~/.claude/mcp.json",
"custom": {
"read": "cat ~/custom-mcp.json",
"write": "cat > ~/custom-mcp.json"
}
}
}# Set session token (from browser DevTools)
export METAMCP_SESSION_TOKEN="your-session-token"
# Or use cookie file
echo "your-token" > ~/.metamcp
chmod 600 ~/.metamcp
uv run metamcp --cookie-file ~/.metamcp
metamcp-cli --cookie-file ~/.metamcp server:listbuildmcp [OPTIONS]
Options:
--mcp-json PATH Config file (default: ~/.claude/mcp.json)
--verbose Show detailed output
--dry-run Preview without writing
--profile NAME Print built config for profile to stdout
--force Ignore checksums, redeploy all
--no-check-env Skip env var validationmetamcp [OPTIONS]
Options:
--base-url URL MetaMCP server URL (default: http://localhost:12008)
--cookie-file PATH Session token file
Keyboard:
q Quit
r Refresh
c Create
d Delete
i Import
s Toggle server status (in namespace view)
t Toggle tool status (in namespace view)metamcp-cli <command-group>:<action> [OPTIONS]
Server Commands:
server:list List all servers
server:create [--name N --type T] Create server
server:delete --uuid UUID Delete server
server:bulk-import [-f FILE] Bulk import
Namespace Commands:
namespace:list List namespaces
namespace:get --uuid UUID Get details
namespace:tools --uuid UUID List tools
namespace:update-tool-status Update tool
namespace:update-server-status Update server
Options:
-f, --file PATH JSON file input
--stdin Read from stdin# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=src/buildmcp
# Run specific test
uv run pytest tests/test_builder.py# Deploy to Claude Code
uv run buildmcp
# Restart Claude Code to load configDeploy to mcpnest.dev using mcpnest-cli:
# Add mcpnest target
{
"targets": {
"mcpnest": {
"read": "mcpnest config read",
"write": "mcpnest config write"
}
},
"profiles": {
"mcpnest": ["linkup", "sequential-thinking"]
}
}
# Deploy
uv run buildmcp# Use in scripts
SERVERS=$(metamcp-cli server:list --format json)
echo "$SERVERS" | jq '.[] | select(.type == "STDIO")'# Error: HTTP 401 Unauthorized
# β Get fresh token from browser DevTools
export METAMCP_SESSION_TOKEN="new-token"# Cannot connect to server
# β Check server is running
curl http://localhost:12008/api/health
# β Use correct URL
uv run metamcp --base-url http://your-server:12008# Missing environment variables
# β Set the variable
export GITHUB_TOKEN="your-token"
# β Or skip validation
uv run buildmcp --no-check-envπ Full Troubleshooting Guide
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new features
- Ensure tests pass:
uv run pytest - Submit a pull request
MIT License - see LICENSE file
- Repository: github.com/starbased-co/buildmcp
- Issues: github.com/starbased-co/buildmcp/issues
- MCPNest: mcpnest.dev
- MCP Protocol: modelcontextprotocol.io
Made with β€οΈ by starbased