[{"data":1,"prerenderedAt":414},["ShallowReactive",2],{"\u002Fblog\u002Fmcp-isnt-dead":3,"latest-blog-posts":264},{"id":4,"title":5,"author":6,"body":7,"category":249,"date":250,"description":251,"extension":252,"image":253,"imageAlt":254,"meta":255,"navigation":222,"ogImage":253,"path":256,"published":222,"seo":257,"stem":259,"tags":260,"__hash__":263},"blog\u002Fblog\u002Fmcp-isnt-dead.md","MCP Isn't Dead. You're Just Using It Wrong.","Theo McCabe",{"type":8,"value":9,"toc":239},"minimark",[10,14,17,20,31,40,47,50,65,68,76,82,85,101,104,110,115,121,124,127,136,145,148,153,168,171,174,178,181,199,206,209,213,216,219,232],[11,12,13],"p",{},"Everyone and their gran have been saying that MCP is dead.",[11,15,16],{},"But could it be that MCP's saving grace has been with us all along - hiding in plain sight?",[11,18,19],{},"I think so.",[11,21,22,23,30],{},"A feature buried in Claude Code's ",[24,25,29],"a",{"href":26,"rel":27},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-code\u002Fblob\u002Fmain\u002FCHANGELOG.md",[28],"nofollow","Jan 2026 release"," may have marked the most powerful development in MCP since its inception - and almost nobody noticed.",[11,32,33],{},[34,35,36],"em",{},[37,38,39],"strong",{},"Dynamic Tool Registration.",[11,41,42],{},[43,44],"img",{"alt":45,"src":46},"Dynamic tool registration diagram","\u002Fblog\u002Fmcp-isnt-dead-dynamic-tool-registration.png",[11,48,49],{},"But what is dynamic tool registration, you ask?",[11,51,52,53,58,59,64],{},"Dynamic tool registration extends an MCP server's abilities above those of just a glorified swagger doc - allowing the server not just to list a ",[34,54,55],{},[37,56,57],{},"static"," set of tools, but to ",[34,60,61],{},[37,62,63],{},"dynamically"," add and remove new tools from that list in real time as part of a stateful agent session.",[11,66,67],{},"And what's so powerful about that?",[11,69,70,71,75],{},"Well for one it allows us to elegantly solve the main problem most people had with MCP in the first place - context bloat. By grouping our tools into collections of related actions... a larger logical grouping we might call an ability... we can then provide a ",[72,73,74],"code",{},"load_ability"," tool, which when called by the agent, adds a related collection of tools to the current session.",[11,77,78],{},[43,79],{"alt":80,"src":81},"GitHub dynamic tools diagram","\u002Fblog\u002Fmcp-isnt-dead-github-dynamic-tools.jpg",[11,83,84],{},"For example, we might decide, while building a GitHub MCP server, that:",[86,87,88,95],"ul",{},[89,90,91,92],"li",{},"reading and editing issues is one ability called ",[72,93,94],{},"GitHub Issues",[89,96,97,98],{},"reading and writing code is a different ability called ",[72,99,100],{},"GitHub Coding",[11,102,103],{},"Now, because of dynamic tool registration, the agent doesn't need context about all of the subtools for every ability bloating its context window - it just needs a search abilities tool and a load abilities tool.",[11,105,106,107,109],{},"With these 2 meta tools as a starting point the agent can load the ",[72,108,94],{}," ability - and immediately use it to create a new issue without knowing anything about pull requests, branching rules, or any other unrelated GitHub concept. Perhaps it can even \"forget\" the issues ability when it's done by starting a new session? Very neat.",[111,112,114],"h2",{"id":113},"going-deeper-mcp-inception","Going Deeper - MCP Inception",[11,116,117],{},[43,118],{"alt":119,"src":120},"Commandable MCP inception screenshot","\u002Fblog\u002Fmcp-isnt-dead-inception.png",[11,122,123],{},"But dynamic tool registration doesn't just stop at reducing context bloat. Oh no. It can actually get much deeper and weirder than that.",[11,125,126],{},"Last weekend I built and shipped a project which stretches the capabilities of MCP further than I've seen them stretched before. It turns dynamic tool registration into a self-generating recursive MCP monster.",[11,128,129,130,135],{},"Meet ",[24,131,134],{"href":132,"rel":133},"https:\u002F\u002Fgithub.com\u002Fcommandable\u002Fcommandable-mcp",[28],"Commandable MCP"," - the MCP server for creating new MCP servers on the fly. MCP inception, if you will.",[11,137,138,139,144],{},"Commandable gives agents ",[34,140,141],{},[37,142,143],{},"tools to create new tools",", usable immediately without compiling any code or restarting any processes. It also - by the way - keeps your credentials secure and encrypted at rest.",[11,146,147],{},"And how does this MCP inception work? With dynamic tool registration of course!",[149,150,152],"h3",{"id":151},"how-commandable-mcp-works","How Commandable MCP Works",[11,154,155,156,161,162,167],{},"We started by building an MCP with ability groupings and registration just like I described above - and then we 10x'd it by adding some more meta tools... namely - ",[34,157,158],{},[37,159,160],{},"create_integration"," and ",[34,163,164],{},[37,165,166],{},"create_tool",".",[11,169,170],{},"For these, we defined a framework for writing tools in JSON which allows us to execute them safely in a sandbox without system access, internet access, or plain string credentials. We wrote a good prompt to tell the agents how to generate this JSON.",[11,172,173],{},"And that's it, away we go.",[149,175,177],{"id":176},"what-can-commandable-mcp-be-used-for","What Can Commandable MCP Be Used For?",[11,179,180],{},"Think about a standard Trello MCP server.",[11,182,183,184,187,188,191,192,191,195,198],{},"It gives an agent something like ",[72,185,186],{},"create_trello_card(boardId, listId, name, description, labelIds, ...)",". However, every time the agent wants to use it, it has to go fishing for IDs, calling ",[72,189,190],{},"get_boards",", ",[72,193,194],{},"get_lists",[72,196,197],{},"get_labels"," - just to find the right place to add the card - and then ignore tons of optional parameters on the create tool itself.",[11,200,201,202,205],{},"Imagine instead, the agent inspects your actual Trello account and generates ",[72,203,204],{},"add_bug_to_sprint(title, priority)"," - a tool that already knows your board, your list, your labels. And now it can use that tool whenever it needs to add a bug without reinventing the wheel.",[11,207,208],{},"Commandable lets agents build targeted tools for repeatable actions they actually use instead of long lists of generic tools from a standardised MCP or API.",[149,210,212],{"id":211},"so-is-mcp-dead","So, Is MCP Dead?",[11,214,215],{},"Not now. Not yet.",[11,217,218],{},"Watch - nay, marvel - at the video below as Claude Code, armed with just our boring old MCP-compliant server, levels itself up into some kind of self-evolving AGI Frankenstein... or at the very least... a helpful assistant that generates some tools for us - thanks Claude!",[220,221,225,226,231],"video",{"controls":222,"playsInline":222,"preload":223,"style":224},true,"metadata","width: 100%; border-radius: 16px; margin: 1rem 0;","\n  ",[227,228],"source",{"src":229,"type":230},"\u002Fblog\u002Fmcp-isnt-dead-demo.mp4","video\u002Fmp4","\n  Your browser does not support the video tag.\n",[11,233,234],{},[34,235,236],{},[37,237,238],{},"MCP LIVES",{"title":240,"searchDepth":241,"depth":241,"links":242},"",2,[243],{"id":113,"depth":241,"text":114,"children":244},[245,247,248],{"id":151,"depth":246,"text":152},3,{"id":176,"depth":246,"text":177},{"id":211,"depth":246,"text":212},"MCP","2026-03-17","Everyone and their gran are saying MCP is dead. I built MCP inception to prove that it's not.","md","\u002Fblog\u002Fmcp-isnt-dead-banner.png","Cover image for the Commandable MCP post.",{},"\u002Fblog\u002Fmcp-isnt-dead",{"title":5,"description":258},"Everyone and their gran are saying MCP is dead. I built MCP inception to prove that it's not...","blog\u002Fmcp-isnt-dead",[249,261,262,134],"Claude Code","Dynamic Tools","wlK7SaeoDz9gJ75gi-OKwlpEByUUuLKSL-RvT7zFoDo",[265],{"id":4,"title":5,"author":6,"body":266,"category":249,"date":250,"description":251,"extension":252,"image":253,"imageAlt":254,"meta":411,"navigation":222,"ogImage":253,"path":256,"published":222,"seo":412,"stem":259,"tags":413,"__hash__":263},{"type":8,"value":267,"toc":404},[268,270,272,274,279,285,289,291,301,303,307,311,313,323,325,329,331,335,337,339,344,350,352,354,364,366,368,370,372,382,386,388,390,392,394,398],[11,269,13],{},[11,271,16],{},[11,273,19],{},[11,275,22,276,30],{},[24,277,29],{"href":26,"rel":278},[28],[11,280,281],{},[34,282,283],{},[37,284,39],{},[11,286,287],{},[43,288],{"alt":45,"src":46},[11,290,49],{},[11,292,52,293,58,297,64],{},[34,294,295],{},[37,296,57],{},[34,298,299],{},[37,300,63],{},[11,302,67],{},[11,304,70,305,75],{},[72,306,74],{},[11,308,309],{},[43,310],{"alt":80,"src":81},[11,312,84],{},[86,314,315,319],{},[89,316,91,317],{},[72,318,94],{},[89,320,97,321],{},[72,322,100],{},[11,324,103],{},[11,326,106,327,109],{},[72,328,94],{},[111,330,114],{"id":113},[11,332,333],{},[43,334],{"alt":119,"src":120},[11,336,123],{},[11,338,126],{},[11,340,129,341,135],{},[24,342,134],{"href":132,"rel":343},[28],[11,345,138,346,144],{},[34,347,348],{},[37,349,143],{},[11,351,147],{},[149,353,152],{"id":151},[11,355,155,356,161,360,167],{},[34,357,358],{},[37,359,160],{},[34,361,362],{},[37,363,166],{},[11,365,170],{},[11,367,173],{},[149,369,177],{"id":176},[11,371,180],{},[11,373,183,374,187,376,191,378,191,380,198],{},[72,375,186],{},[72,377,190],{},[72,379,194],{},[72,381,197],{},[11,383,201,384,205],{},[72,385,204],{},[11,387,208],{},[149,389,212],{"id":211},[11,391,215],{},[11,393,218],{},[220,395,225,396,231],{"controls":222,"playsInline":222,"preload":223,"style":224},[227,397],{"src":229,"type":230},[11,399,400],{},[34,401,402],{},[37,403,238],{},{"title":240,"searchDepth":241,"depth":241,"links":405},[406],{"id":113,"depth":241,"text":114,"children":407},[408,409,410],{"id":151,"depth":246,"text":152},{"id":176,"depth":246,"text":177},{"id":211,"depth":246,"text":212},{},{"title":5,"description":258},[249,261,262,134],1778141839598]