{"id":71623,"date":"2026-08-17T14:44:25","date_gmt":"2026-08-17T12:44:25","guid":{"rendered":"https:\/\/www.inovex.de\/?p=71623"},"modified":"2026-11-12T14:49:03","modified_gmt":"2026-11-12T13:49:03","slug":"bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/","title":{"rendered":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &#038; Gemini CLI)"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Integrating Model Context Protocol (MCP) servers with developer tooling provides language models with direct, structured context from local environments. When paired with tools like Microsoft&#8217;s Power BI Modeling MCP, CLI agents such as <\/span><b>Claude Code (claude)<\/b><span style=\"font-weight: 400;\"> and <\/span><b>Gemini CLI (gemini)<\/b><span style=\"font-weight: 400;\"> can inspect tabular models, execute DAX queries, and modify TMDL definitions in real time against local Power BI Desktop instances.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, security best practices dictate that AI CLI agents run inside sandboxed environments (such as Podman or Docker Linux containers). This creates a sharp conflict when trying to execute Windows-native binaries from within an isolated Linux runtime.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This article details the architectural barriers involved\u2014including Windows 11 Hyper-V Firewall restrictions\u2014and provides a lightweight Node.js proxy script that bridges communication between sandboxed CLI agents and native Win<\/span><span style=\"font-weight: 400;\">dows executables.<\/span><!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Technical-Challenges-on-Windows-Host-Systems\" >Technical Challenges on Windows Host Systems<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Implementation-Guide\" >Implementation Guide<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Step-1-Configure-Windows-Hyper-V-Firewall-Rules\" >Step 1: Configure Windows Hyper-V Firewall Rules<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Step-2-Deploy-the-Nodejs-Bridge-Script-bridgejs\" >Step 2: Deploy the Node.js Bridge Script (bridge.js)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Step-3-Configure-Your-CLI-Clients\" >Step 3: Configure Your CLI Clients<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Option-A-Gemini-CLI-gemini-Configuration\" >Option A: Gemini CLI (gemini) Configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Option-B-Claude-CLI-claude-Claude-Code-Configuration\" >Option B: Claude CLI (claude \/ Claude Code) Configuration<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Step-4-Verification-and-Workflow\" >Step 4: Verification and Workflow<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Technical-Challenges-on-Windows-Host-Systems\"><\/span><b>Technical Challenges on Windows Host Systems<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">When running agent CLIs with container sandboxing enabled, four key friction points emerge:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><b>Operating System and DLL Incompatibilities<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">The Power BI Modeling MCP server binary (.exe) relies on Windows system libraries like iphlpapi.dll (IP Helper API) to discover running Power BI Desktop instances. Inside a Linux container sandbox, these Windows libraries do not exist, causing standard Linux execution attempts to fail immediately.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Transport Layer Disconnect (stdio vs. HTTP\/SSE)<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">MCP servers typically communicate via Standard Input\/Output (stdio). A containerized sandbox cannot attach native stdio streams directly to an executable running on the host OS. Communication must be converted to network protocols like HTTP or SSE.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Hyper-V Firewall Restrictions (Windows 11 22H2+)<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">The Hyper-V Firewall filters traffic flowing through virtual network adapters created for container runtimes and WSL. Even if standard Windows Defender Firewall ports are open, inbound traffic from the container virtual switch to the host will be dropped by default unless explicitly allowed.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Stream Framing and JSON-RPC Protocol Differences<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">MCP implementations on Windows frequently frame JSON payloads across fragmented data chunks or attach length headers. Raw TCP forwarding leads to parsing failures such as Unexpected end of JSON input. Additionally, standard JSON-RPC notification methods (such as notifications\/initialized) do not expect responses, causing synchronous listeners to time out.<\/span><\/li>\n<\/ol>\n<p>The rough outline for Claude and for gemini are shown below:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-68855\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi.png\" alt=\"\" width=\"1636\" height=\"491\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi.png 1636w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-300x90.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-1024x307.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-768x230.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-1536x461.png 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-400x120.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/claude-mcp-powerbi-360x108.png 360w\" sizes=\"auto, (max-width: 1636px) 100vw, 1636px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-68857\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi.png\" alt=\"\" width=\"1636\" height=\"491\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi.png 1636w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-300x90.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-1024x307.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-768x230.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-1536x461.png 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-400x120.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/gemini-mcp-powerbi-360x108.png 360w\" sizes=\"auto, (max-width: 1636px) 100vw, 1636px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Implementation-Guide\"><\/span><b>Implementation Guide<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Step-1-Configure-Windows-Hyper-V-Firewall-Rules\"><\/span><b>Step 1: Configure Windows Hyper-V Firewall Rules<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Because container traffic is routed through a Hyper-V Virtual Switch, execute the following command in PowerShell as <\/span><b>Administrator<\/b><span style=\"font-weight: 400;\"> to permit inbound traffic on port 3000 from the container switch:<\/span><\/p>\n<pre class=\"\">New-NetFirewallHyperVRule -Name \"AllowMCPBridgeInbound\" `\r\n    -DisplayName \"Allow Inbound MCP Proxy Bridge from Sandbox\" `\r\n    -Direction Inbound `\r\n    -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' `\r\n    -Protocol TCP `\r\n    -LocalPorts 3000 `\r\n    -Action Allow\r\n\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Step-2-Deploy-the-Nodejs-Bridge-Script-bridgejs\"><\/span><b>Step 2: Deploy the Node.js Bridge Script (bridge.js)<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Save this proxy script on your Windows host. It handles non-blocking notifications, aggregates fragmented stdout buffers, and exposes the executable over HTTP.<\/span><\/p>\n<pre>const { spawn } = require('child_process');\r\nconst http = require('http');\r\n\r\nconst args = process.argv.slice(2);\r\nconst help = args.includes('--help') || args.includes('-h');\r\nconst verbose = args.includes('--verbose') || args.includes('-v');\r\nconst exePath = args.find(arg =&gt; !arg.startsWith('-'));\r\n\r\nif (help || !exePath) {\r\n    console.log(`\r\nPower BI MCP Bridge\r\nUsage: node bridge.js [path-to-exe] [options]\r\n\r\nArguments:\r\n  path-to-exe      Full path to the native Windows MCP executable.\r\n\r\nOptions:\r\n  -v, --verbose    Log raw JSON-RPC payloads and chunk buffering status.\r\n  -h, --help       Display this help message.\r\n    `);\r\n    process.exit(0);\r\n}\r\n\r\nconst getTimestamp = () =&gt; `[${new Date().toLocaleTimeString()}]`;\r\nconst mcpProcess = spawn(exePath, ['--start']);\r\n\r\nlet currentResponse = null;\r\nlet responseBuffer = \"\";\r\n\r\nmcpProcess.stderr.on('data', (data) =&gt; {\r\n    console.error(`${getTimestamp()} [EXE LOG\/ERROR]: ${data.toString().trim()}`);\r\n});\r\n\r\nmcpProcess.stdout.on('data', (data) =&gt; {\r\n    if (!currentResponse) return;\r\n\r\n    responseBuffer += data.toString();\r\n    const jsonStartIndex = responseBuffer.indexOf('{');\r\n\r\n    if (jsonStartIndex !== -1) {\r\n        const payloadCandidate = responseBuffer.substring(jsonStartIndex);\r\n        try {\r\n            JSON.parse(payloadCandidate);\r\n\r\n            if (verbose) console.log(`${getTimestamp()} [RESPONSE] Valid JSON assembled. Returning to agent.`);\r\n            currentResponse.writeHead(200, { 'Content-Type': 'application\/json' });\r\n            currentResponse.end(payloadCandidate.trim());\r\n\r\n            currentResponse = null;\r\n            responseBuffer = \"\";\r\n        } catch (e) {\r\n            if (verbose) console.log(`${getTimestamp()} [BUFFER] Partial JSON received. Awaiting chunks...`);\r\n        }\r\n    }\r\n});\r\n\r\nconst server = http.createServer((req, res) =&gt; {\r\n    if (req.method === 'POST') {\r\n        let requestBody = '';\r\n        req.on('data', chunk =&gt; { requestBody += chunk; });\r\n        req.on('end', () =&gt; {\r\n            try {\r\n                const parsedPayload = JSON.parse(requestBody);\r\n                if (verbose) console.log(`${getTimestamp()} [REQUEST] Method: ${parsedPayload.method}`);\r\n\r\n                if (parsedPayload.method &amp;&amp; parsedPayload.method.startsWith('notifications\/')) {\r\n                    mcpProcess.stdin.write(requestBody + '\\n');\r\n                    res.writeHead(202);\r\n                    res.end();\r\n                    return;\r\n                }\r\n\r\n                currentResponse = res;\r\n                responseBuffer = \"\";\r\n                mcpProcess.stdin.write(requestBody + '\\n');\r\n\r\n                setTimeout(() =&gt; {\r\n                    if (currentResponse === res) {\r\n                        console.log(`${getTimestamp()} [TIMEOUT] Method timed out: ${parsedPayload.method}`);\r\n                        res.writeHead(504);\r\n                        res.end(JSON.stringify({ error: \"Execution timeout\" }));\r\n                        currentResponse = null;\r\n                    }\r\n                }, 15000);\r\n\r\n            } catch (err) {\r\n                res.writeHead(400);\r\n                res.end(JSON.stringify({ error: \"Malformed JSON payload\" }));\r\n            }\r\n        });\r\n    }\r\n});\r\n\r\nserver.listen(3000, '0.0.0.0', () =&gt; {\r\n    console.log(`${getTimestamp()} Bridge listening on http:\/\/0.0.0.0:3000\/mcp`);\r\n    console.log(`${getTimestamp()} Target executable: ${exePath}`);\r\n});\r\n\r\nprocess.on('SIGINT', () =&gt; {\r\n    mcpProcess.kill();\r\n    process.exit();\r\n});<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Step-3-Configure-Your-CLI-Clients\"><\/span><b>Step 3: Configure Your CLI Clients<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"Option-A-Gemini-CLI-gemini-Configuration\"><\/span><b>Option A: Gemini CLI (gemini) Configuration<\/b><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Add the bridge entry to your settings.json file:<\/span><\/p>\n<pre>{\r\n  \"mcpServers\": {\r\n    \"powerbi-modeling-mcp\": {\r\n      \"httpUrl\": \"http:\/\/host.containers.internal:3000\/mcp\",\r\n      \"timeout\": 30000\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<h4><span class=\"ez-toc-section\" id=\"Option-B-Claude-CLI-claude-Claude-Code-Configuration\"><\/span><b>Option B: Claude CLI (claude \/ Claude Code) Configuration<\/b><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Add the bridge entry to your .mcp.json or ~\/.claude.json file:<\/span><\/p>\n<pre>{\r\n  \"mcpServers\": {\r\n    \"powerbi-modeling-mcp\": {\r\n      \"type\": \"http\",\r\n      \"url\": \"http:\/\/host.containers.internal:3000\/mcp\"\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Step-4-Verification-and-Workflow\"><\/span><b>Step 4: Verification and Workflow<\/b><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Start the bridge on the Windows host:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<pre>node bridge.js \"C:\\Path\\To\\powerbi-modeling-mcp.exe\" --verbose<\/pre>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Trigger tool discovery in your CLI client of choice:<\/span><\/li>\n<\/ol>\n<ul>\n<li style=\"font-weight: 400;\"><b>For Gemini CLI:<\/b><span style=\"font-weight: 400;\"> \/mcp refresh<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>For Claude CLI:<\/b><span style=\"font-weight: 400;\"> claude mcp list or \/mcp<\/span><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span><b>Conclusion<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">By combining targeted Hyper-V Firewall rules with a Node.js proxy bridge, sandboxed CLI agents like <\/span><b>Claude CLI<\/b><span style=\"font-weight: 400;\"> and <\/span><b>Gemini CLI<\/b><span style=\"font-weight: 400;\"> can interact seamlessly with Windows-native MCP servers. This setup preserves full container isolation while granting your AI agents full access to local Power BI models.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integrating Model Context Protocol (MCP) servers with developer tooling provides language models with direct, structured context from local environments. When paired with tools like Microsoft&#8217;s Power BI Modeling MCP, CLI agents such as Claude Code (claude) and Gemini CLI (gemini) can inspect tabular models, execute DAX queries, and modify TMDL definitions in real time against [&hellip;]<\/p>\n","protected":false},"author":145,"featured_media":69037,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[],"service":[473,464,455],"level":[1280],"coauthors":[{"id":145,"display_name":"Tobias Maasland","user_nicename":"tmaasland"}],"class_list":["post-71623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","service-artificial-intelligence-en","service-business-intelligence-en","service-data-engineering-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &amp; Gemini CLI) - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Connect sandboxed CLI agents like Claude Code &amp; Gemini to Windows MCP servers. Solve Hyper-V &amp; stdio issues with a lightweight Node.js proxy bridge.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &amp; Gemini CLI) - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Connect sandboxed CLI agents like Claude Code &amp; Gemini to Windows MCP servers. Solve Hyper-V &amp; stdio issues with a lightweight Node.js proxy bridge.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-17T12:44:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-12T13:49:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1550\" \/>\n\t<meta property=\"og:image:height\" content=\"880\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tobias Maasland\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents-1024x581.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tobias Maasland\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/\"},\"author\":{\"name\":\"Tobias Maasland\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#\\\/schema\\\/person\\\/a60cf1a6042c68e799e29db3b09696d4\"},\"headline\":\"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &#038; Gemini CLI)\",\"datePublished\":\"2026-08-17T12:44:25+00:00\",\"dateModified\":\"2026-11-12T13:49:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/\"},\"wordCount\":559,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/\",\"name\":\"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude & Gemini CLI) - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png\",\"datePublished\":\"2026-08-17T12:44:25+00:00\",\"dateModified\":\"2026-11-12T13:49:03+00:00\",\"description\":\"Connect sandboxed CLI agents like Claude Code & Gemini to Windows MCP servers. Solve Hyper-V & stdio issues with a lightweight Node.js proxy bridge.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png\",\"width\":1550,\"height\":880},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &#038; Gemini CLI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/#\\\/schema\\\/person\\\/a60cf1a6042c68e799e29db3b09696d4\",\"name\":\"Tobias Maasland\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Tobias-Maasland-w-96x96.png5cf27c5fdf87e7976084716312e39783\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Tobias-Maasland-w-96x96.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Tobias-Maasland-w-96x96.png\",\"caption\":\"Tobias Maasland\"},\"description\":\"Data Product Owner.\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/en\\\/blog\\\/author\\\/tmaasland\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude & Gemini CLI) - inovex GmbH","description":"Connect sandboxed CLI agents like Claude Code & Gemini to Windows MCP servers. Solve Hyper-V & stdio issues with a lightweight Node.js proxy bridge.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/","og_locale":"en_US","og_type":"article","og_title":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude & Gemini CLI) - inovex GmbH","og_description":"Connect sandboxed CLI agents like Claude Code & Gemini to Windows MCP servers. Solve Hyper-V & stdio issues with a lightweight Node.js proxy bridge.","og_url":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2026-08-17T12:44:25+00:00","article_modified_time":"2026-11-12T13:49:03+00:00","og_image":[{"width":1550,"height":880,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png","type":"image\/png"}],"author":"Tobias Maasland","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents-1024x581.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Written by":"Tobias Maasland","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/"},"author":{"name":"Tobias Maasland","@id":"https:\/\/www.inovex.de\/en\/#\/schema\/person\/a60cf1a6042c68e799e29db3b09696d4"},"headline":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &#038; Gemini CLI)","datePublished":"2026-08-17T12:44:25+00:00","dateModified":"2026-11-12T13:49:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/"},"wordCount":559,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/en\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/","url":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/","name":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude & Gemini CLI) - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png","datePublished":"2026-08-17T12:44:25+00:00","dateModified":"2026-11-12T13:49:03+00:00","description":"Connect sandboxed CLI agents like Claude Code & Gemini to Windows MCP servers. Solve Hyper-V & stdio issues with a lightweight Node.js proxy bridge.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Bridge-the-Gap-Running-Native-Windows-MCP-Servers-Inside-Sandboxed-AI-Agents.png","width":1550,"height":880},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/en\/blog\/bridge-the-gap-running-native-windows-mcp-servers-inside-sandboxed-ai-agents-claude-gemini-cli\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/en\/"},{"@type":"ListItem","position":2,"name":"Bridge the Gap: Running Native Windows MCP Servers Inside Sandboxed AI Agents (Claude &#038; Gemini CLI)"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/en\/#website","url":"https:\/\/www.inovex.de\/en\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/en\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inovex.de\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/en\/#\/schema\/person\/a60cf1a6042c68e799e29db3b09696d4","name":"Tobias Maasland","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inovex.de\/wp-content\/uploads\/Tobias-Maasland-w-96x96.png5cf27c5fdf87e7976084716312e39783","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Tobias-Maasland-w-96x96.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Tobias-Maasland-w-96x96.png","caption":"Tobias Maasland"},"description":"Data Product Owner.","url":"https:\/\/www.inovex.de\/en\/blog\/author\/tmaasland\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/posts\/71623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/users\/145"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/comments?post=71623"}],"version-history":[{"count":2,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/posts\/71623\/revisions"}],"predecessor-version":[{"id":71625,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/posts\/71623\/revisions\/71625"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/media\/69037"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/media?parent=71623"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/tags?post=71623"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/service?post=71623"},{"taxonomy":"level","embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/level?post=71623"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/en\/wp-json\/wp\/v2\/coauthors?post=71623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}