<?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: Ashtton</title>
    <description>The latest articles on DEV Community by Ashtton (@tony5435945).</description>
    <link>https://dev.to/tony5435945</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%2F4051640%2Fe2bc42c2-5365-47db-a56a-a0a697b5662b.png</url>
      <title>DEV Community: Ashtton</title>
      <link>https://dev.to/tony5435945</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tony5435945"/>
    <language>en</language>
    <item>
      <title>MCP configs: what actually differs between Claude Code and Claude Desktop</title>
      <dc:creator>Ashtton</dc:creator>
      <pubDate>Tue, 28 Jul 2026 16:03:33 +0000</pubDate>
      <link>https://dev.to/tony5435945/mcp-configs-what-actually-differs-between-claude-code-and-claude-desktop-39ba</link>
      <guid>https://dev.to/tony5435945/mcp-configs-what-actually-differs-between-claude-code-and-claude-desktop-39ba</guid>
      <description>&lt;p&gt;I've got 11 MCP servers running in Claude Code right now - GitHub, web&lt;br&gt;
fetch, search, a few local ones. Took way longer to wire up than it should&lt;br&gt;
have. Not because the docs are bad, more because a config can look&lt;br&gt;
completely right and just... not work, and it won't tell you why.&lt;/p&gt;

&lt;p&gt;A few things I wish someone had told me up front.&lt;/p&gt;

&lt;p&gt;Every server talks to you one of two ways. Either it's remote (HTTP) -&lt;br&gt;
something like GitHub's own servers, where your config is basically just&lt;br&gt;
a URL and a one-time login - or it's local (stdio), where your client&lt;br&gt;
actually launches a program on your machine and talks to it over&lt;br&gt;
stdin/stdout. Once that clicks, the rest of the format makes a lot more&lt;br&gt;
sense.&lt;/p&gt;

&lt;p&gt;Claude Code keeps its servers under the &lt;code&gt;mcpServers&lt;/code&gt; key inside&lt;br&gt;
&lt;code&gt;~/.claude.json&lt;/code&gt; (on Windows that's &lt;code&gt;%USERPROFILE%\.claude.json&lt;/code&gt;). That&lt;br&gt;
file has a bunch of other stuff in it too - session cache, feature flags -&lt;br&gt;
so don't replace it, just merge your entry into that one key.&lt;/p&gt;

&lt;p&gt;Claude Desktop does basically the same thing in&lt;br&gt;
&lt;code&gt;claude_desktop_config.json&lt;/code&gt;, same &lt;code&gt;mcpServers&lt;/code&gt; key, same shape for local&lt;br&gt;
servers. Its support for remote/HTTP servers has moved around across&lt;br&gt;
versions though, so if one of those doesn't show as connected, it's&lt;br&gt;
probably a version thing, not your config being wrong.&lt;/p&gt;

&lt;p&gt;Simplest possible example, a server that only needs Node installed:&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="nl"&gt;"sequential-thinking"&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;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"args"&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;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-sequential-thinking"&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;Drop that in either file, restart the client, run &lt;code&gt;/mcp&lt;/code&gt; in Claude Code,&lt;br&gt;
and it should show connected. I actually ran this exact command before&lt;br&gt;
posting, just to double check - no errors, nothing missing.&lt;/p&gt;

&lt;p&gt;The thing that actually cost me time: two of my servers are Python-based&lt;br&gt;
and use &lt;code&gt;uvx&lt;/code&gt; instead of &lt;code&gt;npx&lt;/code&gt;. Same idea, downloads and runs the package,&lt;br&gt;
caches it after - except &lt;code&gt;uv&lt;/code&gt; has to be installed and on PATH first&lt;br&gt;
(&lt;code&gt;pip install uv&lt;/code&gt;), and nothing warns you, the command just silently&lt;br&gt;
doesn't exist. And &lt;code&gt;mcp-server-fetch&lt;/code&gt; specifically needs&lt;br&gt;
&lt;code&gt;PYTHONIOENCODING=utf-8&lt;/code&gt; in its &lt;code&gt;env&lt;/code&gt; block on Windows or it throws a&lt;br&gt;
&lt;code&gt;UnicodeEncodeError&lt;/code&gt; the first time it hits a page with a curly quote or&lt;br&gt;
emoji in it - so, most pages. Set that up front and you never see the&lt;br&gt;
crash.&lt;/p&gt;

&lt;p&gt;Also worth knowing: this isn't only a Claude thing. VS Code does its own&lt;br&gt;
version of this in &lt;code&gt;.vscode/mcp.json&lt;/code&gt; (a &lt;code&gt;servers&lt;/code&gt; key), and Codex uses&lt;br&gt;
&lt;code&gt;.codex/config.toml&lt;/code&gt; with &lt;code&gt;mcp_servers&lt;/code&gt; - TOML instead of JSON. There's a&lt;br&gt;
&lt;a href="https://github.com/modelcontextprotocol/modelcontextprotocol/discussions/2218" rel="noopener noreferrer"&gt;whole discussion thread from the MCP maintainers&lt;br&gt;
themselves&lt;/a&gt;&lt;br&gt;
comparing these. I haven't actually run MCP through VS Code or Codex&lt;br&gt;
myself so I won't pretend to have it solved there, just flagging it's a&lt;br&gt;
real, documented mess if you're juggling more than one client.&lt;/p&gt;

&lt;p&gt;Ended up packaging the Claude Code + Desktop side of this - both config&lt;br&gt;
files, the four servers I run daily, plus the gotchas above - so nobody&lt;br&gt;
else has to lose the afternoon I did. It's $12&lt;br&gt;
&lt;a href="https://payhip.com/b/Vki38" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or $29 if you want the troubleshooting&lt;br&gt;
playbook bundled in too, &lt;a href="https://payhip.com/b/WpO08" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6bp44e896slplw4uzxds.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%2F6bp44e896slplw4uzxds.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
