<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Takashi Fujita</title>
    <description>The latest articles on Forem by Takashi Fujita (@tgfjt).</description>
    <link>https://forem.com/tgfjt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F43527%2Fb679883a-2ed0-499f-8cf3-6b3e96df4164.jpeg</url>
      <title>Forem: Takashi Fujita</title>
      <link>https://forem.com/tgfjt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tgfjt"/>
    <language>en</language>
    <item>
      <title>🛠️ A Practical Meta-MCP Architecture for Claude Code: Compressing 60+ Tools into Just Two</title>
      <dc:creator>Takashi Fujita</dc:creator>
      <pubDate>Thu, 04 Dec 2025 05:20:21 +0000</pubDate>
      <link>https://forem.com/tgfjt/a-practical-meta-mcp-architecture-for-claude-code-compressing-60-tools-into-just-two-oje</link>
      <guid>https://forem.com/tgfjt/a-practical-meta-mcp-architecture-for-claude-code-compressing-60-tools-into-just-two-oje</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When using multiple MCP servers in Claude Code (e.g., Notion, Playwright, Chrome DevTools),&lt;br&gt;
the tool definitions alone can consume &lt;strong&gt;36.6k tokens&lt;/strong&gt; of context.&lt;/p&gt;

&lt;p&gt;To reduce this overhead, I built a meta MCP server called &lt;strong&gt;Code Mode&lt;/strong&gt;, which exposes only &lt;strong&gt;two tools&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;search_docs&lt;/code&gt; — search API definitions of child MCP servers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;execute_code&lt;/code&gt; — run TypeScript that calls MCP bindings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This reduced the token usage from &lt;strong&gt;36.6k → 4.4k tokens (−88%)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post explains the approach, the architecture, and the practical pitfalls I encountered when implementing it.&lt;/p&gt;


&lt;h2&gt;
  
  
  Background: Why a Meta-MCP?
&lt;/h2&gt;

&lt;p&gt;The design is inspired by Anthropic's engineering post:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Code execution with MCP&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.anthropic.com/engineering/code-execution-with-mcp" rel="noopener noreferrer"&gt;https://www.anthropic.com/engineering/code-execution-with-mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of giving the LLM a long list of explicit tool definitions,&lt;br&gt;
you give it &lt;em&gt;just enough machinery&lt;/em&gt; to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;look up available API bindings&lt;/strong&gt;, and&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;execute code that uses them&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For this experiment, I connected three child MCP servers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Notion MCP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Playwright MCP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chrome DevTools MCP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Playwright and Chrome DevTools overlap, but I wanted to compare their behavior.&lt;br&gt;
(Yes, this inflates the original token count — but the reduction effect remains the same.)&lt;/p&gt;


&lt;h2&gt;
  
  
  The MCP Context Problem
&lt;/h2&gt;

&lt;p&gt;Here’s what Claude Code loads when these MCP servers are enabled:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MCP tools: 36.6k tokens (18.3%)
└ chrome-devtools (26 tools)
└ playwright (22 tools)
└ notion (15 tools)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More than &lt;strong&gt;60 tools&lt;/strong&gt; are injected into the conversation context every time.&lt;/p&gt;

&lt;p&gt;On a 200k context window, &lt;strong&gt;18% was being consumed by tool definitions alone&lt;/strong&gt;,&lt;br&gt;
leaving less room for code, logs, or iterative reasoning.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Code Mode Approach
&lt;/h2&gt;

&lt;p&gt;Code Mode exposes only &lt;strong&gt;two&lt;/strong&gt; tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Code Mode MCP
├─ search_docs: query API schemas of child MCP servers
└─ execute_code: run TypeScript that calls MCP bindings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM workflow becomes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;search_docs&lt;/code&gt; → find the API&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;execute_code&lt;/code&gt; → perform the operation&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  search_docs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// List all bindings&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;search_docs&lt;/span&gt;&lt;span class="p"&gt;({})&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; notion, playwright, chrome, ...&lt;/span&gt;

&lt;span class="c1"&gt;// Search by keyword&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;search_docs&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;navigate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;// =&amp;gt; returns schema for playwright.browser_navigate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  execute_code
&lt;/h3&gt;

&lt;p&gt;The core of Code Mode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;execute_code&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
    await playwright.browser_navigate({ url: "https://example.com" });
    const snapshot = await playwright.browser_snapshot({});
    console.log(snapshot);
  `&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All available bindings (&lt;code&gt;playwright&lt;/code&gt;, &lt;code&gt;notion&lt;/code&gt;, &lt;code&gt;chrome&lt;/code&gt;, etc.)&lt;br&gt;
are injected into the execution environment automatically.&lt;/p&gt;


&lt;h2&gt;
  
  
  Implementation Notes
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Choosing Deno for the Execution Environment
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;execute_code&lt;/code&gt; needs to run &lt;strong&gt;arbitrary TypeScript generated by the LLM&lt;/strong&gt;,&lt;br&gt;
but inside a &lt;strong&gt;sandbox&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Deno was the best fit because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;TypeScript runs without transpilation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worker API is built-in and behaves like browser Web Workers&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permission model is strong and easy to restrict&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The MCP TypeScript SDK works in Deno&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here’s how the sandbox worker is created:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;worker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Worker&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;workerUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;module&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;deno&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;net&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;ffi&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Execution Constraints
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Constraint&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Timeout&lt;/td&gt;
&lt;td&gt;30 seconds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Allowed&lt;/td&gt;
&lt;td&gt;console.log, basic JS/TS, MCP bindings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forbidden&lt;/td&gt;
&lt;td&gt;fetch, file access, external network&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Everything must go through MCP tool calls, which are relayed to the parent process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Connecting Child MCP Servers
&lt;/h2&gt;

&lt;p&gt;Architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code
↓ stdio
Code Mode (search_docs / execute_code)
├─ Notion MCP (SSE via mcp-remote)
├─ Chrome DevTools MCP (stdio)
└─ Playwright MCP (stdio)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a child server fails to connect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is omitted from &lt;code&gt;search_docs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Any attempt to call its bindings results in &lt;code&gt;Unknown tool&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, reconnection is manual (&lt;code&gt;/mcp restart&lt;/code&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  Pitfall: “os error 35” When Nesting MCP Servers
&lt;/h2&gt;

&lt;p&gt;When Code Mode launched another MCP server via &lt;code&gt;StdioClientTransport&lt;/code&gt;,&lt;br&gt;
I repeatedly hit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resource temporarily unavailable (os error 35)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Root Cause
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;StdioClientTransport&lt;/code&gt; defaults to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stderr: "inherit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the meta server itself communicates with Claude Code via stdio,&lt;br&gt;
stderr inheritance causes I/O interference.&lt;/p&gt;
&lt;h3&gt;
  
  
  Fix
&lt;/h3&gt;

&lt;p&gt;Always use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StdioClientTransport&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;npx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-y&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@playwright/mcp@latest&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pipe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// REQUIRED for nested MCP&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do this for &lt;em&gt;all&lt;/em&gt; child MCP servers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reducing the Tool Definition Size
&lt;/h2&gt;

&lt;p&gt;Originally, the &lt;code&gt;execute_code&lt;/code&gt; tool description included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;all available bindings&lt;/li&gt;
&lt;li&gt;code examples&lt;/li&gt;
&lt;li&gt;server lists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It reached &lt;strong&gt;1.3k tokens&lt;/strong&gt; by itself.&lt;/p&gt;

&lt;p&gt;After simplification:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Execute TypeScript code that uses child MCP servers. Use search_docs to inspect available bindings.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;strong&gt;687 tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tool definitions now scale linearly regardless of how many child MCP servers exist.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MCP tool tokens&lt;/td&gt;
&lt;td&gt;36.6k&lt;/td&gt;
&lt;td&gt;4.4k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Number of tools&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context usage&lt;/td&gt;
&lt;td&gt;18.3%&lt;/td&gt;
&lt;td&gt;2.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The difference in conversational “breathing room” is substantial.&lt;/p&gt;




&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Less intuitive for an LLM
&lt;/h3&gt;

&lt;p&gt;Normal MCP tools are self-descriptive.&lt;br&gt;
Code Mode requires:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;searching docs&lt;/li&gt;
&lt;li&gt;writing code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LLMs need a short introduction before they can use it effectively.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Hardcoded configuration
&lt;/h3&gt;

&lt;p&gt;Code Mode is not a plug-and-play npm package.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Child server paths are hardcoded&lt;/li&gt;
&lt;li&gt;Users must adjust the code to their environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is an &lt;strong&gt;approach&lt;/strong&gt;, not a product.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Weak reconnection handling
&lt;/h3&gt;

&lt;p&gt;Once a child MCP disconnects (OAuth expiry, browser closure, etc.):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There is no auto-retry&lt;/li&gt;
&lt;li&gt;Manual &lt;code&gt;/mcp restart&lt;/code&gt; is required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This can be improved.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MCP tool definitions consume significant context&lt;/li&gt;
&lt;li&gt;A meta MCP server can compress dozens of tools into &lt;strong&gt;two&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deno provides a robust sandbox for executing TypeScript safely&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;stderr: "pipe"&lt;/code&gt; is essential to avoid I/O conflicts in nested MCP setups&lt;/li&gt;
&lt;li&gt;The approach works well but isn’t universal or beginner-friendly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full implementation (Deno + MCP SDK) is available here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://gist.github.com/tgfjt/a3716f7b1651d7fd7df2d769efdf644e" rel="noopener noreferrer"&gt;https://gist.github.com/tgfjt/a3716f7b1651d7fd7df2d769efdf644e&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this helps anyone experimenting with multi-MCP setups or context-efficient tooling!&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code Execution with MCP — Anthropic&lt;/strong&gt;
&lt;a href="https://www.anthropic.com/engineering/code-execution-with-mcp" rel="noopener noreferrer"&gt;https://www.anthropic.com/engineering/code-execution-with-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;modelcontextprotocol/typescript-sdk&lt;/strong&gt;
&lt;a href="https://github.com/modelcontextprotocol/typescript-sdk" rel="noopener noreferrer"&gt;https://github.com/modelcontextprotocol/typescript-sdk&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>typescript</category>
      <category>deno</category>
    </item>
  </channel>
</rss>
