<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jun Han</title>
    <description>The latest articles on Forem by Jun Han (@formulahendry).</description>
    <link>https://forem.com/formulahendry</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F165772%2Fa45c938b-de3a-4d74-9e06-db4c46bf99d2.jpeg</url>
      <title>Forem: Jun Han</title>
      <link>https://forem.com/formulahendry</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/formulahendry"/>
    <language>en</language>
    <item>
      <title>OpenClaw is old? Run Hermes Agent in VS Code through ACP (Agent Client Protocol) now!</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Sun, 19 Apr 2026 08:49:21 +0000</pubDate>
      <link>https://forem.com/formulahendry/openclaw-is-old-run-hermes-agent-in-vs-code-through-acp-agent-client-protocol-now-2721</link>
      <guid>https://forem.com/formulahendry/openclaw-is-old-run-hermes-agent-in-vs-code-through-acp-agent-client-protocol-now-2721</guid>
      <description>&lt;p&gt;In recent weeks, the Hermes Agent becomes much populor in Agent world.&lt;/p&gt;

&lt;p&gt;Several users asked me about whether my &lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.acp-client" rel="noopener noreferrer"&gt;VS Code ACP Client extension&lt;/a&gt; could support Hermes Agent?&lt;/p&gt;

&lt;p&gt;So in this weekend, I have added support for Hermes Agent!&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.amazonaws.com%2Fuploads%2Farticles%2F0inlrjh02mt0p6cqqqws.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.amazonaws.com%2Fuploads%2Farticles%2F0inlrjh02mt0p6cqqqws.png" alt="Hermes Agent in VS Code" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please note that, before you could run Hermes Agent in VS Code, install Hermes Agent via the &lt;a href="https://hermes-agent.nousresearch.com/docs/getting-started/quickstart" rel="noopener noreferrer"&gt;Hermes Quickstart&lt;/a&gt; (Linux/macOS/WSL2 only — Windows requires &lt;a href="https://learn.microsoft.com/en-us/windows/wsl/install" rel="noopener noreferrer"&gt;WSL2&lt;/a&gt;). Make sure &lt;code&gt;hermes&lt;/code&gt; is on your &lt;code&gt;PATH&lt;/code&gt; and launch VS Code from the same shell/venv. Configure credentials with &lt;code&gt;hermes model&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you are a Windows user, you need to connect to the Hermes Agent in WSL through the WSL VS Code extension:&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.amazonaws.com%2Fuploads%2Farticles%2F5ucehioppt4779rg5a1b.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.amazonaws.com%2Fuploads%2Farticles%2F5ucehioppt4779rg5a1b.png" alt="WSL VS Code extension" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Actually, I've quietly developed three different ACP Clients that can suit different user groups!&lt;/p&gt;

&lt;p&gt;If you're a VS Code user, try the ​ACP Client extension:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/vscode-acp" rel="noopener noreferrer"&gt;https://github.com/formulahendry/vscode-acp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want a lightweight ACP Desktop interface on Windows/macOS/Linux, check out the cross-platform ​ACP UI:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/acp-ui" rel="noopener noreferrer"&gt;https://github.com/formulahendry/acp-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to connect to an Agent from your phone via WeChat (iOS or Android), go for ​WeChat ACP:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/wechat-acp" rel="noopener noreferrer"&gt;https://github.com/formulahendry/wechat-acp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s something for everyone!&lt;/p&gt;

&lt;p&gt;Connect to any Agent, anytime, anywhere — effortlessly.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>vscode</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Connect WeChat to Claude, Codex, Copilot, Qwen, Gemini, OpenCode through ACP (Agent Client Protocol)</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Tue, 24 Mar 2026 01:32:13 +0000</pubDate>
      <link>https://forem.com/formulahendry/connect-wechat-to-claude-codex-copilot-qwen-gemini-opencode-through-acp-agent-client-protocol-3e0e</link>
      <guid>https://forem.com/formulahendry/connect-wechat-to-claude-codex-copilot-qwen-gemini-opencode-through-acp-agent-client-protocol-3e0e</guid>
      <description>&lt;p&gt;Recently, WeChat officially announced support for &lt;strong&gt;OpenClaw&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I dug into the source code. Turns out the backend is built on the &lt;strong&gt;iLink API&lt;/strong&gt; for messaging.&lt;br&gt;&lt;br&gt;
The endpoint is &lt;strong&gt;ilinkai.weixin.qq.com&lt;/strong&gt;, and it uses a REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I build a WeChat Bridge that connects to any ACP agent?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started hacking immediately last night.  &lt;/p&gt;

&lt;p&gt;Here it is!&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 Release: &lt;code&gt;wechat-acp&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/wechat-acp" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/wechat-acp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; wechat-acp@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; copilot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scan the QR code with WeChat, and you can control &lt;strong&gt;Copilot CLI&lt;/strong&gt; directly from WeChat.&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.amazonaws.com%2Fuploads%2Farticles%2Flc0mx3iyah7su2itoavo.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Flc0mx3iyah7su2itoavo.jpg" alt=" " width="800" height="1228"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;It also ships with other mainstream agents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; wechat-acp@latest agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or start any custom ACP agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; wechat-acp@latest &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="s2"&gt;"npx my-agent --acp"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code is fully open-source:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/formulahendry/wechat-acp" rel="noopener noreferrer"&gt;https://github.com/formulahendry/wechat-acp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to try it out or just take a look!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>githubcopilot</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Run OpenClaw in VS Code through ACP (Agent Client Protocol)</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Sun, 01 Mar 2026 09:32:57 +0000</pubDate>
      <link>https://forem.com/formulahendry/run-openclaw-in-vs-code-through-acp-agent-client-protocol-4amo</link>
      <guid>https://forem.com/formulahendry/run-openclaw-in-vs-code-through-acp-agent-client-protocol-4amo</guid>
      <description>&lt;p&gt;Just a few days ago, OpenClaw received a significant update.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenClaw 2026.2.26 Update Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ACP Agents as first-class runtimes&lt;/li&gt;
&lt;li&gt;Android support&lt;/li&gt;
&lt;li&gt;Major security fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The big news is that OpenClaw has elevated &lt;strong&gt;ACP Agents to first-class runtimes&lt;/strong&gt;. This means OpenClaw can now function as an ACP Client, connecting to any ACP Agent.&lt;/p&gt;

&lt;p&gt;Interestingly, this capability isn't entirely new. Back in January, OpenClaw itself could already act as an ACP Agent, allowing it to be connected by any other ACP Client.&lt;/p&gt;

&lt;p&gt;Today, I had a thought: wouldn't it be even more convenient to connect to OpenClaw directly from &lt;strong&gt;VS Code&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;So, I immediately updated my &lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.acp-client" rel="noopener noreferrer"&gt;VS Code ACP Client extension&lt;/a&gt;&lt;/strong&gt; to add support for OpenClaw!&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.amazonaws.com%2Fuploads%2Farticles%2Fto4ntmxmgbabul5x30rp.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.amazonaws.com%2Fuploads%2Farticles%2Fto4ntmxmgbabul5x30rp.png" alt="Run OpenClaw in VS Code" width="800" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Compatibility Note
&lt;/h2&gt;

&lt;p&gt;The latest version of OpenClaw as an ACP Agent seems to have some bugs. I found that using &lt;strong&gt;OpenClaw v2026.1.30&lt;/strong&gt; works flawlessly, with smooth, responsive operation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; openclaw@2026.1.30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;To make OpenClaw run in VS Code, you need to run &lt;code&gt;openclaw onboard&lt;/code&gt; in your terminal to setup the OpenClaw.&lt;/p&gt;

&lt;p&gt;More details: &lt;a href="https://docs.openclaw.ai/start/onboarding-overview" rel="noopener noreferrer"&gt;https://docs.openclaw.ai/start/onboarding-overview&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported Agents
&lt;/h2&gt;

&lt;p&gt;The ACP Client extension currently supports nine major Agents by default:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Claude Code
&lt;/li&gt;
&lt;li&gt;Gemini CLI&lt;/li&gt;
&lt;li&gt;Qwen Code&lt;/li&gt;
&lt;li&gt;OpenCode&lt;/li&gt;
&lt;li&gt;Codex CLI&lt;/li&gt;
&lt;li&gt;Qoder CLI&lt;/li&gt;
&lt;li&gt;Auggie CLI&lt;/li&gt;
&lt;li&gt;OpenClaw&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also configure it to connect to additional ACP Agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;Both my two projects are fully open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VS Code ACP Client Extension:&lt;/strong&gt; &lt;a href="https://github.com/formulahendry/vscode-acp" rel="noopener noreferrer"&gt;GitHub Link&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACP UI:&lt;/strong&gt; &lt;a href="https://github.com/formulahendry/acp-ui" rel="noopener noreferrer"&gt;GitHub Link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give it a try and let me know your experience! The integration brings us one step closer to seamless AI assistant workflows within our development environment.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vscode</category>
      <category>typescript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>VS Code ACP Client extension: conect to Claude, Gemini, Codex, OpenCode, Qwen Code and so on</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Thu, 12 Feb 2026 03:04:41 +0000</pubDate>
      <link>https://forem.com/formulahendry/vs-code-acp-client-extension-conect-to-claude-gemini-codex-opencode-qwen-code-and-so-on-3552</link>
      <guid>https://forem.com/formulahendry/vs-code-acp-client-extension-conect-to-claude-gemini-codex-opencode-qwen-code-and-so-on-3552</guid>
      <description>&lt;p&gt;The Agent Client Protocol (ACP) standardizes communication between code editors/IDEs and coding agents.&lt;/p&gt;

&lt;p&gt;Similar to how the Language Server Protocol (LSP) standardized language server integration. Agents that implement ACP work with any compatible editor. Editors that support ACP gain access to the entire ecosystem of ACP-compatible agents. &lt;/p&gt;

&lt;p&gt;Last month, I used Tauri to build a modern, cross-platform desktop client for the Agent Client Protocol (ACP):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/acp-ui" rel="noopener noreferrer"&gt;https://github.com/formulahendry/acp-ui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, I feel that it would be much useful if we could use VS Code as an ACP Client, leveraging the power of VS Code File System APIs and Terminal APIs, to provide native coding experiece.&lt;/p&gt;

&lt;p&gt;Thus, I build an ACP Client extension for VS Code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/vscode-acp" rel="noopener noreferrer"&gt;https://github.com/formulahendry/vscode-acp&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Agent Support&lt;/strong&gt;: Connect to 8 pre-configured ACP agents or add your own&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single-Agent Focus&lt;/strong&gt;: One agent active at a time — seamlessly switch between agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Chat&lt;/strong&gt;: Built-in chat panel with Markdown rendering, inline tool call display, and collapsible tool sections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mode &amp;amp; Model Picker&lt;/strong&gt;: Switch agent modes and models directly from the chat toolbar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File System Integration&lt;/strong&gt;: Agents can read and write files in your workspace&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal Execution&lt;/strong&gt;: Agents can run commands with terminal output display&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission Management&lt;/strong&gt;: Configurable auto-approve policies for agent actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol Traffic Logging&lt;/strong&gt;: Inspect all ACP JSON-RPC messages with request/response/notification labels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Registry&lt;/strong&gt;: Browse and discover available ACP agents&lt;/li&gt;
&lt;/ul&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.amazonaws.com%2Fuploads%2Farticles%2F7irhfej3f5btfa835w4a.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.amazonaws.com%2Fuploads%2Farticles%2F7irhfej3f5btfa835w4a.png" alt="VS Code ACP Client extension" width="800" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Out of box, you could connect to GitHub Copilot, Claude Code, Gemini CLI, Qwen Code, OpenCode, Codex CLI, Qoder CLI and Auggie CLI.&lt;/p&gt;

&lt;p&gt;In addition, you could easily config to connect to any ACP-compatible AI coding agent directly from VS Code.&lt;/p&gt;

&lt;p&gt;The repo is fully open-source: &lt;a href="https://github.com/formulahendry/vscode-acp" rel="noopener noreferrer"&gt;https://github.com/formulahendry/vscode-acp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Welcome to install and have a try!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.acp-client" rel="noopener noreferrer"&gt;Visual Studio Code Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vscode.dev/redirect?url=vscode%3Aextension%2Fformulahendry.acp-client" rel="noopener noreferrer"&gt;Open in VS Code&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://open-vsx.org/extension/formulahendry/acp-client" rel="noopener noreferrer"&gt;Open VSX Marketplace&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vscode</category>
      <category>ai</category>
      <category>githubcopilot</category>
      <category>openai</category>
    </item>
    <item>
      <title>Goodbye, Vibe Coding! Hello, Spec-Driven Development MCP Server!</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Tue, 29 Jul 2025 11:54:32 +0000</pubDate>
      <link>https://forem.com/formulahendry/goodbye-vibe-coding-hello-spec-driven-development-mcp-server-2m17</link>
      <guid>https://forem.com/formulahendry/goodbye-vibe-coding-hello-spec-driven-development-mcp-server-2m17</guid>
      <description>&lt;p&gt;Recently, we can see a shift from Vibe Coding to Spec Driven and Context Engineering. The pursuit isn't just about fast PoCs, but also about stable Production Readiness.&lt;/p&gt;

&lt;p&gt;I believe many of us have had similar experiences. Vibe Coding was very fast when building a PoC project. However, as the project complexity increased, various problems emerged:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The code generated by rapid iteration lacks sufficient documentation, unit testing, or architectural constraints, which can easily lead to technical debt.&lt;/li&gt;
&lt;li&gt;Developers may not fully understand the generated code, and face great difficulties when debugging, modifying or extending the functionality, making it difficult to maintain and expand.&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The emergence of Spec-Driven Development can solve the above problems well.&lt;/p&gt;

&lt;p&gt;So, what is the difference between the two?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vibe Coding: &lt;strong&gt;Prompt → Code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Spec-Driven Development: &lt;strong&gt;Prompt → Requirements → Design → Tasks → Code&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By prioritizing requirements documentation, system design, and task lists, we ensure that code logic is clear and aligned with business goals. This improves project maintainability and reduces subsequent technical debt. This is also helpful for team collaboration on large, complex projects!&lt;/p&gt;

&lt;p&gt;How do we use Spec-Driven Development in our daily development?&lt;/p&gt;

&lt;p&gt;So, I developed the Spec-Driven Development MCP Server:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/mcp-server-spec-driven-development" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/mcp-server-spec-driven-development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The current v0.1 version provides three predefined prompts:&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%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr104Y1EI9UmudpumC7JVTOfdkJjexUbhuLb1LCNWI7seSZrp0R2Ab66A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3D4h1ux9r2%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" 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%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr104Y1EI9UmudpumC7JVTOfdkJjexUbhuLb1LCNWI7seSZrp0R2Ab66A%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3D4h1ux9r2%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" alt="prompts list" width="741" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In VS Code GitHub Copilot, you can use /mcp to trigger it:&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%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr1CWJWXJWnL800uWj4sZGOIMKaphTLtulGzibyMbHZtjK8cSuxojTrzEg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3Doxes8cki%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" 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%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr1CWJWXJWnL800uWj4sZGOIMKaphTLtulGzibyMbHZtjK8cSuxojTrzEg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3Doxes8cki%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" alt="trigger prompts" width="590" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Take developing a Vue.js TODO App as an example, it can be done in a few minutes!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate requirements document (requirements.md) using &lt;code&gt;generate-requirements&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Generate system design document (design.md) using &lt;code&gt;generate-design-from-requirements&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Generate code using &lt;code&gt;generate-code-from-design&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finally, it is running!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr1oKwicxUL8ibBnVjgnK8d0uicKpxDUAad4TdbMEiaesc7uHCTAUOaUaIP1w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3Doftg41fx%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" 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%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FSMMjaDt01maLoU6oNmfTyfsf2g4w9Rr1oKwicxUL8ibBnVjgnK8d0uicKpxDUAad4TdbMEiaesc7uHCTAUOaUaIP1w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg%26randomid%3Doftg41fx%26tp%3Dwebp%26wxfrom%3D5%26wx_lazy%3D1" alt="Vue.js TODO App" width="865" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code is completely open source, welcome to star:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/mcp-server-spec-driven-development" rel="noopener noreferrer"&gt;https://github.com/formulahendry/mcp-server-spec-driven-development&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>vscode</category>
      <category>vibecoding</category>
      <category>node</category>
    </item>
    <item>
      <title>Bundle MCP Server into VS Code extension</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Thu, 01 May 2025 02:06:48 +0000</pubDate>
      <link>https://forem.com/formulahendry/bundle-mcp-server-into-vs-code-extension-3lii</link>
      <guid>https://forem.com/formulahendry/bundle-mcp-server-into-vs-code-extension-3lii</guid>
      <description>&lt;p&gt;If you are building MCP Server with Node.js, then you could bundle it into VS Code extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;p&gt;You would ask why we need to do this?&lt;/p&gt;

&lt;p&gt;There would be 3 benefits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Zero setup for end users to install MCP Server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No extra toolchain is needed for users to install. User do not even need to install Node.js, since the MCP Server is running as part of VS Code extension in &lt;code&gt;Extension Host&lt;/code&gt; process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Total bundle size is small. In my &lt;code&gt;Code Runner MCP Server&lt;/code&gt; extension, just 4 MB size in total.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;Just 3 steps are needed!.&lt;/p&gt;

&lt;p&gt;1) In your Node.js MCP Server, expose an API to start as Streamable Http MCP Server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;startMcpServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Transport&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;HttpServerOptions&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;McpServerEndpoint&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stdio&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;startStdioMcpServer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;transport&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;startStreamableHttpMcpServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Invalid transport. Must be either "stdio" or "http"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) In your VS Code extension, reference your MCP Server npm and start Streamable Http MCP Server, then you will get a localhost MCP Server URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;startMcpServer&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp-server-code-runner&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;startHttpMcpServer&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;startMcpServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3098&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) In your VS Code extension, update the endpoint of Streamable HTTP MCP Server into VS Code settings.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;updateMcpUrlToVsCodeSettings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mcpUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;vscode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;workspace&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getConfiguration&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mcpServers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp.servers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;
    &lt;span class="nx"&gt;mcpServers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;code-runner-streamable-http-mcp-server&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;mcpUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp.servers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mcpServers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;vscode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ConfigurationTarget&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Global&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check out the full source code here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP Server: &lt;a href="https://github.com/formulahendry/mcp-server-code-runner" rel="noopener noreferrer"&gt;https://github.com/formulahendry/mcp-server-code-runner&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;VS Code extension: &lt;a href="https://github.com/formulahendry/vscode-code-runner-mcp-server" rel="noopener noreferrer"&gt;https://github.com/formulahendry/vscode-code-runner-mcp-server&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And welcome to try the &lt;code&gt;Code Runner MCP Server&lt;/code&gt; VS Code extension directly: &lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner-mcp-server" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner-mcp-server&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>vscode</category>
      <category>node</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Code Runner MCP Server is coming, supports 39 Programming Languages!</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Fri, 28 Mar 2025 09:30:36 +0000</pubDate>
      <link>https://forem.com/formulahendry/code-runner-mcp-server-is-coming-supports-39-programming-languages-3gjj</link>
      <guid>https://forem.com/formulahendry/code-runner-mcp-server-is-coming-supports-39-programming-languages-3gjj</guid>
      <description>&lt;p&gt;You may know that I developed a Code Runner VS Code extension with over 70 million downloads: &lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, if we take the code execution feature of Code Runner and turn it into an MCP Server, wouldn't that be super powerful?&lt;/p&gt;

&lt;p&gt;On night, I decided to go for it!&lt;/p&gt;

&lt;p&gt;Design, develop, debug, test, and release — all in one go!&lt;/p&gt;

&lt;p&gt;I released the &lt;strong&gt;Code Runner MCP Server&lt;/strong&gt;:&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/mcp-server-code-runner" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/mcp-server-code-runner&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522mcp-server-code-runner%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522mcp-server-code-runner%2540latest%2522%255D%257D" rel="noopener noreferrer"&gt;Install in VS Code&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522mcp-server-code-runner%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522mcp-server-code-runner%2540latest%2522%255D%257D" rel="noopener noreferrer"&gt;Install in VS Code Insiders&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because it supports running multiple programming languages, you can even use mainstream languages like Python or JavaScript to interact with the Code Runner MCP Server, making it a flexible and powerful &lt;strong&gt;Computer Use&lt;/strong&gt; tool!&lt;br&gt;&lt;br&gt;
This tool can do anything!&lt;/p&gt;

&lt;p&gt;For example, you can query the CPU information of the current OS:&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%2Fpic4.zhimg.com%2Fv2-cf0745b98588a7ffa213a9ab2ffe2b4b_1440w.jpg" 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%2Fpic4.zhimg.com%2Fv2-cf0745b98588a7ffa213a9ab2ffe2b4b_1440w.jpg" alt="CPU information" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or check the latest MSFT stock price:&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%2Fpic3.zhimg.com%2Fv2-5451fa6aacb689909238aac0b2d32b70_1440w.jpg" 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%2Fpic3.zhimg.com%2Fv2-5451fa6aacb689909238aac0b2d32b70_1440w.jpg" alt="MSFT stock price" width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or take a screenshot of the current window and save it locally:&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%2Fpica.zhimg.com%2Fv2-7772ed36022fb0b12ee0b2a649f984b8_1440w.jpg" 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%2Fpica.zhimg.com%2Fv2-7772ed36022fb0b12ee0b2a649f984b8_1440w.jpg" alt="take a screenshot" width="588" height="958"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the examples above, when a pip package isn't installed, the &lt;strong&gt;GH Copilot Agent&lt;/strong&gt; can even help install it automatically, completing the screenshot task in the end!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple, but it just works!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Anything that Python or JavaScript can do, the Code Runner MCP Server can do too!&lt;/p&gt;

&lt;p&gt;You can use the Code Runner MCP Server on any client that supports the MCP protocol: VS Code, Cursor, Windsurf, Claude Desktop, etc. (Note: VS Code needs to be the latest Insider version.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported Programming Languages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Perl&lt;/li&gt;
&lt;li&gt;Perl 6&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Lua&lt;/li&gt;
&lt;li&gt;Groovy&lt;/li&gt;
&lt;li&gt;PowerShell&lt;/li&gt;
&lt;li&gt;BAT/CMD&lt;/li&gt;
&lt;li&gt;BASH/SH&lt;/li&gt;
&lt;li&gt;F# Script&lt;/li&gt;
&lt;li&gt;C# Script&lt;/li&gt;
&lt;li&gt;VBScript&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;CoffeeScript&lt;/li&gt;
&lt;li&gt;Scala&lt;/li&gt;
&lt;li&gt;Swift&lt;/li&gt;
&lt;li&gt;Julia&lt;/li&gt;
&lt;li&gt;Crystal&lt;/li&gt;
&lt;li&gt;OCaml Script&lt;/li&gt;
&lt;li&gt;R&lt;/li&gt;
&lt;li&gt;AppleScript&lt;/li&gt;
&lt;li&gt;Elixir&lt;/li&gt;
&lt;li&gt;Clojure&lt;/li&gt;
&lt;li&gt;Racket&lt;/li&gt;
&lt;li&gt;Scheme&lt;/li&gt;
&lt;li&gt;AutoHotkey&lt;/li&gt;
&lt;li&gt;AutoIt&lt;/li&gt;
&lt;li&gt;Kotlin Script&lt;/li&gt;
&lt;li&gt;Dart&lt;/li&gt;
&lt;li&gt;Haskell&lt;/li&gt;
&lt;li&gt;Ni&lt;/li&gt;
&lt;li&gt;Lisp&lt;/li&gt;
&lt;li&gt;Kit&lt;/li&gt;
&lt;li&gt;V&lt;/li&gt;
&lt;li&gt;SCSS&lt;/li&gt;
&lt;li&gt;Sass&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, the Code Runner MCP Server only supports &lt;strong&gt;stdio&lt;/strong&gt;. In the future, after supporting &lt;strong&gt;SSE&lt;/strong&gt;, it could even run remotely!&lt;/p&gt;

&lt;p&gt;Let me know if you have any feedback!&lt;/p&gt;

&lt;p&gt;Last but not least, it is fully open source:&lt;br&gt;
&lt;a href="https://github.com/formulahendry/mcp-server-code-runner/" rel="noopener noreferrer"&gt;https://github.com/formulahendry/mcp-server-code-runner/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>ai</category>
      <category>python</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Create your own MCP Server from scratch!</title>
      <dc:creator>Jun Han</dc:creator>
      <pubDate>Wed, 26 Mar 2025 10:51:14 +0000</pubDate>
      <link>https://forem.com/formulahendry/create-your-own-mcp-server-from-scratch-38k6</link>
      <guid>https://forem.com/formulahendry/create-your-own-mcp-server-from-scratch-38k6</guid>
      <description>&lt;p&gt;Recently, MCP (Model Context Protocol) has been gaining popularity in the field of AI development!&lt;/p&gt;

&lt;p&gt;A few days ago, I also developed a Code Runner MCP Server:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/mcp-server-code-runner" rel="noopener noreferrer"&gt;https://github.com/formulahendry/mcp-server-code-runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It supports running multiple programming languages: &lt;strong&gt;JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, C# Script, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Clojure, Racket, Scheme, AutoHotkey, AutoIt, Kotlin Script, Dart, Haskell, Ni, Lisp, Kit, V, SCSS, Sass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today, I’ll share my experience of developing the MCP Server and some pitfalls I encountered along the way.&lt;/p&gt;

&lt;p&gt;Using Node.js as an example, let's see how we could develop your own MCP Server from scratch!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Install Node.js
&lt;/h3&gt;

&lt;p&gt;Visit &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;https://nodejs.org/en&lt;/a&gt; and install the LTS version of Node.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Install the Scaffolding Tool
&lt;/h3&gt;

&lt;p&gt;Run the following command in the terminal to install the Yeoman Generator for MCP Server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; yo generator-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Create an MCP Server Project
&lt;/h3&gt;

&lt;p&gt;Run the following command in the terminal to create your MCP Server project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yo mcp &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'Weather MCP Server'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Implement the Code Logic
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://www.npmjs.com/package/generator-mcp" rel="noopener noreferrer"&gt;generator-mcp&lt;/a&gt; has already generated and installed all the necessary code frameworks and dependencies.&lt;/p&gt;

&lt;p&gt;You can modify the code as needed or directly debug and test using the existing code.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Debug/Testing
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://www.npmjs.com/package/generator-mcp" rel="noopener noreferrer"&gt;generator-mcp&lt;/a&gt; has already configured the debug files for VS Code: &lt;code&gt;launch.json&lt;/code&gt; and &lt;code&gt;tasks.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Open the project in VS Code and press &lt;strong&gt;F5&lt;/strong&gt; to start debugging with just one click!&lt;/p&gt;

&lt;p&gt;Wait a moment, and once the MCP Inspector opens automatically in your browser, you can start testing!&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.amazonaws.com%2Fuploads%2Farticles%2Fojg9tyo62sk1cjvqiow7.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.amazonaws.com%2Fuploads%2Farticles%2Fojg9tyo62sk1cjvqiow7.png" alt="MCP Inspector" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Running
&lt;/h3&gt;

&lt;p&gt;Additionally, you can test your MCP Server in other clients that support MCP.&lt;/p&gt;

&lt;p&gt;The generator-mcp has already created the &lt;code&gt;.vscode\mcp.json&lt;/code&gt; file by default, which defines how the MCP Server runs in VS Code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You need to download the latest version of &lt;strong&gt;VS Code Insiders&lt;/strong&gt; from &lt;a href="https://code.visualstudio.com/insiders/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/insiders/&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you’ve installed the latest version of VS Code Insiders, click the &lt;strong&gt;“start”&lt;/strong&gt; button, and your MCP Server will be called in the Agent Mode of VS Code Insiders!&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.amazonaws.com%2Fuploads%2Farticles%2Fy9m64lcfykhergt20ub8.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.amazonaws.com%2Fuploads%2Farticles%2Fy9m64lcfykhergt20ub8.png" alt="mcp.json" width="800" height="477"&gt;&lt;/a&gt;&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.amazonaws.com%2Fuploads%2Farticles%2F4bhzzp21sz735ne9irfp.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.amazonaws.com%2Fuploads%2Farticles%2F4bhzzp21sz735ne9irfp.png" alt="call MCP Server" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Publishing
&lt;/h3&gt;

&lt;p&gt;After completing the testing, you can publish your MCP Server to the npm registry or Docker Hub!&lt;/p&gt;

&lt;p&gt;For details on how to write the Dockerfile, how to configure the MCP Server in clients like VS Code and Claude Desktop, and issues that may occur with npx on Windows, you can refer to the Code Runner MCP Server’s README and source code. It’s fully open-source:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/formulahendry/mcp-server-code-runner" rel="noopener noreferrer"&gt;https://github.com/formulahendry/mcp-server-code-runner&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>node</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
