
Hatago Mcp Hub
io.github.himorishigePublished by GitHub account himorishigev0.0.16Updated Oct 24, 2026
Unified MCP Hub for managing multiple Model Context Protocol servers
Overview
A local hub that aggregates multiple MCP servers behind one endpoint, so an assistant can reach all their tools through a single connection.
- What you can do
- Hatago MCP Hub runs as a local process that connects to several MCP servers at once and exposes them through one interface. It supports STDIO, HTTP and SSE transports, can launch npm-published servers via npx, and can proxy remote HTTP-based MCP servers. It offers tag-based filtering, configuration inheritance, environment variable expansion, and a built-in resource listing connected servers with their status and tools.
- When to use it
- Useful when you already rely on several MCP servers and want to manage them from one configuration file instead of registering each one separately in Claude Code, Codex CLI, Cursor, Windsurf or VS Code. Also helpful for grouping servers by environment or team with tags and shared base configs.
- Requirements
- Node.js and npm to run the package via npx or a global install. A configuration file is required for STDIO mode; HTTP mode can start without one. Credentials for downstream servers are supplied through environment variables or headers in the config, and remote servers need network access.
Installation
In SourceWeft
- Open Hatago Mcp Hub in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
English | 日本語
🏮 Hatago MCP Hub
[npm] [GitHub Release] [Ask DeepWiki]
Hatago (旅籠) — A relay point connecting modern AI tools with MCP servers.
Overview
Hatago MCP Hub is a lightweight hub that unifies access to multiple MCP (Model Context Protocol) servers from tools like Claude Code, Codex CLI, Cursor, Windsurf, and VS Code.
Documentation
- Docs index:
docs/README.md - Canonical CLI & Hub guide:
packages/mcp-hub/README.md - Public docs site (JA default): https://hatago.dev/ja/ — English: https://hatago.dev/en/
Dev.to: Getting Started with Multi-MCP Using Hatago MCP Hub — One Config to Connect Them All
✨ Features
🚀 Performance (v0.0.14)
- 8.44x Faster Startup - 85.66ms → 10.14ms
- 17% Smaller Package - 1.04MB → 854KB
- Simplified Architecture - Direct server management without abstraction layers
🎯 Simple & Lightweight
- Zero Configuration Start (HTTP mode) -
npx @himorishige/hatago-mcp-hub serve --http - Non-invasive to Existing Projects - Doesn't pollute your project directory
🔌 Rich Connectivity
- Multi-Transport Support - STDIO / HTTP / SSE
- Remote MCP Proxy - Transparent connection to HTTP-based MCP servers
- NPX Server Integration - Dynamic management of npm package MCP servers
🏮 Additional Features
Configuration Updates
- Manual Restart Required - Configuration changes require server restart
- Alternative Solutions:
- Use process managers (PM2, nodemon) for auto-restart
- Example:
nodemon --exec "hatago serve --http" --watch hatago.config.json - Or with PM2:
pm2 start "hatago serve" --watch hatago.config.json
- Dynamic Tool List Updates - Supports
notifications/tools/list_changednotification
Progress Notification Forwarding
- Child Server Notification Forwarding - Transparent forwarding of
notifications/progress - Long-running Operation Support - Real-time progress updates
- Local/Remote Support - Works with many MCP server types
Built-in Internal Resource
hatago://servers- JSON snapshot of currently connected servers (id, status, type, tools, resources, prompts)
Enhanced Features
- Environment Variable Expansion - Claude Code compatible
${VAR}and${VAR:-default}syntax - Configuration Validation - Type-safe configuration with Zod schemas
- Tag-based Server Filtering - Group and filter servers using tags
- Configuration Inheritance - Extend base configurations with
extendsfield for DRY principle
Minimal Hub Interface (IHub)
External packages (server/test-utils) use a thin IHub interface to avoid tight coupling with the concrete class.
Extracted modules for thin hub:
- RPC handlers:
packages/hub/src/rpc/handlers.ts - HTTP handler:
packages/hub/src/http/handler.ts
📁 Project Structure
📦 Installation
Quick Start (No Installation)
Global Installation
As Project Dependency
🚀 Usage
Claude Code, Codex CLI, Gemini CLI
STDIO Mode (Recommended)
Claude Code / Gemini CLI
Add to .mcp.json:
Codex CLI
Add to ~/.codex/config.toml:
HTTP Mode
Claude Code / Gemini CLI
Add to .mcp.json:
Codex CLI
Add to ~/.codex/config.toml:
MCP Inspector
For testing and debugging:
Visit MCP Inspector
Metrics (opt-in)
Enable lightweight in-memory metrics and expose an HTTP endpoint:
Notes:
- Metrics are disabled by default and add near-zero overhead when off.
- JSON logs are available when
HATAGO_LOG=json(respectingHATAGO_LOG_LEVEL).
⚙️ Configuration
Basic Configuration
Create hatago.config.json:
Remote Server Configuration
Configuration Strategies
Strategy 1: Tag-based Filtering
Group servers with tags in a single configuration file:
Start with specific tags:
Strategy 2: Configuration Inheritance
Split configurations by environment using the extends field:
Base configuration (~/.hatago/base.config.json):
Work configuration (./work.config.json):
Features:
- Inheritance: Child configs override parent values
- Multiple parents:
"extends": ["./base1.json", "./base2.json"] - Path resolution: Supports
~, relative, and absolute paths - Environment deletion: Use
nullto remove inherited env vars
Choosing a Strategy
Environment Variable Expansion
Supports Claude Code compatible syntax:
${VAR}- Expands to the value of VAR (error if undefined)${VAR:-default}- Uses default value if VAR is undefined
📋 Commands
hatago init
Create configuration file with interactive setup:
hatago serve
Start MCP Hub server:
Loading Environment Variables from Files
Use --env-file <path...> to load variables before config parsing. This helps resolve ${VAR} and ${VAR:-default} placeholders without exporting variables globally.
- Format:
KEY=VALUE,export KEY=VALUE,#comments, blank lines. - Quotes are stripped; supports escaped
\n,\r,\t. - Paths: relative to CWD,
~/expanded to home. - Precedence: files are applied in the given order; existing
process.envkeys are preserved unless--env-overrideis provided.
✨ Performance Improvements (v0.0.14)
- 8.44x faster startup: 85.66ms → 10.14ms
- 17% smaller package: 1.04MB → 854KB (181KB reduction)
- Simplified architecture: Removed EnhancedHub and management layers
- Trade-off: Built-in config watching removed (use nodemon/PM2 instead)
🔧 Advanced Usage
Programmatic API
Creating Custom Hub
🏗️ Architecture
Supported MCP Servers
Local Servers
- Any executable MCP server
- Python, Node.js, or binary servers
- Custom scripts with MCP protocol
NPX Servers
@modelcontextprotocol/server-filesystem@modelcontextprotocol/server-github@modelcontextprotocol/server-memory- Any npm-published MCP server
Remote Servers
- DeepWiki MCP (
https://mcp.deepwiki.com/sse) - Any HTTP-based MCP endpoint
- Custom API servers with MCP protocol
🐛 Troubleshooting
Common Issues
-
"No onNotification handler set" warning
- Normal in HTTP mode with StreamableHTTP transport
- Hub handles notifications appropriately
-
Server connection failures
- Verify environment variables are set
- Check remote server URLs are accessible
- Use
--verboseflag for detailed logs
-
Tool name collisions
- Hatago automatically prefixes with server ID
- Original names preserved in hub
Debug Mode
📚 Documentation
🤝 Contributing
Contributions are welcome! Please see our GitHub repository for more information.
📄 License
MIT License
🔗 Links
🙏 Credits
Built with the Hono and the Model Context Protocol SDK by Anthropic.
Source: README.md at commit fcb2bef
Tools
0Version history
1- v0.0.16LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts