gtwmcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gtwmcpsearch for open issues about MCP on GitHub"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gtwmcp — MCP Gateway
A zero-dependency MCP gateway. Connect multiple AI harnesses to multiple MCP servers through a single, centrally-managed stdio interface. No overhead, no bloat — just the Node.js stdlib. Secrets stay in the OS keychain, never in config files.

Install
npm install -g gtwmcpRequires Node.js >= 22.
Related MCP server: mcp-client-credentials-auth
Quick Start
Add a stdio MCP server:
$ gtwmcp add github --type stdio --command npx --args "-y,@modelcontextprotocol/server-github" --description "GitHub MCP"
Server "github" added.Add an SSE MCP server with OAuth:
$ gtwmcp add jira --type sse --url https://mcp.jira.example.com/sse --oauth --description "Jira MCP"
Server "jira" added.List servers:
$ gtwmcp list
NAME TYPE STATUS DESCRIPTION
------ ----- ----------- -----------
github stdio ✅ enabled GitHub MCP
jira sse ✅ enabled Jira MCPAuthenticate an OAuth server:
$ gtwmcp auth jira
[jira] https://mcp.jira.example.com/sse
✅ Token valid (expires in 45m)
$ gtwmcp auth --force # re-authenticate all OAuth serversList tools from a server:
$ gtwmcp get jira
jira (sse) — https://mcp.jira.example.com/sse
Listing tools...
1. search_jira_issues: Search Jira issues using JQL
2. get_jira_issue: Get a specific Jira issue
2 tools available.CLI Reference
gtwmcp add <name> Add or update an MCP server
gtwmcp remove <name> Remove an MCP server
gtwmcp get <name> List tools and descriptions from a server
gtwmcp list List all servers with status
gtwmcp auth [name] Authenticate OAuth servers (--force to re-auth)
gtwmcp enable <name> Enable a server
gtwmcp disable <name> Disable a server
gtwmcp serve Start the MCP gateway in stdio modeGateway
The gateway (gtwmcp serve) speaks MCP over stdio to the client. On startup it:
Reads
~/.gtwmcp.jsonConnects to all enabled upstream servers in parallel
Calls
initializeandtools/liston eachPrefixes every tool with the server name:
<server>__<tool>Applies allow/block list filters
Presents a single consolidated tool list

Tool Filtering
Control which tools are exposed via environment variables:
Variable | Behavior |
| Only matching tools pass |
| All tools except matching pass |
Both set | Allow first, then block removes from that subset |
Neither set | All tools pass |
Patterns support trailing * wildcard:
# Expose only read tools
GTWMCP_ALLOW_LIST="github__read_*,github__search_*,github__list_*"
# Expose everything except destructive tools
GTWMCP_BLOCK_LIST="github__delete_*,github__admin_*"Configuration
~/.gtwmcp.json:
{
"version": 1,
"servers": {
"github": {
"type": "stdio",
"enabled": true,
"description": "GitHub MCP server",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"
}
},
"jira": {
"type": "sse",
"enabled": true,
"description": "Jira MCP",
"url": "https://mcp.jira.example.com/sse",
"headers": {
"X-Custom-Header": "value"
},
"oauth": true
}
}
}stdio:
command,args, optionalenvanddescriptionsse:
url, optionalheaders,oauth, anddescription"oauth": truemeans all OAuth data lives in the OS keychain (never in this file)
OAuth
The gateway supports Authorization Code Flow with PKCE for SSE servers.

At runtime, gtwmcp serve auto-refreshes expired tokens before each call.
Keychain
Platform | Backend |
macOS |
|
Linux |
|
Use with Claude Code
Point Claude Code's MCP config at the gateway:
{
"mcpServers": {
"gtwmcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "gtwmcp", "serve"]
}
}
}All your upstream MCP tools appear prefixed and unified in Claude Code.
Development
npm install
npm run check # syntax validation
npm test # 57 testsZero external dependencies. Node.js 22+ stdlib only.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
MCP server for Riveter's enrichment, scraping, and monitoring API
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Related MCP Servers
- AlicenseAqualityCmaintenanceAggregates multiple upstream MCP servers into a single stdio-only runtime with a compact surface exposing only invoke and read.22MIT
- AlicenseNot gradedqualityAmaintenanceA local stdio MCP server that authenticates to remote OAuth-protected MCP servers using the client_credentials grant, handling token acquisition and request forwarding.25 npm2Apache 2.0
- AlicenseNot gradedqualityCmaintenanceAggregates multiple upstream MCP servers (stdio, streamable-http, sse, websocket) behind a single streamable-HTTP endpoint with declarative configuration, namespacing, filtering, and auto-reload.MIT
- AlicenseNot gradedqualityAmaintenanceEnables aggregating multiple MCP servers behind a single HTTP/SSE endpoint, with Code Mode to reduce token usage and support for OAuth and sandboxed execution.MIT