Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Toolgate

License: MIT

Connect multiple MCP servers in one place. Instead of adding each server separately to every AI tool you use, add them once to Toolgate — then connect your AI tools to the hub.

What you get:

  • Semantic search — AI can find the right tool across all your servers using natural language, no exact name needed
  • Single endpoint — one URL to register in VS Code, Claude Code, or any MCP client
  • Web dashboard — add/remove servers, browse tools, and test them in the browser
  • All transports — supports stdio (local processes), SSE, and Streamable HTTP

Screenshots

Add MCP Server

Tools Browser — semantic search across all servers

Integrations — one-click config for VS Code & Claude Code

Token efficiency

When an AI assistant connects directly to multiple MCP servers, it receives the full tool list from every server at the start of each session. With many servers, this can consume a significant portion of the context window before any real work begins.

Toolgate exposes only 3 tools to the AI (search_tools, execute_tool, list_tools). The AI searches for what it needs on demand rather than receiving everything upfront — potentially reducing token usage from tool definitions substantially.

Note: This token-saving effect is the primary motivation for the hub design, but it is currently experimental. No formal benchmarks or measurements have been published. Actual savings depend on the number of servers, model, and client behavior.

Install

Requires Node.js 18+.

npm run setup
npm run dev

Open http://localhost:3000 — the dashboard lets you add your MCP servers and register Toolgate into VS Code / Claude Code with one click.

First run downloads a local embedding model (~25 MB, cached to ./data/models/).

Connect to your AI tool

After starting Toolgate, go to the Integrations page in the dashboard and click Add to config. Or add manually:

VS Code / Claude Code

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Claude Desktop (claude_desktop_config.json)

{
"mcpServers": {
"toolgate": { "type": "http", "url": "http://localhost:3000/mcp" }
}
}

Environment

VariableDefaultDescription
PORT3000Port for dashboard and MCP endpoint

About

Toolgate — MCP aggregator that connects multiple MCP servers behind a single endpoint with semantic tool search, reducing AI context token usage from tool definitions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages