<?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>DEV Community: MCP Token Saver</title>
    <description>The latest articles on DEV Community by MCP Token Saver (@mcptokensaver).</description>
    <link>https://dev.to/mcptokensaver</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4056301%2F58a8edd8-17f4-4bac-96e1-ed602a81e7a7.png</url>
      <title>DEV Community: MCP Token Saver</title>
      <link>https://dev.to/mcptokensaver</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mcptokensaver"/>
    <language>en</language>
    <item>
      <title>Claude Code / Codex / Cursor / Hermes Agent: zero config, one shared MCP config and skill set</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Tue, 06 Oct 2026 18:23:52 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/claude-code-codex-cursor-hermes-agent-zero-config-one-shared-mcp-config-and-skill-set-21cl</link>
      <guid>https://dev.to/mcptokensaver/claude-code-codex-cursor-hermes-agent-zero-config-one-shared-mcp-config-and-skill-set-21cl</guid>
      <description>&lt;h2&gt;
  
  
  One environment variable, four clients, one silent miss
&lt;/h2&gt;

&lt;p&gt;Last week I added an environment variable to one of my MCP servers — &lt;code&gt;API_BASE&lt;/code&gt;, pointed at an internal host.&lt;/p&gt;

&lt;p&gt;Added it in Claude Code. Worked. Added it in Cursor. Worked. The Codex copy I meant to come back to, then forgot.&lt;/p&gt;

&lt;p&gt;Three days later I was calling that same server from Codex and it wouldn't connect. I spent a while on the network before I found it: not the network. That config file simply didn't have the line.&lt;/p&gt;

&lt;p&gt;Three configs, two correct, one stale. You never catch this at the moment it happens. You catch it weeks later, from a different client, at the worst time.&lt;/p&gt;

&lt;h2&gt;
  
  
  A copied config is a config that will drift
&lt;/h2&gt;

&lt;p&gt;The annoying part isn't typing the same thing three times. Typing is cheap.&lt;/p&gt;

&lt;p&gt;The annoying part is that &lt;strong&gt;once the same config is copied into three places, it stops being the same config.&lt;/strong&gt; You change something in A. B and C don't move. Six months on, "the same server" has three different sets of parameters across your clients, and nothing tells you which one is right.&lt;/p&gt;

&lt;p&gt;This has nothing to do with token savings. It's the oldest rule in configuration management: &lt;strong&gt;one thing, one source.&lt;/strong&gt; Three copies means three truths, each rotting on its own schedule.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;~/.claude.json&lt;/code&gt; has 12 servers I wrote by hand: 1,388 characters of JSON. And that's one client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Collapse it to one, then fan it out
&lt;/h2&gt;

&lt;p&gt;I looked around for something that would keep my server list in a single place, and the one I kept is mcptoon — a 342KB command-line program that runs on the Python standard library alone, no third-party packages.&lt;/p&gt;

&lt;p&gt;It does one core thing: &lt;strong&gt;holds the server list itself, as the only copy&lt;/strong&gt; (imported once from Claude's file). After that, whatever needs it, mcptoon pushes it out.&lt;/p&gt;

&lt;p&gt;One sync command later it reported &lt;strong&gt;6 hosts updated, 42 server entries written, 0 errors.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The six: Claude Desktop, Cursor, Cline, Windsurf, VS Code Copilot, Claude Code, all at once. Cursor and Windsurf had no config file at all — it created them. It took 7 of the 12 servers from my claude.json, which was enough to fill all six; the other 5 were experiments I'd left disabled.&lt;/p&gt;

&lt;p&gt;Here's the part that matters: those six clients now hold &lt;strong&gt;six projections of one thing&lt;/strong&gt;, not six copies that can drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills work the same way
&lt;/h2&gt;

&lt;p&gt;Tools are half of it. Skills are the other half.&lt;/p&gt;

&lt;p&gt;My machine has &lt;strong&gt;427 SKILL.md files&lt;/strong&gt;, and they add up to &lt;strong&gt;1,193,709 tokens&lt;/strong&gt; of text. That's bigger than most context windows. (I counted that with tiktoken's cl100k_base — tiktoken is my measuring tool, not part of mcptoon.)&lt;/p&gt;

&lt;p&gt;mcptoon indexes the catalog and writes a &lt;strong&gt;one-line pointer&lt;/strong&gt; into each client's instruction file. That pointer sits in your context at &lt;strong&gt;39 tokens&lt;/strong&gt;. When the agent needs a skill, it looks the skill up instead of carrying all 427.&lt;/p&gt;

&lt;p&gt;Skills are the same shape of problem: one source, many readers. One &lt;code&gt;mcptoon sync&lt;/code&gt; handles tools and skills together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Off-list agents are easier, not harder
&lt;/h2&gt;

&lt;p&gt;Here's where I got it wrong at first.&lt;/p&gt;

&lt;p&gt;mcptoon auto-handles a fixed list of 12 known clients, in two groups. One group is the MCP-mounting GUI clients — the six above. The other group is Codex, Gemini CLI, opencode and the like: it doesn't touch their MCP config, it only writes a one-line skill pointer into the instruction file they read every session.&lt;/p&gt;

&lt;p&gt;So what about Hermes Agent or OpenClaw, which fall into neither group?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's no config file to hand-edit.&lt;/strong&gt; mcptoon is a plain CLI, and any agent that can run a shell can be pointed at it — one line, and it sees every tool and skill.&lt;/p&gt;

&lt;p&gt;I tested that on Hermes: one &lt;code&gt;hermes mcp add&lt;/code&gt; call pointing mcptoon at it, and the connection came back green. The agent gains 9 gateway tools, and the dozens of upstream tools are all reached through those 9, with no per-tool setup.&lt;/p&gt;

&lt;p&gt;So "not on the list" doesn't mean "unsupported." The list is about &lt;strong&gt;who gets the config written for them&lt;/strong&gt;. The CLI path is open to &lt;strong&gt;any agent that can run a shell.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;All numbers are measured on my Windows machine (mcptoon 0.8.14). Your machine and your version will differ.&lt;/li&gt;
&lt;li&gt;mcptoon &lt;strong&gt;only auto-handles 12 known clients.&lt;/strong&gt; If yours isn't on the list, use the CLI path. Don't expect the file to be written for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I did not test OpenClaw on this machine&lt;/strong&gt; — only Hermes. Anything with a shell should work, but that one's on you to try.&lt;/li&gt;
&lt;li&gt;The 39 tokens is the &lt;strong&gt;standing pointer&lt;/strong&gt;, not "all skills in 39 tokens." The full skill text stays on disk until it's needed.&lt;/li&gt;
&lt;li&gt;It rewrites the config files of the clients it knows. &lt;strong&gt;Back them up first&lt;/strong&gt;, or use &lt;code&gt;mcptoon off&lt;/code&gt; to pull it back out.&lt;/li&gt;
&lt;li&gt;If you only run one client, your config can't drift. &lt;strong&gt;Don't optimize for its own sake.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One more thing
&lt;/h2&gt;

&lt;p&gt;The tool isn't mine. I've been running it a few weeks, and the server list now lives in exactly one place.&lt;/p&gt;

&lt;p&gt;Has a client's config ever quietly drifted out of sync on you? How did you finally notice — and what broke first?&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop Hand-Crafting MCP JSON for Cursor and Claude Code: Sync Once, Cut 98% Discovery Tokens</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:28:00 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/stop-hand-crafting-mcp-json-for-cursor-and-claude-code-sync-once-cut-98-discovery-tokens-2n6f</link>
      <guid>https://dev.to/mcptokensaver/stop-hand-crafting-mcp-json-for-cursor-and-claude-code-sync-once-cut-98-discovery-tokens-2n6f</guid>
      <description>&lt;p&gt;Last Friday, while cross-debugging a payment refactoring branch, I had Cursor open on my left monitor for frontend reviews and Claude Code running in my terminal on the right.&lt;/p&gt;

&lt;p&gt;To let both AI assistants inspect database schemas and query logs, I hooked up 4 MCP servers to each environment. When you only use a couple of lightweight plugins, the overhead feels unnoticeable. But as your project deepens and you accumulate dozens of specialized MCP tools across your setup, the problem explodes.&lt;/p&gt;

&lt;p&gt;Then I typed my first prompt: "Can you review this transfer logic?"&lt;/p&gt;

&lt;p&gt;Before reading a single line of application code, the context window usage indicator in the bottom corner surged halfway up the gauge.&lt;/p&gt;

&lt;p&gt;Extremely frustrating.&lt;/p&gt;

&lt;p&gt;For months, I assumed my project context was simply too large. It was only when I inspected the raw network payloads this week that I caught the real culprit: my coding assistants were being forced to memorize an entire phonebook of tool schemas before every single exchange. When dealing with dozens of complex tool descriptions, context budgets vanish instantly.&lt;/p&gt;

&lt;p&gt;Even worse, switching between AI clients meant manually duplicating that identical setup across fragmented JSON files scattered across hidden system directories. Miss a comma or misplace an environment variable, and the debugging session is ruined.&lt;/p&gt;

&lt;p&gt;Here is a lightweight workflow: declare your servers once, sync them across all coding assistants with a single command, and reduce the permanent discovery context footprint by over 98%.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers First: From 71,929 Down to 581 Tokens
&lt;/h2&gt;

&lt;p&gt;Before breaking down the setup, look at the benchmark data.&lt;/p&gt;

&lt;p&gt;The standard Model Context Protocol requires clients to retrieve complete tool definitions during the initialization handshake. When you accumulate a practical toolchain—such as our benchmark suite of 255 tools—the full JSON schema gets injected into the system prompt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traditional Full JSON Ingestion&lt;/strong&gt;: 255 tool schemas consume &lt;strong&gt;71,929&lt;/strong&gt; tokens in pure protocol overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compact Name Index Mode&lt;/strong&gt;: By passing minimal tool identifiers without breaking the agent's selection ability, consumption drops straight to &lt;strong&gt;581&lt;/strong&gt; tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That saves &lt;strong&gt;71,348&lt;/strong&gt; tokens upfront, an overall compression ratio of &lt;strong&gt;99.2%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before your assistant even begins reasoning, you reclaim the equivalent of a complete technical manual in available context.&lt;/p&gt;

&lt;p&gt;A massive difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  Root Cause: Configuration Silos and the Context Tax
&lt;/h2&gt;

&lt;p&gt;If you work across both Claude Code and Cursor, you have likely run into these two bottlenecks:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Configuration Silos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cursor stores its MCP configuration in either user-level global settings or workspace-level settings files.&lt;/li&gt;
&lt;li&gt;Claude Code maintains its own dedicated directory layout, schema conventions, and configuration keys.&lt;/li&gt;
&lt;li&gt;Changing a single database connection string forces you to manually edit multiple disjointed configuration files. It is repetitive, error-prone grunt work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The Silent Context Tax
&lt;/h3&gt;

&lt;p&gt;Many developers assume an MCP server only incurs token costs when actively executed.&lt;/p&gt;

&lt;p&gt;That is incorrect.&lt;/p&gt;

&lt;p&gt;To ensure the LLM knows which tools exist, the client must inject every tool's name, argument structure, and type descriptions at the very start of the conversation.&lt;/p&gt;

&lt;p&gt;Even if your entire debug session only needs a single read-only SQL query, all 4 servers' full definitions are repeatedly transmitted across every subsequent turn.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three Steps to Streamlined Tool Management
&lt;/h2&gt;

&lt;p&gt;You do not need to modify your existing MCP servers. The entire transition takes 3 steps and under 10 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Centralize Server Declarations
&lt;/h3&gt;

&lt;p&gt;Instead of maintaining separate JSON snippets inside each IDE's internal configuration, consolidate all common servers into a single source of truth.&lt;/p&gt;

&lt;p&gt;Whether running local stdio scripts or connecting to remote SSE endpoints, declare them cleanly in one place without client-specific wrapper syntax.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Push Configurations to All Environments
&lt;/h3&gt;

&lt;p&gt;Once declared, trigger the synchronization command:&lt;/p&gt;

&lt;p&gt;The environment detector inspects your machine, identifies active installations of Cursor and Claude Code, and automatically maps the connection parameters into each client's expected configuration structure.&lt;/p&gt;

&lt;p&gt;No manual file hunting. Your tools are aligned across environments immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Enable the Name Index Gateway
&lt;/h3&gt;

&lt;p&gt;This provides the token reduction.&lt;/p&gt;

&lt;p&gt;By introducing a lightweight gateway between the client and the underlying MCP services, only compact tool names are presented to the model during idle conversation turns. When the model selects a tool for execution, the gateway hydrates the full schema on demand.&lt;/p&gt;

&lt;p&gt;The LLM accurately picks tools by name, without paying to re-read their full schemas across every conversational turn.&lt;/p&gt;




&lt;h2&gt;
  
  
  When You Should Skip This
&lt;/h2&gt;

&lt;p&gt;To keep things objective, two caveats apply:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight Setups Do Not Need It&lt;/strong&gt;: If you only connect one or two small query tools to Cursor, your permanent overhead is negligible. Stick with native configurations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Density Toolchains See the Biggest Gains&lt;/strong&gt;: The benefits of centralized synchronization and schema indexing compound when managing multiple multi-tool servers with complex parameter schemas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not over-engineer if your setup is minimal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;While digging into this issue, I searched GitHub to see if anyone had tackled the problem and came across &lt;code&gt;mcptoon&lt;/code&gt;. It currently has around two hundred stars and remains relatively under the radar.&lt;/p&gt;

&lt;p&gt;Given how cleanly it bridges Cursor, Claude Code, and other agent environments via CLI while stripping away redundant context overhead, it deserves a closer look.&lt;/p&gt;

&lt;p&gt;How many MCP tools do you typically connect across Cursor or Claude Code? When managing dozens of extensions, have you noticed context window degradation during prolonged debugging sessions? Let's discuss in the comments below.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>Two Token Bills Before Your Agent Answers: 71,929 for MCP Tools, 1,109,242 for Skills</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Thu, 01 Oct 2026 02:44:23 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/two-token-bills-before-your-agent-answers-71929-for-mcp-tools-1109242-for-skills-53l2</link>
      <guid>https://dev.to/mcptokensaver/two-token-bills-before-your-agent-answers-71929-for-mcp-tools-1109242-for-skills-53l2</guid>
      <description>&lt;p&gt;Everyone's started auditing the first bill. Almost nobody has found the second one.&lt;/p&gt;

&lt;p&gt;Here's what I mean. Open your agent's context and count what's already loaded before you type a single character. There are two line items, and they come from two different places:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MCP tool schemas.&lt;/strong&gt; Every connected server ships the full JSON description of every tool it exposes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent skills.&lt;/strong&gt; Every &lt;code&gt;SKILL.md&lt;/code&gt; in your skills directory, loaded whole.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I measured both with tiktoken, OpenAI's official tokenizer, using the &lt;code&gt;cl100k_base&lt;/code&gt; encoding. The tool side is bad. The skill side is worse. And the same idea fixes both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bill #1: the tool schemas
&lt;/h2&gt;

&lt;p&gt;Connect enough MCP servers and the tool descriptions alone eat a large slice of your context window. My reference measurement is a catalog of &lt;strong&gt;255 tools&lt;/strong&gt;. Rendered as full JSON schemas, that's &lt;strong&gt;71,929 tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And it isn't a one-time cost. The manifest gets re-sent &lt;strong&gt;every turn&lt;/strong&gt;. Ask a dozen questions in one session and you've paid that bill a dozen times.&lt;/p&gt;

&lt;p&gt;The reason is structural. Choosing a tool only needs its &lt;strong&gt;name&lt;/strong&gt;. You don't need the full schema to decide whether to call something. But the default plumbing ships the schema anyway, up front, for every tool, on every request. So you're paying for documentation you'll mostly never open.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bill #2: the skills, the one nobody audits
&lt;/h2&gt;

&lt;p&gt;The skill side is bigger, and it's bigger because of what a skill is. A tool is a name plus a schema. A skill is an entire document: instructions, examples, a workflow, a checklist. When the catalog gets exposed as "read the SKILL.md you need," the naive implementation reads the catalog.&lt;/p&gt;

&lt;p&gt;On this machine the skills directory holds &lt;strong&gt;418 skills&lt;/strong&gt;. Concatenated whole, every &lt;code&gt;SKILL.md&lt;/code&gt; is &lt;strong&gt;1,109,242 tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That can't fit in a context window, so most setups do the thing that looks careful and isn't. They load part of it, whatever the agent guesses it needs, and pay a few thousand tokens per skill, every turn, forever. You don't notice, because the bill is spread across many small, reasonable-looking decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same fix lands on both bills
&lt;/h2&gt;

&lt;p&gt;The insight is almost boring once you see it. &lt;strong&gt;Choosing something only needs its name.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't need a tool's full schema to decide whether to call it.&lt;/li&gt;
&lt;li&gt;You don't need a skill's full text to decide whether to read it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So expose the names first, and fetch the bodies on demand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools.&lt;/strong&gt; 255 tools as a names-only index come to &lt;strong&gt;581 tokens&lt;/strong&gt;. That's &lt;strong&gt;99.2%&lt;/strong&gt; off the original &lt;strong&gt;71,929&lt;/strong&gt;. The full schema arrives only when you actually call a tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills.&lt;/strong&gt; One resident pointer, &lt;strong&gt;39 tokens&lt;/strong&gt;, replaces the whole catalog. A single lookup returns the handful of matching skills, and that lookup costs &lt;strong&gt;501 tokens&lt;/strong&gt;. You read the full SKILL.md files only for the winners. Same idea, other bill.&lt;/p&gt;

&lt;p&gt;The pointer's entire job is one sentence: don't load the catalog, ask for a match, then read only those files.&lt;/p&gt;

&lt;p&gt;I run this as &lt;code&gt;mcptoon&lt;/code&gt;, a zero-dependency CLI. It's pure Python standard library, &lt;strong&gt;227KB&lt;/strong&gt;, and it keeps every server and every skill configured and addressable while keeping their full text out of your context window. &lt;code&gt;mcptoon manifest&lt;/code&gt; gives you the names-only view of your tools. &lt;code&gt;mcptoon skills resolve "&amp;lt;what you're trying to do&amp;gt;"&lt;/code&gt; returns the best-matching skills as JSON. Nothing's pre-installed, and nothing loads until you choose it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure your own number first
&lt;/h2&gt;

&lt;p&gt;Don't take my catalog as yours. The tax scales with how much you've wired up, and so does the fix.&lt;/p&gt;

&lt;p&gt;Count what you actually carry. Load your real tool list and your real skills directory, run them through tiktoken, and compare the whole thing against a names-only view. If the gap is large, you've got a bill worth cutting. If the gap is small, you don't.&lt;/p&gt;

&lt;p&gt;That measurement is the whole point. It's also the step almost everyone skips, which is why the second bill goes unnoticed for so long.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest boundary
&lt;/h2&gt;

&lt;p&gt;This pays off when you have &lt;strong&gt;many&lt;/strong&gt; tools and skills. If you run a couple of servers and a dozen skills, none of this matters much. The tax is real but small, and a gateway is one more thing to keep running. Don't optimize for the sake of optimizing.&lt;/p&gt;

&lt;p&gt;My rule of thumb: audit first, and only reach for a name-index layer when the measurement says your context is actually crowded.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part worth arguing about
&lt;/h2&gt;

&lt;p&gt;The tool-schema side is now a known problem. Anthropic's own engineering write-up makes the case, and a Firecrawl benchmark measured the same task at &lt;strong&gt;1,365 tokens&lt;/strong&gt; through a CLI against &lt;strong&gt;44,026 tokens&lt;/strong&gt; through MCP, a &lt;strong&gt;32×&lt;/strong&gt; gap. That conversation is happening.&lt;/p&gt;

&lt;p&gt;The skill side isn't. And it's the larger of the two, because skills are documents, not schemas.&lt;/p&gt;

&lt;p&gt;So here's the question I'd like answered in the comments: &lt;strong&gt;when your agent loads a skill, how much of it is the pointer, and how much is the whole file?&lt;/strong&gt; If you've measured that number, I'd like to see it, because I suspect most people are paying the second bill without ever seeing the invoice.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;mcptoon is open source. Search for it by name. The numbers above are tiktoken &lt;code&gt;cl100k_base&lt;/code&gt; measurements on the tool and skill catalogs described. The skill figure reflects a **418&lt;/em&gt;&lt;em&gt;-skill directory on one machine, so treat it as a shape, not a constant. Your own &lt;code&gt;mcptoon status&lt;/code&gt; prints your number.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>python</category>
      <category>devtools</category>
    </item>
    <item>
      <title>DHH's Omarchy Ships 13 AI Agents on Day One. Your Context Window Picks Up the Bill.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Thu, 10 Sep 2026 07:56:12 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/dhhs-omarchy-ships-13-ai-agents-on-day-one-your-context-window-picks-up-the-bill-44bj</link>
      <guid>https://dev.to/mcptokensaver/dhhs-omarchy-ships-13-ai-agents-on-day-one-your-context-window-picks-up-the-bill-44bj</guid>
      <description>&lt;p&gt;This week the same name showed up in my feed for the fifth time: &lt;strong&gt;Omarchy&lt;/strong&gt; — DHH's opinionated Arch + Hyprland distribution. The numbers are absurd for a project that started as a dotfiles repo in mid-2025: roughly &lt;strong&gt;40,000 GitHub stars&lt;/strong&gt; (39,846 when I checked on Sept 10), an MIT license, a foundation with multi-million-dollar backing, DigitalOcean committing $1M a year, and an install that officially takes &lt;strong&gt;35 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But the feature that actually matters isn't the eye candy. It's the first-boot screen.&lt;/p&gt;

&lt;p&gt;Omarchy is the first "agentic OS" to go mainstream: on day one it asks you to pick a &lt;strong&gt;default AI agent&lt;/strong&gt; — Claude Code, Codex, OpenCode, Copilot CLI, Crush, Grok, Hermes, and more. I counted the picker on the official site: &lt;strong&gt;13 agents&lt;/strong&gt;, preinstalled and wired into the system. Crash notifications get routed to your agent for diagnosis. The OS literally invites the machine to fix itself.&lt;/p&gt;

&lt;p&gt;I think this is genuinely the future. I also think there's a bill hiding under it that nobody has priced yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The evening of day one
&lt;/h2&gt;

&lt;p&gt;Here's how day one actually goes for the target audience. You install Omarchy in under a minute. You pick your agent. You're productive — and then, being the kind of person who installs an agentic OS, you start connecting &lt;strong&gt;MCP servers&lt;/strong&gt; to it. Git ops. Containers. A database client. A web fetcher. That's the whole point, right?&lt;/p&gt;

&lt;p&gt;And here's the mechanism almost nobody talks about: every MCP server you connect ships its entire tool catalog — names, descriptions, nested JSON Schema for every parameter — &lt;strong&gt;into your system prompt&lt;/strong&gt;. Not once. Every single turn of every conversation.&lt;/p&gt;

&lt;p&gt;Your context window starts each session paying a fixed cover charge before any real work happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  I measured a realistic "day one" stack
&lt;/h2&gt;

&lt;p&gt;To put a number on it, I built a realistic day-one developer stack — the kind a new Omarchy user would plausibly wire up in their first evening:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;6 servers / 32 tools&lt;/strong&gt;: git operations, container control, package management, system probes, editor RPC, HTTP debugging&lt;/li&gt;
&lt;li&gt;Rendered as real MCP tool definitions and measured with &lt;strong&gt;tiktoken (cl100k_base)&lt;/strong&gt;, the same tokenizer family most of these agents use for billing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The receipt:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw JSON manifests (what the model receives)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5,359&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After schema simplification&lt;/td&gt;
&lt;td&gt;4,655 (−13.1%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After simplification + compact TOON-style packing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3,446 (−35.7%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A third of the day-one tax, gone, with zero capability loss — every tool still present, just not dressed in hundreds of tokens of redundant JSON ceremony.&lt;/p&gt;

&lt;p&gt;Now scale the habit. An agentic OS that onboards you to 13 agents is also a machine that makes adding server #7, #8, #9 frictionless. The tax is linear in tools and &lt;strong&gt;billed per turn&lt;/strong&gt;. It's the only cost in AI that recurs even when you're just thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two wrong turns I took first
&lt;/h2&gt;

&lt;p&gt;Before measuring, I did what everyone does: blamed the model. The answers were getting lazy and generic, so I assumed the provider had quietly downgraded something. I even switched models for a week — same fog.&lt;/p&gt;

&lt;p&gt;Then I blamed context drift and started nuking sessions every morning, keeping summaries. That made it &lt;em&gt;worse&lt;/em&gt;, because a fresh session still pays the full fixed fee — I'd just multiplied how many times per day I paid it.&lt;/p&gt;

&lt;p&gt;The actual culprit was sitting in my own config: a tool manifest dressed in nested schema ceremony. Most of the weight isn't even the descriptions you can read — it's the braces, the type nesting, the repeated parameter boilerplate around every tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I use now
&lt;/h2&gt;

&lt;p&gt;After fixing my own config I went looking and found a small open-source project called &lt;strong&gt;mcptoon&lt;/strong&gt; (200-ish stars — genuinely tiny, which is why you've probably never seen it). It runs exactly this pipeline: simplify every tool definition, then repack what's left into a denser format. That's what produced the numbers above; I measured with its real pipeline, not a hand-rolled approximation.&lt;/p&gt;

&lt;p&gt;Honest limits: if you run &lt;strong&gt;one or two lightweight servers, you don't need any of this&lt;/strong&gt; — don't optimize a bill you're not paying. The math only starts to matter around ten-plus tools, and it gets loud fast after that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I keep thinking about
&lt;/h2&gt;

&lt;p&gt;Omarchy is not the problem. If anything, DHH's team did the hard part: they made the agentic OS &lt;em&gt;approachable&lt;/em&gt;. The unfinished business is that the MCP ecosystem still bills you in tokens for furniture you installed once and never look at.&lt;/p&gt;

&lt;p&gt;An OS that ships 13 agents on day one deserves a manifest you've actually audited.&lt;/p&gt;

&lt;p&gt;So, honest question for anyone running an agentic setup — Omarchy or otherwise: &lt;strong&gt;how many MCP servers does your daily-driver agent carry, and do you know what its manifest costs you per turn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I didn't know either, until I counted.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>devtools</category>
      <category>llm</category>
    </item>
    <item>
      <title>MCP Tool Discovery Ate 3,384 Tokens per Turn. I Got It Down to 816 with mcptoon.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:59:50 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/mcp-tool-discovery-ate-3384-tokens-per-turn-i-got-it-down-to-816-3728</link>
      <guid>https://dev.to/mcptokensaver/mcp-tool-discovery-ate-3384-tokens-per-turn-i-got-it-down-to-816-3728</guid>
      <description>&lt;p&gt;MCP Tool Discovery Ate 3,384 Tokens per Turn. I Got It Down to 816 with mcptoon.&lt;/p&gt;

&lt;p&gt;Every time your AI Agent or coding assistant (like Claude Code or Cursor) connects to your infrastructure stack, it pays a silent "entry fee" in tokens before processing a single line of your actual prompt. &lt;/p&gt;

&lt;p&gt;I recently audited our production DevOps MCP server setup—consisting of 7 core infrastructure services (Kubernetes, Terraform, AWS, Vault, Datadog, Docker, and GitHub Actions) hosting 38 tools in total.&lt;/p&gt;

&lt;p&gt;Here is what the raw token count looked like when measured via &lt;code&gt;cl100k_base&lt;/code&gt; tiktoken:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Raw JSON Schema Manifest:  3,384 Tokens
Slim Schema Filter:        1,388 Tokens (-59.0%)
mcptoon TOON Manifest:       816 Tokens (-75.9%)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Where Did 3,384 Tokens Go?
&lt;/h3&gt;

&lt;p&gt;Most developers assume that token consumption happens when tools return large execution outputs. But the real leak happens earlier: &lt;strong&gt;in the initial tool discovery phase&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an agent initialises, the system prompt gets injected with massive JSON Schema manifests for every registered tool. Brackets, quotes, nested properties, and verbose &lt;code&gt;inputSchema&lt;/code&gt; boilerplate eat up thousands of tokens per request turn.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I Optimized It Using mcptoon
&lt;/h3&gt;

&lt;p&gt;Instead of manually editing JSON schemas for 38 tools, I used &lt;strong&gt;mcptoon&lt;/strong&gt; (an open-source, zero-dependency CLI client for managing and compressing MCP servers).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Slim Manifest (&lt;code&gt;mcptoon manifest --slim&lt;/code&gt;)&lt;/strong&gt;: Removes redundant outer metadata, parameter type duplication, and default key definitions while keeping basic types (&lt;code&gt;3,384 -&amp;gt; 1,388 tokens&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compact TOON Encoding (&lt;code&gt;mcptoon manifest --toon&lt;/code&gt;)&lt;/strong&gt;: Converts verbose JSON schemas into compact Token-Optimized Object Notation (&lt;code&gt;1,388 -&amp;gt; 816 tokens&lt;/code&gt;).
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Audit and compress your MCP server manifests&lt;/span&gt;
mcptoon manifest &lt;span class="nt"&gt;--slim&lt;/span&gt;
mcptoon manifest &lt;span class="nt"&gt;--toon&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are running multi-server setups with agents, check out &lt;strong&gt;mcptoon&lt;/strong&gt; on GitHub and audit your manifest footprint before tuning your prompts!&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>devops</category>
    </item>
    <item>
      <title>Anthropic and MuleSoft Are Now Fighting the Same Bill I've Been Complaining About</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Tue, 08 Sep 2026 10:32:49 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/anthropic-and-mulesoft-are-now-fighting-the-same-bill-ive-been-complaining-about-55cg</link>
      <guid>https://dev.to/mcptokensaver/anthropic-and-mulesoft-are-now-fighting-the-same-bill-ive-been-complaining-about-55cg</guid>
      <description>&lt;p&gt;Two weeks ago, complaining about MCP token costs made you the annoying person&lt;br&gt;
in the room. This week, Anthropic and MuleSoft both shipped features that treat&lt;br&gt;
the exact same problem as a first-class cost — and each of them picked a&lt;br&gt;
different third of the battlefield.&lt;/p&gt;

&lt;p&gt;I've been living in this battlefield for two months, building mcptoon, a 128KB&lt;br&gt;
zero-dependency CLI (it lives on PyPI) that compresses MCP payloads. So when&lt;br&gt;
the giants started aiming at the same target, I did what any reasonable&lt;br&gt;
developer does: made a map. Here it is — including the third of the&lt;br&gt;
battlefield that still has nobody on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What just happened
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Anthropic&lt;/strong&gt; shipped two capabilities for Claude:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Advanced tool use&lt;/strong&gt; — a tool-search tool that keeps tool definitions out of
the context window until needed. Anthropic's own testing with ~58 tools
showed tool-definition tokens dropping &lt;strong&gt;85%&lt;/strong&gt;, and they now have agents
running 1,000+ tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmatic tool calling&lt;/strong&gt; — instead of handing each tool result to the
model as context, your agent writes code that calls tools and returns only
the distilled answer. Their reported case: 37% fewer tokens in a
multi-data-source analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;MuleSoft&lt;/strong&gt; added MCP payload optimization to its enterprise gateway — and the&lt;br&gt;
compression format it picked is &lt;strong&gt;TOON&lt;/strong&gt;, the same token-oriented format&lt;br&gt;
mcptoon has been speaking since the summer.&lt;/p&gt;

&lt;p&gt;Three vendors. One diagnosis: &lt;strong&gt;MCP payloads are a bill, not a feature.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The map: who fights where
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Battlefield&lt;/th&gt;
&lt;th&gt;Who's on it&lt;/th&gt;
&lt;th&gt;What they fight&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;definitions&lt;/strong&gt; (the catalog)&lt;/td&gt;
&lt;td&gt;Anthropic (TST), mcptoon&lt;/td&gt;
&lt;td&gt;The "every session re-charges the full menu" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;orchestration&lt;/strong&gt; (how calls happen)&lt;/td&gt;
&lt;td&gt;Anthropic (PTC)&lt;/td&gt;
&lt;td&gt;The "every intermediate result becomes context" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;traffic&lt;/strong&gt; in transit&lt;/td&gt;
&lt;td&gt;MuleSoft (gateway)&lt;/td&gt;
&lt;td&gt;Enterprise traffic, compressed behind a gateway that runs their stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool &lt;strong&gt;results&lt;/strong&gt; on the way back&lt;/td&gt;
&lt;td&gt;…nobody with a 128KB wheel&lt;/td&gt;
&lt;td&gt;The "one image tool = megabytes of base64 in context" tax&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the gap. Every discussion about MCP cost is about what goes&lt;br&gt;
&lt;em&gt;in&lt;/em&gt; to the model — the catalog, the schemas, the orchestration. But agentic&lt;br&gt;
sessions pump &lt;strong&gt;results&lt;/strong&gt; back into context all day, and results have no&lt;br&gt;
guardrails: a screenshot tool returns base64 PNG, a search tool returns the&lt;br&gt;
full JSON envelope, a database tool returns 200 rows when you asked for 5.&lt;/p&gt;

&lt;h2&gt;
  
  
  What mcptoon does about it (and what it deliberately doesn't)
&lt;/h2&gt;

&lt;p&gt;mcptoon is result-side discipline, and it's honest about the numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Catalog discipline&lt;/strong&gt;: 255 tools / 50 servers list at &lt;strong&gt;71,929 → 581
tokens (−99.2%)&lt;/strong&gt; in the default compact view — schemas stay on disk, the
model sees a name index and pulls signatures on demand. (Same tax Anthropic's
tool-search tool attacks, from the client side instead of the platform side.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result compression&lt;/strong&gt;: TOON on tool results saves &lt;strong&gt;~34% vs JSON&lt;/strong&gt; per
payload; the slim manifest format runs &lt;strong&gt;88.5% smaller&lt;/strong&gt; than raw JSON.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And one design decision I keep explaining to people: you can &lt;em&gt;not&lt;/em&gt; compress&lt;br&gt;
everything. An image generator returning base64 must never be squeezed —&lt;br&gt;
compressing it either breaks it or wastes the tokens you were trying to save.&lt;br&gt;
Result-side compression needs per-tool judgment. MuleSoft's per-tool override&lt;br&gt;
policy validated that choice from the enterprise side.&lt;/p&gt;

&lt;p&gt;What mcptoon doesn't do, on purpose: it doesn't live inside Claude's platform&lt;br&gt;
like TST/PTC (it works with any agent that speaks MCP), and it doesn't sit in a&lt;br&gt;
gateway (it's a CLI on your machine — no server, no key, no proxy process).&lt;/p&gt;

&lt;h2&gt;
  
  
  If you use Claude Code, it's a one-line install
&lt;/h2&gt;

&lt;p&gt;Claude Code users can add mcptoon from the plugin marketplace with one line —&lt;br&gt;
the plugin installs the CLI, wires the bridge into your session, and ships a&lt;br&gt;
skill that teaches the agent when to compress and when to ask for the full&lt;br&gt;
payload. No JSON editing — the thing my last three articles were collectively&lt;br&gt;
about. The exact line is in the repo's README.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bill, in actual money
&lt;/h2&gt;

&lt;p&gt;The standard conversion: $3 per 1M input tokens. Assumptions stated (they&lt;br&gt;
always should be): a working day triggers ~20 catalog loads (agentic style,&lt;br&gt;
every session), 30 days a month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;255 tools, raw catalog: 71,929 tokens → &lt;strong&gt;~$128.43/month&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;255 tools, mcptoon compact index: 581 tokens → &lt;strong&gt;~$1.05/month&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your number depends on your session frequency — run the math with your own&lt;br&gt;
counts before believing anyone's (including mine).&lt;/p&gt;

&lt;h2&gt;
  
  
  See it on your own machine
&lt;/h2&gt;

&lt;p&gt;mcptoon installs with one command from PyPI — and its demo command installs a throwaway&lt;br&gt;
server, calls it, and prints the before/after token numbers from your own&lt;br&gt;
machine. No hand-written config, no API key, no account.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sources: Anthropic's advanced tool use and programmatic tool calling docs&lt;br&gt;
(platform.claude.com), MuleSoft's MCP payload optimization policy&lt;br&gt;
(docs.mcp.mulesoft.com), and mcptoon's own measured benchmarks (tiktoken,&lt;br&gt;
cl100k_base). The full battle map lives in the README.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>llm</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Before I Type a Word, My Agent Burns 8,248 Tokens</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Mon, 07 Sep 2026 03:40:04 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/before-i-type-a-word-my-agent-burns-8248-tokens-509c</link>
      <guid>https://dev.to/mcptokensaver/before-i-type-a-word-my-agent-burns-8248-tokens-509c</guid>
      <description>&lt;p&gt;Last Tuesday night I was five messages into a refactor with Claude Code. It had just suggested a helper function, I asked it to wire up the call sites, and by then it had already forgotten the signature it wrote in message two. I opened a fresh session, repeated the prompt, everything worked. An hour later the amnesia came back in a different file.&lt;/p&gt;

&lt;h2&gt;
  
  
  First suspect: my own config
&lt;/h2&gt;

&lt;p&gt;The project &lt;code&gt;CLAUDE.md&lt;/code&gt; had grown into a hedge, so I cut it in half and stripped the style guide down to three lines. Then I checked the context meter of a brand new session, zero messages typed. The idle count sat at &lt;strong&gt;8,248&lt;/strong&gt; tokens. An empty conversation burning that much points at something the client sends before I say anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Second suspect: the MCP servers
&lt;/h2&gt;

&lt;p&gt;I run a mid-fat local stack: sqlite, git, fetch, memory, search, scheduler, translator, fsops. Eight servers, &lt;strong&gt;48 tools&lt;/strong&gt;. I disconnected them one by one and watched the idle count after each restart. Every disconnect knocked a few hundred off, and even with everything unplugged the number never went near zero. At that point I was ready to quit MCP entirely and go back to pasting code by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading the traffic instead of guessing
&lt;/h2&gt;

&lt;p&gt;I pointed a local proxy at the client and dumped the first request of that empty session. The &lt;code&gt;messages&lt;/code&gt; array was empty, literally &lt;code&gt;[]&lt;/code&gt;. The &lt;code&gt;tools&lt;/code&gt; array was not. Every one of those 48 tool definitions arrived wrapped in full JSON Schema: &lt;code&gt;"type": "object"&lt;/code&gt;, &lt;code&gt;properties&lt;/code&gt;, &lt;code&gt;required&lt;/code&gt;, plus a friendly paragraph of description for each argument. I ran &lt;code&gt;tiktoken&lt;/code&gt; (cl100k_base) over that field alone. &lt;strong&gt;8,248&lt;/strong&gt; tokens. Per request. Before the first character I type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"repo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Repository name..."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"File path inside..."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"repo"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtbkoehstjv8m21zpuk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtbkoehstjv8m21zpuk3.png" alt="Three-step diagram: every tool ships JSON Schema, every turn resends the catalog, an empty session opens 8,248 tokens deep - mcptoon repacks it to 4,192" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The model re-reads that catalog on every call, every turn, every session. The "forgetfulness" finally made sense: a fifth of my working window was spent holding JSON the conversation never touches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does a model actually need the braces?
&lt;/h2&gt;

&lt;p&gt;I repacked the same 48 definitions with mcptoon's pipeline: schema simplification plus its compact pipe notation, one line per field, all 48 tools kept, nothing truncated. Same information, &lt;strong&gt;4,192&lt;/strong&gt; tokens. 49% of the original bill, and the model still received every tool with every field name it needs to make a call. I re-ran my sessions against the compact manifest: tool choice and arguments still landed right, including the annoying nested-object ones.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;measured: 8 servers / 48 tools / tiktoken cl100k_base
raw JSON manifest ....... 8,248 tokens
mcptoon (simplify+slim) . 4,192 tokens  (-49%)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femur1rn2iaygrnx26zce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Femur1rn2iaygrnx26zce.png" alt="Measured benchmark: raw JSON manifest 8,248 tokens versus mcptoon 4,192 tokens, -49 percent" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One honest note about the size of the cut: how much you save depends on how bloated your schemas are. Documented, human-readable schemas like mine land around half. Flatter, machine-generated schemas compress much harder. Your number is between those poles, and the only way to know is to measure your own manifest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftpbsde4xg68frkyr1ldv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftpbsde4xg68frkyr1ldv.png" alt="Format comparison: raw JSON braces versus mcptoon compact notation, same information at half the size" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The treasure at the end of the search
&lt;/h2&gt;

&lt;p&gt;After fixing my setup I went to GitHub to see who else had hit this. Found &lt;strong&gt;mcptoon&lt;/strong&gt;. Around two hundred stars, zero dependencies, pure stdlib Python, and it does exactly this one job: it re-serves your MCP tool manifest in a compact form any MCP client can consume. For a job this narrow, the polish is ahead of the star count.&lt;/p&gt;

&lt;p&gt;Fair limits: if your stack is one or two servers with a dozen tools, this tax is pocket change and not worth an evening. If you run a heavier stack and your empty sessions open heavy, audit the &lt;code&gt;tools&lt;/code&gt; field before you blame the model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question for the comments:&lt;/strong&gt; what does your context meter read on an empty session, before you type anything? Drop the number. Curious what a normal idle bill looks like across setups.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>mcp</category>
      <category>devtools</category>
    </item>
    <item>
      <title>The 72,000-Token Invisible Tax: What Really Happens When You Load 10 MCP Servers</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Sat, 05 Sep 2026 08:27:51 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/the-72000-token-invisible-tax-what-really-happens-when-you-load-10-mcp-servers-2ml4</link>
      <guid>https://dev.to/mcptokensaver/the-72000-token-invisible-tax-what-really-happens-when-you-load-10-mcp-servers-2ml4</guid>
      <description>&lt;h1&gt;
  
  
  The 72,000-Token Invisible Tax: What Really Happens When You Load 10 MCP Servers
&lt;/h1&gt;

&lt;p&gt;If you've been using Claude Code, Cursor, Windsurf, or Codex CLI with MCP (Model Context Protocol) servers, you might have noticed something strange lately:&lt;/p&gt;

&lt;p&gt;Even on a brand new, empty turn — before you write a single line of code — your context window is already packed, response latency feels sluggish, and your token burn rate is higher than expected.&lt;/p&gt;

&lt;p&gt;We measured the exact payload across 50 production MCP servers. Here is what we found, why it happens, and how modern token compression drops that overhead by 99.8%.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Measurement: Where Did 71,929 Tokens Go?
&lt;/h2&gt;

&lt;p&gt;When you connect an MCP server to an AI host, the client requests the tools schema via &lt;code&gt;tools/list&lt;/code&gt;. The server returns JSON schemas describing each tool, parameter types, nested objects, and documentation strings.&lt;/p&gt;

&lt;p&gt;Here is the measurement from 10 common MCP servers in a typical developer workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File system toolset: ~4,200 tokens&lt;/li&gt;
&lt;li&gt;Git / GitHub integration: ~8,800 tokens&lt;/li&gt;
&lt;li&gt;Database / PostgreSQL introspection: ~12,400 tokens&lt;/li&gt;
&lt;li&gt;Terminal / Shell execution: ~3,100 tokens&lt;/li&gt;
&lt;li&gt;Web search / scraper toolsets: ~14,500 tokens&lt;/li&gt;
&lt;li&gt;API &amp;amp; Slack notification wrappers: ~28,900 tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total uncompressed payload injected on every conversation turn: 71,929 tokens.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are paying typical API pricing on top-tier frontier models (such as Claude 3.7 Sonnet at $3.00 / million input tokens), this baseline schema injection costs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$0.21 per turn just for the tool definitions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Over 100 turns in an intensive coding session: &lt;strong&gt;$21.00 wasted on unchanging tool definitions&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More importantly, it robs your agent of working memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why JSON Schema Is the Wrong Format for LLM Context
&lt;/h2&gt;

&lt;p&gt;JSON Schema was built for deterministic validation in distributed REST APIs, not for autoregressive language model attention heads.&lt;/p&gt;

&lt;p&gt;It is notoriously verbose:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Repetitive punctuation &amp;amp; syntax keys&lt;/strong&gt;: &lt;code&gt;"type": "string"&lt;/code&gt;, &lt;code&gt;"properties": { ... }&lt;/code&gt;, &lt;code&gt;"required": [...]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep nesting&lt;/strong&gt;: Up to 6 levels of curly braces and indentation for simple parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type boilerplate&lt;/strong&gt;: A simple function taking a filename and integer line number takes 40+ tokens of raw JSON.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LLMs don't need JSON validation schemas to understand how to call a tool; they understand compact functional signatures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout_ms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Compact Schema Solution: Dropping from 71,929 to 124 Tokens
&lt;/h2&gt;

&lt;p&gt;By applying AST schema distillation and compact schema projection (an open-source approach implemented in the &lt;code&gt;mcptoon&lt;/code&gt; tool), you don't send the raw multi-thousand-line JSON.&lt;/p&gt;

&lt;p&gt;Instead, the client compiles the tool definitions into a compacted representation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strips redundant schema wrappers&lt;/li&gt;
&lt;li&gt;Inlines type annotations&lt;/li&gt;
&lt;li&gt;Prunes inactive parameter descriptions on initial load&lt;/li&gt;
&lt;li&gt;On-demand hydrates full schemas only when the tool is actively selected by the model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Results:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uncompressed schema&lt;/strong&gt;: 71,929 tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compacted schema&lt;/strong&gt;: &lt;strong&gt;124 tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token reduction&lt;/strong&gt;: &lt;strong&gt;-99.8%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency improvement&lt;/strong&gt;: Time-to-first-token (TTFT) dropped by 64% in our local benchmarks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Lessons for Agent Builders
&lt;/h2&gt;

&lt;p&gt;If you are designing agentic systems or orchestrating multiple MCP servers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your tool payload size&lt;/strong&gt;: Run a token counter on your &lt;code&gt;tools/list&lt;/code&gt; response. You might be surprised at how much dead weight is being transmitted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid dumping raw schemas&lt;/strong&gt;: Use functional representations or deferred schema resolution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preserve context budget for actual thinking&lt;/strong&gt;: The model does its best reasoning when the context is clean and focused on code, not schema boilerplate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How are you handling tool payload bloat in your multi-server MCP setups? Would love to hear other strategies in the comments below.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>programming</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Your MCP Tool List Costs $6.50/Month in Pure Waste — Here's the Fix</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Fri, 04 Sep 2026 07:44:09 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/your-mcp-tool-list-costs-650month-in-pure-waste-heres-the-fix-1gbk</link>
      <guid>https://dev.to/mcptokensaver/your-mcp-tool-list-costs-650month-in-pure-waste-heres-the-fix-1gbk</guid>
      <description>&lt;h1&gt;
  
  
  Your MCP Tool List Costs $6.50/Month in Pure Waste — Here's the Fix
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Every time you open a new session, your client re-bills you for the same tool manifest.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Full disclosure:&lt;/strong&gt; I'm one of the maintainers of mcptoon. Every number below comes from a real benchmark (tiktoken cl100k_base), not a pitch deck.&lt;/p&gt;

&lt;h2&gt;
  
  
  The invisible bill that recurs every session
&lt;/h2&gt;

&lt;p&gt;Anyone using Claude, Cursor, or any agent has felt it: more tools installed → conversations get pricier, slower, and fill up faster.&lt;/p&gt;

&lt;p&gt;The problem isn't the tools. It's a line item almost nobody looks at — &lt;strong&gt;the tool manifest&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every session, the client stuffs the complete manifest of every MCP server into context. In JSON, that list runs tens of thousands of tokens — &lt;strong&gt;and it gets re-billed every time you start a new session&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Measured on 255 tools / 50 servers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Raw JSON manifest&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Full manifest&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71,929&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Recharged every session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In money&lt;/td&gt;
&lt;td&gt;≈ $0.22/session&lt;/td&gt;
&lt;td&gt;@ $3/M input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30 sessions/day&lt;/td&gt;
&lt;td&gt;≈ &lt;strong&gt;$6.50/month&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Pure manifest tax — zero tool calls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pure waste. Your agent isn't using those 70k tokens; it just has to "read the whole name list" before it can start.&lt;/p&gt;

&lt;h2&gt;
  
  
  A name directory that costs 124 tokens
&lt;/h2&gt;

&lt;p&gt;mcptoon slims that 70k-token JSON into a plain &lt;strong&gt;name directory&lt;/strong&gt;. Same config:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;Savings&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw JSON&lt;/td&gt;
&lt;td&gt;71,929&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--slim&lt;/code&gt; (trimmed params)&lt;/td&gt;
&lt;td&gt;8,282&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−88.5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--compact&lt;/code&gt; (names only)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;124&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−99.8%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Measured on a real 255-tool / 50-server config (tiktoken cl100k_base). Reproduce on your machine: &lt;code&gt;mcptoon manifest --compact --tokens&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it yourself in 30 seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mcptoon demo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;mcptoon demo&lt;/code&gt; prints the token numbers for JSON vs. mcptoon format, using your own servers, on your own box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why saving tokens is worth it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Long conversations stop filling up so fast.&lt;/strong&gt; Room a 70k-token manifest used = several more rounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple agents, one source of truth.&lt;/strong&gt; One config (&lt;code&gt;~/.mcptoon/config.json&lt;/code&gt;) for all clients; &lt;code&gt;sync&lt;/code&gt; pushes to all in seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install more tools without the fear.&lt;/strong&gt; Context bloat fears disappear once the list is slim.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Zero dependencies (pure Python stdlib, ~250KB), open source (Apache-2.0), Windows / macOS / Linux, blocks injection and credential leaks.&lt;/p&gt;

&lt;p&gt;Asking "what tools do I have?" shouldn't cost 70,000 tokens.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Benchmark&lt;/strong&gt;: &lt;code&gt;projects/mcptoon/assets/benchmark_tiktoken.json&lt;/code&gt; (tiktoken cl100k_base)&lt;br&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: github.com/activeing123/mcptoon&lt;br&gt;
&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install mcptoon &amp;amp;&amp;amp; mcptoon demo&lt;/code&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>claude</category>
    </item>
    <item>
      <title>I Spent an Entire Release on the First 30 Seconds</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 02 Sep 2026 07:08:01 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/i-spent-an-entire-release-on-the-first-30-seconds-5he5</link>
      <guid>https://dev.to/mcptokensaver/i-spent-an-entire-release-on-the-first-30-seconds-5he5</guid>
      <description>&lt;p&gt;Version 0.7.2 of mcptoon adds no new token compression. No new spec support. No new agent integrations. The whole release is about what happens in the thirty seconds after somebody types &lt;code&gt;pip install mcptoon&lt;/code&gt;, and a contributor friend of mine thinks that is a wasted release. I think it is the highest-leverage thing I shipped all month.&lt;/p&gt;

&lt;p&gt;Here is the reasoning. A developer tools project lives or dies on its first run. Not the docs, not the benchmark table, the first run. People paste one command, watch the output, and their brain quietly votes keep or delete. If that first run ends in a config error, the tab closes and the repo becomes another star they forgot about. My earlier quickstart was functional and completely forgettable, which in practice means the same thing as broken.&lt;/p&gt;

&lt;p&gt;So 0.7.2 rebuilt the first run around three moments.&lt;/p&gt;

&lt;p&gt;The install got shorter. There are now one-line installers for every common platform:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/activeing123/mcptoon/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/activeing123/mcptoon/main/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The shell script tries pipx first, falls back to pip --user, and if the system Python is distro-managed (the PEP 668 externally-managed-environment wall) it builds a venv on its own. The Windows script finds the py launcher, fixes PATH when it can, and tells you honestly when it cannot. Both end by launching quickstart for you, so the installer is not a dead end.&lt;/p&gt;

&lt;p&gt;The quickstart got a payoff. When setup finishes, it closes with the actual count from your machine: N tools ready across M servers, followed by exactly two commands worth running next, &lt;code&gt;sync&lt;/code&gt; to write the configs into every agent and &lt;code&gt;serve&lt;/code&gt; to expose everything as one stdio gateway. That is the celebration screen. If you are scripting and think party output is nonsense, &lt;code&gt;--dry&lt;/code&gt; keeps it sober, plain next-steps only. The celebration is earned, not decorative: it only prints real numbers it just counted on your disk.&lt;/p&gt;

&lt;p&gt;The demo got a punchline. &lt;code&gt;mcptoon demo&lt;/code&gt; used to open with a table, which is the correct format for verification and the wrong format for a first impression. Now it leads with one plain sentence, something like: SAME data, 99 percent fewer tokens, 12,400 to 117. Then the detailed table for people who want to check the math. Then a "Now you can" checklist. The order matters. The headline number is computed live from your own servers, so it is not a marketing claim I typed, it is a measurement your machine just made.&lt;/p&gt;

&lt;p&gt;That last point is the whole philosophy of the release, so let me be precise about it. I did not add these numbers to make the tool feel bigger. I added them so the user never has to take my word for anything. The demo runs before and after on the user's actual config, with the user's actual servers, using the same tokenizer both times. If the number is unimpressive on your setup, the tool tells you so on your screen, and you can uninstall with two minutes lost. That honesty did more for the project than any feature list.&lt;/p&gt;

&lt;p&gt;The honest limits of the release itself: the celebration screen is cosmetic and skips cleanly with --dry, the installers assume common layouts and will not handle exotic Python setups, the PEP 668 fallback targets distro-managed Pythons specifically, and demo percentages still vary by tokenizer, expect 10 to 25 percent difference from what your provider bills. The new flows carry their own fresh test file, and everything else in the suite stays green.&lt;/p&gt;

&lt;p&gt;Compression, spec support, agent coverage, those features got people to install. The first thirty seconds decide whether they stay. One release for thirty seconds is a trade I will make every time.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>cli</category>
    </item>
    <item>
      <title>I Shipped a Plugin That Teaches Your AI Agent to Manage Its Own MCP Config</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Wed, 02 Sep 2026 04:06:00 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/i-shipped-a-plugin-that-teaches-your-ai-agent-to-manage-its-own-mcp-config-3bj1</link>
      <guid>https://dev.to/mcptokensaver/i-shipped-a-plugin-that-teaches-your-ai-agent-to-manage-its-own-mcp-config-3bj1</guid>
      <description>&lt;p&gt;Your agent uses tools every day, but it has no idea how the plumbing works. Ask it why your MCP setup burns 70K tokens of schemas per turn and it will guess. Ask it to wire a new server into five agent configs and it will edit the wrong file, or worse, the right file in the wrong shape.&lt;/p&gt;

&lt;p&gt;That is a skills gap, not an intelligence gap. So with mcptoon 0.7.2 we shipped the fix as a plugin: three SKILL.md files that ride along as MCP prompts, teaching any agent how to drive mcptoon — connect, author, triage. mcptoon eats its own dog food here: the skills are installed and served through mcptoon's own plugin system.&lt;/p&gt;

&lt;h2&gt;
  
  
  The install is now one line
&lt;/h2&gt;

&lt;p&gt;The whole onboarding used to assume you were comfortable with pip and a README walk. Version 0.7.2 collapses it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS / Linux / WSL:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/activeing123/mcptoon/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows (PowerShell):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/activeing123/mcptoon/main/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script picks the best available path (pipx, then pip --user, then a PEP 668-safe venv on macOS where the system Python refuses global installs), fixes PATH if needed, and hands off straight to &lt;code&gt;mcptoon quickstart&lt;/code&gt;. You end the one-liner staring at a list of your own MCP tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quickstart now ends with the payoff
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;mcptoon quickstart&lt;/code&gt; adopts your existing setup — it scans the agents you already configured and lists every tool it finds, so nothing gets re-entered. In 0.7.2 it closes with the number that matters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🎉 255 tools ready across 8 servers!

Now you can:
  mcptoon sync      # write configs into every agent
  mcptoon serve     # expose all servers as one stdio gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;sync&lt;/code&gt; writes native-format configs into each detected agent — merging, never overwriting, so your hand-tuned entries survive. &lt;code&gt;serve&lt;/code&gt; turns the whole pile into one stdio gateway, which is where the token compression pays off: tool listings drop by up to 99% once agents read the compressed manifest instead of the raw schemas.&lt;/p&gt;

&lt;h2&gt;
  
  
  The skills plugin: three files, one command
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ~/.mcptoon/plugins/mcptoon-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What the agent gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;connect&lt;/strong&gt; — how to inspect an existing setup, run &lt;code&gt;quickstart&lt;/code&gt;/&lt;code&gt;sync&lt;/code&gt;, and verify configs landed correctly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;authoring&lt;/strong&gt; — how to write the compressed manifest format and when compression is worth it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;triage&lt;/strong&gt; — how to debug a failing MCP server: health checks, config drift, restart semantics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are exposed through &lt;code&gt;mcptoon serve&lt;/code&gt; as MCP prompts, so any connected agent can pull them in on demand. No new tool calls, no extra config files — the knowledge arrives through the same channel the tools do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1 · one-line install (about 250KB, pure standard library, zero dependencies)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/activeing123/mcptoon/main/install.sh | bash

&lt;span class="c"&gt;# 2 · see the savings on your own setup before committing to anything&lt;/span&gt;
mcptoon demo

&lt;span class="c"&gt;# 3 · give your agent the manual&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ~/.mcptoon/plugins/mcptoon-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The suite behind it runs 610 tests, green in CI. It is a local CLI, not a service — nothing leaves your machine.&lt;/p&gt;

&lt;p&gt;Your agent was never missing intelligence. It was missing the manual. Now the manual ships with the toolbox.&lt;/p&gt;

</description>
      <category>mcptoon</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Everyone Agreed What an AI Plugin Is. Nobody Said How to Install It.</title>
      <dc:creator>MCP Token Saver</dc:creator>
      <pubDate>Tue, 01 Sep 2026 02:43:06 +0000</pubDate>
      <link>https://dev.to/mcptokensaver/everyone-agreed-what-an-ai-plugin-is-nobody-said-how-to-install-it-2e6g</link>
      <guid>https://dev.to/mcptokensaver/everyone-agreed-what-an-ai-plugin-is-nobody-said-how-to-install-it-2e6g</guid>
      <description>&lt;p&gt;Amazon, Cursor, Microsoft, OpenAI and Vercel do not agree on much. Last week they all put their names on the same thing: the Agent Plugins Specification 1.0.0, one standard way to package a plugin for AI agents. A folder. A &lt;code&gt;plugin.json&lt;/code&gt; at the top, a &lt;code&gt;skills/&lt;/code&gt; directory beside it, an &lt;code&gt;mcp.json&lt;/code&gt; for the tools.&lt;/p&gt;

&lt;p&gt;That part needed doing. Before this, every vendor shipped its own flavor of "plugin" and you translated between the flavors by hand.&lt;/p&gt;

&lt;p&gt;Here is the part that gets me. The spec covers packaging only, and it says so right in its own scope. Installation? Distribution? Getting one plugin into the five agent configs you already maintain? Out of scope. The spec draws a clean box around what a plugin is, then stops at the edge of the box.&lt;/p&gt;

&lt;p&gt;So I did the math on my own machine. Five agents, one plugin. The manual way is five config files in five different shapes, five chances to fumble a path, five restarts, and an uninstall that turns into an archaeology project across all five. The industry standardized the box, then left everyone standing in the parking lot with no truck to ship it in.&lt;/p&gt;

&lt;p&gt;mcptoon 0.7.1 fills that gap. Same idea the CLI has always had, write every agent's native config for you, now pointed at the new plugin format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuctzy5v6v47x8y58a6n7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuctzy5v6v47x8y58a6n7.png" alt="One install, every agent: the spec defines the package, mcptoon ships the installer" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Four commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mcptoon plugin scan &amp;lt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;      &lt;span class="c"&gt;# validate a plugin package (read-only)&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; &amp;lt;&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;   &lt;span class="c"&gt;# install into mcptoon + every synced agent&lt;/span&gt;
mcptoon plugin list            &lt;span class="c"&gt;# what is installed&lt;/span&gt;
mcptoon plugin remove &amp;lt;name&amp;gt;   &lt;span class="c"&gt;# remove everywhere&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;scan validates. install propagates. list shows what landed where. remove pulls it back out of every config it touched.&lt;/p&gt;

&lt;p&gt;install is the one worth studying, because it makes three decisions a naive installer would get wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variables get resolved before they reach an agent.&lt;/strong&gt; Plugin packages reference &lt;code&gt;${PLUGIN_ROOT}&lt;/code&gt; and &lt;code&gt;${PLUGIN_DATA}&lt;/code&gt;, and the spec assumes the loading agent will expand them. Most agents cannot. That is exactly why the gap exists. mcptoon is the installer, so it expands both variables into absolute paths itself and writes plain paths into every agent config. No agent ever sees a variable it cannot understand. When mcptoon launches a plugin's stdio server, it injects the same two names as environment variables, so spec-compliant plugins work both ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove reaches everywhere install reached.&lt;/strong&gt; &lt;code&gt;plugin remove&lt;/code&gt; does not just delete a folder. It prunes the namespaced &lt;code&gt;plugin:server&lt;/code&gt; entries out of every agent config the install touched. One thing it keeps on purpose: the plugin's data directory under &lt;code&gt;~/.mcptoon/plugins-data/&lt;/code&gt;. The spec asks for persistent plugin data, so a cache survives an upgrade or a &lt;code&gt;--force&lt;/code&gt; reinstall. Delete that folder yourself if you want a truly clean slate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validation fails closed.&lt;/strong&gt; &lt;code&gt;plugin scan&lt;/code&gt; checks the manifest against a closed schema. Unknown fields get rejected. Commands must be a single token. Remote URLs must be HTTPS unless they point at loopback. Credentials in headers get refused. Path escapes like &lt;code&gt;../&lt;/code&gt; get refused. A package that fails scan never reaches an agent config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1 · install (about 250KB, pure standard library, zero dependencies)&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mcptoon

&lt;span class="c"&gt;# 2 · validate any Agent Plugins package, no side effects&lt;/span&gt;
mcptoon plugin scan ./my-plugin

&lt;span class="c"&gt;# 3 · install it into every agent you have synced&lt;/span&gt;
mcptoon plugin &lt;span class="nb"&gt;install&lt;/span&gt; ./my-plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because plugins land in the same config as every other MCP server, they inherit everything mcptoon already does. The compressed manifest that saves up to 99.8 percent of tool-listing tokens. &lt;code&gt;mcptoon call&lt;/code&gt;. &lt;code&gt;mcptoon health&lt;/code&gt;. Version 0.7.1 also picked up stdio cwd support along the way, so a plugin server can declare its own working directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;This is an installer, not a marketplace. There is no registry search yet, you install from a directory you already have. The validator rejects anything the spec does not define, which is the point, but it also means creative non-standard packages bounce. Data directories persist by design. Cold starts on stdio servers still cost a few hundred milliseconds each.&lt;/p&gt;

&lt;p&gt;The suite behind all of this is 610 tests, green in CI, plus a 19-point livefire run against real agent configs.&lt;/p&gt;

&lt;p&gt;The vendors settled what a plugin is. Getting it onto every agent on your machine used to be your problem. Now it is one command.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>devtools</category>
      <category>mcptoon</category>
    </item>
  </channel>
</rss>
