{"id":208,"date":"2026-06-06T23:32:50","date_gmt":"2026-06-06T23:32:50","guid":{"rendered":"https:\/\/softwareproduction.eu\/?p=208"},"modified":"2026-06-07T01:22:22","modified_gmt":"2026-06-07T01:22:22","slug":"ai-assisted-development-mcp-debug-chatbot-and-the-shared-language-of-the-codebase","status":"publish","type":"post","link":"https:\/\/softwareproduction.eu\/?p=208","title":{"rendered":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Fourteenth in a series about migrating from legacy architectures to a modern Nuxt 4 stack.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Beyond Code Completion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most discussions about AI in development stop at code completion. That is the least interesting use case. In a complex application, the real value comes from <strong>live debugging, architectural reasoning, and automated testing<\/strong> \u2014 tasks that depend on understanding the running system, not just the source code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The core question is simple: how do you give an AI assistant enough context to be useful? The answer is structured interfaces between the application and the AI.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Model Context Protocol (MCP)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MCP is a standard for connecting AI assistants to external tools and data sources. Instead of pasting code into a chat window, the AI connects to MCP servers that expose application internals programmatically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The project integrates MCP at three levels:<\/p>\n\n\n\n<pre><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                    AI Assistant (IDE)                       \u2502\n\u2502                                                            \u2502\n\u2502    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502\n\u2502    \u2502 Application  \u2502  \u2502   Browser    \u2502  \u2502   Node.js    \u2502   \u2502\n\u2502    \u2502 MCP Server   \u2502  \u2502  DevTools    \u2502  \u2502   Debugger   \u2502   \u2502\n\u2502    \u2502              \u2502  \u2502  MCP Server  \u2502  \u2502   MCP Server  \u2502   \u2502\n\u2502    \u2502 \u2022 Env config \u2502  \u2502 \u2022 Navigate   \u2502  \u2502 \u2022 Breakpoints\u2502   \u2502\n\u2502    \u2502 \u2022 Modules    \u2502  \u2502 \u2022 Click      \u2502  \u2502 \u2022 Variables  \u2502   \u2502\n\u2502    \u2502 \u2022 CMS space  \u2502  \u2502 \u2022 Screenshot \u2502  \u2502 \u2022 Call stack \u2502   \u2502\n\u2502    \u2502 \u2022 Auth state \u2502  \u2502 \u2022 Console    \u2502  \u2502 \u2022 Step       \u2502   \u2502\n\u2502    \u2502 \u2022 GraphQL    \u2502  \u2502 \u2022 Network    \u2502  \u2502              \u2502   \u2502\n\u2502    \u2502   endpoints  \u2502  \u2502 \u2022 Perf trace \u2502  \u2502              \u2502   \u2502\n\u2502    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502\n\u2502           \u2502                 \u2502                 \u2502            \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n            \u25bc                 \u25bc                 \u25bc\n     Nuxt Dev Server      Chrome Browser    Node.js Process<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Level 1: Application MCP Server<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A Nuxt module exposes the dev server&#8217;s context through an SSE endpoint. The AI assistant can query:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Environment configuration: which API endpoints, which CMS space, which auth provider<\/li>\n<li>Active Nuxt modules: what features are loaded<\/li>\n<li>GraphQL schema introspection: what data is available<\/li>\n<li>Authentication state: who is logged in, what roles they have<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This provides <strong>architectural context<\/strong> \u2014 the AI understands the system before writing or debugging code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Level 2: Browser DevTools MCP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A Chrome DevTools MCP server lets the AI control the browser:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to pages, click elements, fill forms<\/li>\n<li>Take screenshots and snapshots<\/li>\n<li>Inspect console logs and network requests<\/li>\n<li>Start and stop performance traces<\/li>\n<li>Execute JavaScript in the browser context<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This provides <strong>runtime context<\/strong> \u2014 the AI sees what the user sees and interacts as a user would.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Level 3: Node.js Debugger MCP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A debugger MCP server lets the AI attach to the running Nuxt server:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set breakpoints in server handlers and composables<\/li>\n<li>Inspect variable values at breakpoints<\/li>\n<li>Step through code execution<\/li>\n<li>Examine the call stack<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This provides <strong>execution context<\/strong> \u2014 tracing the flow of a request through server-side code.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Debug Chatbot: 30+ Browser-Side Tools<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The three MCP layers cover server-side logic and browser UI. What they do not fully cover is <strong>client-side application state<\/strong> \u2014 Pinia stores, Vue component trees, event bus messages, cookies, GraphQL results. Browser DevTools MCP can see the DOM, but not the Vue reactivity layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>debug-chatbot<\/code> fills that gap with 30+ tools that expose the Vue application&#8217;s internals:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Tool Category<\/th><th>Examples<\/th><th>What It Exposes<\/th><\/tr><\/thead><tbody><tr><td><strong>State<\/strong><\/td><td><code>get-pinia-stores<\/code>, <code>get-pinia-store<\/code><\/td><td>Live reactive store state<\/td><\/tr><tr><td><strong>Components<\/strong><\/td><td><code>get-vue-components<\/code>, <code>get-route-info<\/code><\/td><td>Component tree, current route<\/td><\/tr><tr><td><strong>Browser<\/strong><\/td><td><code>get-console-logs<\/code>, <code>get-cookies<\/code>, <code>get-local-storage<\/code><\/td><td>Browser environment<\/td><\/tr><tr><td><strong>GraphQL<\/strong><\/td><td><code>execute-graphql-query<\/code><\/td><td>Run queries against the live app<\/td><\/tr><tr><td><strong>A\/B Tests<\/strong><\/td><td><code>get-ab-tests<\/code>, <code>set-ab-test<\/code><\/td><td>Read and modify A\/B test state<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A developer can ask the AI assistant: <em>&#8220;The checkout form shows the wrong price on the confirmation page. Debug this.&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The AI then:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Uses Browser DevTools to navigate to the checkout form<\/li>\n<li>Fills the form with test data and submits it<\/li>\n<li>Uses <code>get-pinia-store('shopping-cart')<\/code> to inspect the cart state<\/li>\n<li>Uses <code>execute-graphql-query<\/code> to run the same pricing query the form uses<\/li>\n<li>Compares the query result with the store state<\/li>\n<li>Identifies the discrepancy and suggests a fix<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">No manual debugging, no <code>console.log<\/code>, no breakpoint-and-step ritual.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Shared Language Principle<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI assistants work best when they share a language with the codebase. This project establishes several.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GraphQL as the Universal API Language<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every data interaction \u2014 whether from a human developer, an AI assistant using <code>execute-graphql-query<\/code>, or a generated composable \u2014 uses the same GraphQL schema. The AI knows what data is available because it can introspect the schema.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CMS Content Types as Structured Data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Generated TypeScript types from the CMS schema give the AI a precise understanding of what a Page, Section, or Teaser contains. When asked to add an FAQ section, it knows the exact fields and types.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Module Patterns as Conventions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every module follows the same structure: <code>index.ts<\/code>, <code>runtime\/composables\/<\/code>, <code>runtime\/server\/<\/code>, <code>README.md<\/code>. An AI that has seen one module can navigate all 35+. The consistency helps machines as much as humans.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Design Tokens as a Shared Vocabulary<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The UIKit compose pattern maps to design component properties. Given a design spec, the AI can reason about props and variants because the naming matches between design and code.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">AGENTS.md: Onboarding Document for AI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The project includes a top-level <code>AGENTS.md<\/code> \u2014 an onboarding document written for machine readers:<\/p>\n\n\n\n<pre><code>AGENTS.md contents:\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u2022 Setup commands (yarn dev, yarn build, yarn test)  \u2502\n\u2502 \u2022 Module development conventions                    \u2502\n\u2502 \u2022 Naming patterns (composables, components, routes) \u2502\n\u2502 \u2022 Common pitfalls and their fixes                   \u2502\n\u2502 \u2022 PR checklist items                                \u2502\n\u2502 \u2022 Environment variable documentation                \u2502\n\u2502 \u2022 GraphQL endpoint locations                        \u2502\n\u2502 \u2022 Testing strategies per module type                \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AI assistants read this file on first interaction with the codebase. It provides what a human would get from a team onboarding session, but in a format machines can consume instantly.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Inversion of Control Pattern for MCP Tools<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modules register their own MCP tools without importing the chatbot. The chatbot fires a Nitro hook, and other modules subscribe:<\/p>\n\n\n\n<pre><code>debug-chatbot module:\n  nitroApp.hooks.callHook('mcp:setup', tools)\n  \/\/ tools is an array that modules can push to\n\nshopping-cart module:\n  nitroApp.hooks.hook('mcp:setup', (tools) =&gt; {\n    tools.push({\n      name: 'get-cart-contents',\n      description: 'Returns current shopping cart items',\n      handler: () =&gt; getCartState()\n    })\n  })<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is <strong>inversion of control<\/strong> at the plugin level \u2014 the chatbot does not know about the shopping cart, and the shopping cart does not import the chatbot. They connect through a hook.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Practical AI Debugging Scenarios<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario 1: End-to-End Funnel Testing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&#8220;Test the complete purchase funnel from the homepage to the confirmation page. Report any console errors or visual inconsistencies.&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The AI navigates the funnel, fills forms, clicks buttons, monitors console logs, takes screenshots at each step, and produces a report \u2014 with no human interaction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario 2: A\/B Test Verification<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&#8220;Verify that both variants of the pricing display A\/B test render correctly.&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The AI switches between variants via <code>set-ab-test<\/code>, captures screenshots of both, compares the rendering, and reports the differences.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scenario 3: Performance Investigation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&#8220;The \/products page feels slow. Investigate.&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The AI starts a performance trace, navigates to the page, stops the trace, analyzes the results, checks network requests for slow GraphQL calls, inspects cache hit rates, and identifies the bottleneck.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lessons Learned<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">AI assistants need structured access, not source code dumps<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pasting 1,000 lines of code into a chat window is less effective than five well-designed MCP tools that expose application state. Structured access lets the AI <em>interact<\/em> with the application rather than merely read about it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The shared language investment pays compound returns<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every abstraction that makes the codebase consistent for humans \u2014 GraphQL schemas, module patterns, compose files, TypeScript types \u2014 also makes it legible to AI. Consistency pays dividends in both human and machine productivity.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">AGENTS.md is the most underrated file in a repository<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Explicitly telling AI assistants how the codebase works \u2014 naming conventions, common pitfalls, test strategies \u2014 eliminates the most common AI mistakes: plausible but wrong code that violates project conventions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The debug chatbot is more useful than code generation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Code completion saves minutes per task. An AI debugger that inspects live state, runs queries, navigates the browser, and identifies bugs saves hours per issue. The ROI difference is substantial.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s Next<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Article 15<\/strong>: <em>Load Testing Results \u2014 15\u00d7 Faster, 5\u00d7 More Capacity<\/em> \u2014 The measured proof that architecture decisions produce real outcomes.<\/li>\n<li><strong>Article 16<\/strong>: <em>The Full Picture \u2014 What the New Concept Delivers<\/em> \u2014 Synthesis for decision-makers and architects.<\/li>\n<li><strong>Article 17<\/strong>: <em>The <code>@delegate<\/code> Directive Deep Dive \u2014 Cross-Subgraph Field Resolution<\/em> \u2014 A technical deep dive into the most powerful schema stitching feature.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Munir Husseini is a software architect specializing in full-stack TypeScript, .NET, and cloud-native architectures.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fourteenth in a series about migrating from legacy architectures to a modern Nuxt 4 stack. Beyond Code Completion Most discussions about AI in development stop at code completion. That is the least interesting use case. In a complex application, the real value comes from live debugging, architectural reasoning, and automated testing \u2014 tasks that depend [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":250,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-208","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-generation-and-automation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/softwareproduction.eu\/?p=208\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production\" \/>\n<meta property=\"og:description\" content=\"Fourteenth in a series about migrating from legacy architectures to a modern Nuxt 4 stack. Beyond Code Completion Most discussions about AI in development stop at code completion. That is the least interesting use case. In a complex application, the real value comes from live debugging, architectural reasoning, and automated testing \u2014 tasks that depend [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/softwareproduction.eu\/?p=208\" \/>\n<meta property=\"og:site_name\" content=\"Software Production\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-06T23:32:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-07T01:22:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1880\" \/>\n\t<meta property=\"og:image:height\" content=\"1253\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Munir Husseini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Munir Husseini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208\"},\"author\":{\"name\":\"Munir Husseini\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/person\\\/fec48f54713e1bd117640fb9b748802f\"},\"headline\":\"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase\",\"datePublished\":\"2026-06-06T23:32:50+00:00\",\"dateModified\":\"2026-06-07T01:22:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208\"},\"wordCount\":1134,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ai-assisted-development.jpg\",\"articleSection\":[\"Code Generation and Automation\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208\",\"name\":\"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ai-assisted-development.jpg\",\"datePublished\":\"2026-06-06T23:32:50+00:00\",\"dateModified\":\"2026-06-07T01:22:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/softwareproduction.eu\\\/?p=208\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#primaryimage\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ai-assisted-development.jpg\",\"contentUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ai-assisted-development.jpg\",\"width\":1880,\"height\":1253},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/?p=208#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/softwareproduction.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#website\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/\",\"name\":\"Softwareproduction\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/softwareproduction.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#organization\",\"name\":\"Munir Husseini\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/softwareproduction-logo-32.png\",\"contentUrl\":\"https:\\\/\\\/softwareproduction.eu\\\/wordpress\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/softwareproduction-logo-32.png\",\"width\":32,\"height\":32,\"caption\":\"Munir Husseini\"},\"image\":{\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/softwareproduction.eu\\\/#\\\/schema\\\/person\\\/fec48f54713e1bd117640fb9b748802f\",\"name\":\"Munir Husseini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g\",\"caption\":\"Munir Husseini\"},\"sameAs\":[\"https:\\\/\\\/softwareproduction.eu\\\/\"],\"url\":\"https:\\\/\\\/softwareproduction.eu\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/softwareproduction.eu\/?p=208","og_locale":"en_US","og_type":"article","og_title":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production","og_description":"Fourteenth in a series about migrating from legacy architectures to a modern Nuxt 4 stack. Beyond Code Completion Most discussions about AI in development stop at code completion. That is the least interesting use case. In a complex application, the real value comes from live debugging, architectural reasoning, and automated testing \u2014 tasks that depend [&hellip;]","og_url":"https:\/\/softwareproduction.eu\/?p=208","og_site_name":"Software Production","article_published_time":"2026-06-06T23:32:50+00:00","article_modified_time":"2026-06-07T01:22:22+00:00","og_image":[{"width":1880,"height":1253,"url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","type":"image\/jpeg"}],"author":"Munir Husseini","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Munir Husseini","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/softwareproduction.eu\/?p=208#article","isPartOf":{"@id":"https:\/\/softwareproduction.eu\/?p=208"},"author":{"name":"Munir Husseini","@id":"https:\/\/softwareproduction.eu\/#\/schema\/person\/fec48f54713e1bd117640fb9b748802f"},"headline":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase","datePublished":"2026-06-06T23:32:50+00:00","dateModified":"2026-06-07T01:22:22+00:00","mainEntityOfPage":{"@id":"https:\/\/softwareproduction.eu\/?p=208"},"wordCount":1134,"commentCount":0,"publisher":{"@id":"https:\/\/softwareproduction.eu\/#organization"},"image":{"@id":"https:\/\/softwareproduction.eu\/?p=208#primaryimage"},"thumbnailUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","articleSection":["Code Generation and Automation"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/softwareproduction.eu\/?p=208#respond"]}]},{"@type":"WebPage","@id":"https:\/\/softwareproduction.eu\/?p=208","url":"https:\/\/softwareproduction.eu\/?p=208","name":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase - Software Production","isPartOf":{"@id":"https:\/\/softwareproduction.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/softwareproduction.eu\/?p=208#primaryimage"},"image":{"@id":"https:\/\/softwareproduction.eu\/?p=208#primaryimage"},"thumbnailUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","datePublished":"2026-06-06T23:32:50+00:00","dateModified":"2026-06-07T01:22:22+00:00","breadcrumb":{"@id":"https:\/\/softwareproduction.eu\/?p=208#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/softwareproduction.eu\/?p=208"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareproduction.eu\/?p=208#primaryimage","url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","contentUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","width":1880,"height":1253},{"@type":"BreadcrumbList","@id":"https:\/\/softwareproduction.eu\/?p=208#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/softwareproduction.eu\/"},{"@type":"ListItem","position":2,"name":"AI-Assisted Development \u2014 MCP, Debug Chatbot, and the Shared Language of the Codebase"}]},{"@type":"WebSite","@id":"https:\/\/softwareproduction.eu\/#website","url":"https:\/\/softwareproduction.eu\/","name":"Softwareproduction","description":"","publisher":{"@id":"https:\/\/softwareproduction.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/softwareproduction.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/softwareproduction.eu\/#organization","name":"Munir Husseini","url":"https:\/\/softwareproduction.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/softwareproduction.eu\/#\/schema\/logo\/image\/","url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/05\/softwareproduction-logo-32.png","contentUrl":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/05\/softwareproduction-logo-32.png","width":32,"height":32,"caption":"Munir Husseini"},"image":{"@id":"https:\/\/softwareproduction.eu\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/softwareproduction.eu\/#\/schema\/person\/fec48f54713e1bd117640fb9b748802f","name":"Munir Husseini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b07845732d4d7bddfc43e608ae6662d564a14b35706dfae0c9610071d978f54e?s=96&d=mm&r=g","caption":"Munir Husseini"},"sameAs":["https:\/\/softwareproduction.eu\/"],"url":"https:\/\/softwareproduction.eu\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/softwareproduction.eu\/wordpress\/wp-content\/uploads\/2026\/06\/ai-assisted-development.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=208"}],"version-history":[{"count":1,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/posts\/208\/revisions\/251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=\/wp\/v2\/media\/250"}],"wp:attachment":[{"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/softwareproduction.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}