<?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: PluginStack</title>
    <description>The latest articles on DEV Community by PluginStack (@pluginstackai).</description>
    <link>https://dev.to/pluginstackai</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%2F4243500%2F187a6205-39ba-4676-ab61-9779fb2c6236.png</url>
      <title>DEV Community: PluginStack</title>
      <link>https://dev.to/pluginstackai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pluginstackai"/>
    <language>en</language>
    <item>
      <title>Filesystem MCP server setup: config, tools, Docker and fixes (v2.1)</title>
      <dc:creator>PluginStack</dc:creator>
      <pubDate>Fri, 13 Nov 2026 22:20:14 +0000</pubDate>
      <link>https://dev.to/pluginstackai/filesystem-mcp-server-setup-config-tools-docker-and-fixes-v21-513o</link>
      <guid>https://dev.to/pluginstackai/filesystem-mcp-server-setup-config-tools-docker-and-fixes-v21-513o</guid>
      <description>&lt;h1&gt;
  
  
  How to set up the Filesystem MCP server
&lt;/h1&gt;

&lt;p&gt;Checked against the official docs: Nov 4, 2026&lt;/p&gt;

&lt;p&gt;The Filesystem MCP server (&lt;code&gt;@modelcontextprotocol/server-filesystem&lt;/code&gt;) is the official reference server that lets an AI client read, write, edit, move and search files, but only inside the folders you allow. This guide covers the setup for each client, how the allowed folders work, read-only and Docker setups, what each tool does and the errors people run into. It is based on the server's README and changelog and the npm package, which was at version 2.1.0 (28 October 2026) when checked on 4 November 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick answer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Needs:&lt;/strong&gt; Node.js 24 or newer (since v2.0.0).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command:&lt;/strong&gt; &lt;code&gt;npx -y @modelcontextprotocol/server-filesystem &amp;lt;absolute-path-to-folder&amp;gt;&lt;/code&gt;. Every folder the AI may use goes at the end, as its own argument.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code:&lt;/strong&gt; &lt;code&gt;claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem &amp;lt;absolute-path-to-folder&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows:&lt;/strong&gt; launch it through &lt;code&gt;cmd /c npx ...&lt;/code&gt; in JSON configs, as the README does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read-only:&lt;/strong&gt; use the Docker image with &lt;code&gt;,ro&lt;/code&gt; on the mount, or limit the tools in your client.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before you start
&lt;/h2&gt;

&lt;p&gt;Check your Node version with &lt;code&gt;node --version&lt;/code&gt;. Version 2.0.0 of the server raised the minimum to Node 24, and the README lists Node 24 or later as the requirement when you run it through &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then decide which folders to share. The server can only touch the folders you list and what is inside them, but within those it can create, overwrite and move files. Pick a project folder or a notes folder, not your whole home directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  How allowed folders work
&lt;/h2&gt;

&lt;p&gt;You pass allowed folders as command-line arguments after the package name. The README calls this the recommended method, and it is the only one that works with every protocol version.&lt;/p&gt;

&lt;p&gt;There is an older method called Roots, where the client tells the server which folders to use and replaces the command-line list. It is deprecated as of the 2026-07-28 protocol version and only works with 2025-era clients. Don't rely on it. Two consequences of starting the server with no folders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With a 2025-era client that doesn't support Roots, the server logs the reason, closes the connection and exits with status 1.&lt;/li&gt;
&lt;li&gt;With a 2026-07-28 client, the server starts but answers every tool call with an error saying no directories are allowed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To check what the server thinks it can access, ask the AI to call &lt;code&gt;list_allowed_directories&lt;/code&gt;. A folder you reached through a symlink is listed twice, once as you typed it and once as its real path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set it up in your client
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/projects/my-app

&lt;span class="c"&gt;# more than one folder: add them at the end&lt;/span&gt;
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem ~/projects/my-app ~/notes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything after &lt;code&gt;--&lt;/code&gt; is the command Claude Code runs. Run &lt;code&gt;claude mcp list&lt;/code&gt; or &lt;code&gt;/mcp&lt;/code&gt; to check it connected. More: &lt;a href="https://www.pluginstackai.com/guides/best-mcp-servers-for-claude-code/" rel="noopener noreferrer"&gt;the best MCP servers for Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Desktop
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;Settings → Developer → Edit Config&lt;/strong&gt; and add this to &lt;code&gt;claude_desktop_config.json&lt;/code&gt;, with your own folder paths:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;claude_desktop_config.json&lt;/code&gt; (macOS):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&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="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"&amp;lt;absolute-path-to-Desktop&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"&amp;lt;absolute-path-to-notes&amp;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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quit Claude Desktop fully and reopen it. The full walkthrough, including where the file is on each OS, is in &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-claude-desktop/" rel="noopener noreferrer"&gt;how to add an MCP server to Claude Desktop&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;

&lt;p&gt;On Windows, the README launches &lt;code&gt;npx&lt;/code&gt; through &lt;code&gt;cmd /c&lt;/code&gt;. In JSON, every backslash in a path has to be doubled:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s2"&gt;"/c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"npx"&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="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"C:\\Users\\you\\Documents\\notes"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the client can't start &lt;code&gt;npx&lt;/code&gt; at all, see &lt;a href="https://www.pluginstackai.com/guides/fix-spawn-npx-enoent-windows-mcp/" rel="noopener noreferrer"&gt;fix spawn npx ENOENT on Windows&lt;/a&gt;. Version 2.1.0 fixed a bug on case-insensitive file systems (Windows NTFS, default macOS APFS) where a path that spelled the allowed folder's name in a different letter case was refused.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;Use the same &lt;code&gt;mcpServers&lt;/code&gt; block as Claude Desktop in &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (all projects) or &lt;code&gt;.cursor/mcp.json&lt;/code&gt; (one project). More: &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-cursor/" rel="noopener noreferrer"&gt;how to add an MCP server to Cursor&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  VS Code (GitHub Copilot)
&lt;/h3&gt;

&lt;p&gt;VS Code uses &lt;code&gt;servers&lt;/code&gt; rather than &lt;code&gt;mcpServers&lt;/code&gt;. &lt;code&gt;${workspaceFolder}&lt;/code&gt; gives the server whatever folder you have open:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.vscode/mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&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="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"${workspaceFolder}"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More: &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-vs-code/" rel="noopener noreferrer"&gt;how to add an MCP server to VS Code&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem &lt;span class="nv"&gt;$HOME&lt;/span&gt;/projects
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or edit &lt;code&gt;~/.codex/config.toml&lt;/code&gt; directly. Both are covered in &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-codex-config-toml/" rel="noopener noreferrer"&gt;how to add an MCP server to Codex&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read-only and Docker setups
&lt;/h2&gt;

&lt;p&gt;If you want the AI to look but not touch, there are two ways.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker with read-only mounts.&lt;/strong&gt; The official image is &lt;code&gt;mcp/filesystem&lt;/code&gt;. Each folder is mounted under &lt;code&gt;/projects&lt;/code&gt;, and adding &lt;code&gt;,ro&lt;/code&gt; to a mount makes that folder read-only for the server:&lt;/p&gt;

&lt;p&gt;my-app is writable, reference is read-only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"docker"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s2"&gt;"run"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"-i"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"--rm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"--mount"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"type=bind,src=&amp;lt;absolute-path-to-my-app&amp;gt;,dst=/projects/my-app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"--mount"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"type=bind,src=&amp;lt;absolute-path-to-reference&amp;gt;,dst=/projects/reference,ro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"mcp/filesystem"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s2"&gt;"/projects"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the container the AI sees paths like &lt;code&gt;/projects/my-app/README.md&lt;/code&gt;, not your real paths. Docker has to be running before the client starts the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only allow the read tools.&lt;/strong&gt; If your client lets you switch off individual tools, you can leave only the read tools on. The read-only ones are &lt;code&gt;read_text_file&lt;/code&gt;, &lt;code&gt;read_media_file&lt;/code&gt;, &lt;code&gt;read_multiple_files&lt;/code&gt;, &lt;code&gt;list_directory&lt;/code&gt;, &lt;code&gt;list_directory_with_sizes&lt;/code&gt;, &lt;code&gt;directory_tree&lt;/code&gt;, &lt;code&gt;search_files&lt;/code&gt;, &lt;code&gt;get_file_info&lt;/code&gt; and &lt;code&gt;list_allowed_directories&lt;/code&gt;. Turning off &lt;code&gt;write_file&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt;, &lt;code&gt;move_file&lt;/code&gt; and &lt;code&gt;create_directory&lt;/code&gt; leaves the AI able to read only. In the OpenAI Agents SDK you can do the same with a tool filter (see &lt;a href="https://www.pluginstackai.com/guides/openai-agents-sdk-python-tutorial/" rel="noopener noreferrer"&gt;the Agents SDK tutorial&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  What the tools do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;read_text_file&lt;/code&gt;: reads a file as UTF-8 text. &lt;code&gt;head&lt;/code&gt; or &lt;code&gt;tail&lt;/code&gt; (not both) returns only the first or last N lines. The older name &lt;code&gt;read_file&lt;/code&gt; still works but is deprecated.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;read_media_file&lt;/code&gt;: returns images and audio as base64 with their MIME type. Other files come back as an embedded resource.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;read_multiple_files&lt;/code&gt;: reads several files at once. One failed file doesn't stop the rest.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;write_file&lt;/code&gt;: creates a file or overwrites an existing one completely.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;edit_file&lt;/code&gt;: makes targeted edits and returns a git-style diff. &lt;code&gt;dryRun: true&lt;/code&gt; previews the change without writing it.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;create_directory&lt;/code&gt;: creates a folder, including parent folders. Does nothing if it already exists.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;list_directory&lt;/code&gt; and &lt;code&gt;list_directory_with_sizes&lt;/code&gt;: list a folder with [FILE] and [DIR] labels. The sizes version can sort by &lt;code&gt;name&lt;/code&gt; or &lt;code&gt;size&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;move_file&lt;/code&gt;: moves or renames. Fails if the destination exists.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;search_files&lt;/code&gt;: finds files and folders by glob pattern. &lt;code&gt;excludePatterns&lt;/code&gt; skips folders such as &lt;code&gt;node_modules&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;directory_tree&lt;/code&gt;: returns the folder structure as JSON, also with &lt;code&gt;excludePatterns&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_file_info&lt;/code&gt;: size, dates, type, permissions and hard-link count.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;list_allowed_directories&lt;/code&gt;: shows which folders the server may use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The server marks its tools with MCP hints. The read tools are flagged read-only, and &lt;code&gt;write_file&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt; and &lt;code&gt;move_file&lt;/code&gt; are flagged destructive, so clients that ask before risky actions can tell them apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things worth knowing before you let it write
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Overwrites aren't crash-safe.&lt;/strong&gt; Since 1.0.0, &lt;code&gt;write_file&lt;/code&gt; and &lt;code&gt;edit_file&lt;/code&gt; write into the existing file instead of swapping in a new copy. The file keeps its permissions and links, but a crash halfway through can leave it partly written. Use git or backups for anything that matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read-only files are refused&lt;/strong&gt; rather than replaced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard links reach outside the allowed folders.&lt;/strong&gt; The folder check looks at the path you pass, not every name a file has. pnpm, for example, hard-links package files into &lt;code&gt;node_modules&lt;/code&gt; from a shared store, so editing one there changes it everywhere. &lt;code&gt;get_file_info&lt;/code&gt; shows &lt;code&gt;hardLinks&lt;/code&gt;; anything above 1 means the file has other names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Moving across disks&lt;/strong&gt; works for single files since 2.1.0 (copy, then delete the original). Folders still can't be moved between disks or mounts; move the files one at a time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Big messages close the connection.&lt;/strong&gt; Since 2.0.0, a single message over 10 MiB closes the stdio connection.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Slow or huge folders
&lt;/h2&gt;

&lt;p&gt;Folders synced by cloud storage (macOS &lt;code&gt;~/Library/CloudStorage&lt;/code&gt;, iCloud Drive) or a slow network drive can stall while the provider fetches file details. Since 2.1.0 the server gives up after 15 seconds with &lt;code&gt;Filesystem call timed out after 15000 ms&lt;/code&gt; and the path. &lt;code&gt;search_files&lt;/code&gt; and &lt;code&gt;directory_tree&lt;/code&gt; also stop with an error after visiting 100,000 entries, instead of returning a partial list.&lt;/p&gt;

&lt;p&gt;For either error, ask for a narrower folder, or name the slow or large folder in &lt;code&gt;excludePatterns&lt;/code&gt; (for example &lt;code&gt;node_modules&lt;/code&gt; or &lt;code&gt;.git&lt;/code&gt;). Better still, don't allow a cloud-synced folder at all if you can point the server at a local copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating from an older version
&lt;/h2&gt;

&lt;p&gt;The server used date-style versions (2025.x, 2026.x) before switching to normal version numbers at 1.0.0 in October 2026. By version number, 2.1.0 is lower than any 2026.x release, so an existing install pinned to a 2026.x range won't update to it. To be sure which version you run, pin it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx -y @modelcontextprotocol/server-filesystem@2.1.0 &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;absolute-path-to-folder&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What else changed in v2 across the reference servers: &lt;a href="https://www.pluginstackai.com/guides/mcp-reference-servers-v2-whats-changed/" rel="noopener noreferrer"&gt;MCP reference servers v2: what changed&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test it outside your client
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.pluginstackai.com/plugins/mcp-inspector/" rel="noopener noreferrer"&gt;MCP Inspector&lt;/a&gt; can start the server and list its tools, which tells you whether a problem is the server or your client config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx -y @modelcontextprotocol/inspector --cli npx -y @modelcontextprotocol/server-filesystem@2.1.0 &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;absolute-path-to-folder&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; --method tools/list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the tools listed above. If this works but your client doesn't, the problem is in the client config, such as a wrong path or a missing &lt;code&gt;cmd /c&lt;/code&gt; on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The server stops right after starting:&lt;/strong&gt; check &lt;code&gt;node --version&lt;/code&gt; (2.x needs Node 24 or later) and that at least one folder is at the end of &lt;code&gt;args&lt;/code&gt;. With no folders and a 2025-era client that doesn't support Roots, the server exits with status 1. For the client-side error, see &lt;a href="https://www.pluginstackai.com/guides/fix-mcp-error-32000-connection-closed/" rel="noopener noreferrer"&gt;MCP error -32000&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Access denied - path outside allowed directories":&lt;/strong&gt; the AI asked for a path you didn't allow. Add the folder to &lt;code&gt;args&lt;/code&gt;, or have it call &lt;code&gt;list_allowed_directories&lt;/code&gt; first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every tool call fails saying no directories are allowed:&lt;/strong&gt; you started the server without folders and the client uses the 2026-07-28 protocol. Add at least one folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;spawn npx ENOENT&lt;/code&gt; on Windows:&lt;/strong&gt; launch &lt;code&gt;npx&lt;/code&gt; through &lt;code&gt;cmd /c&lt;/code&gt; as the README does (shown above).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timeouts on a cloud-synced folder such as iCloud Drive:&lt;/strong&gt; see slow or huge folders.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is the Filesystem MCP server safe to use?
&lt;/h3&gt;

&lt;p&gt;It's limited to the folders you list, and v2.0.1 tightened how paths are checked. Within those folders it can overwrite and move files, so share as little as you can, keep the work in git, and use a read-only setup when the AI only needs to read.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I give it access to a single file?
&lt;/h3&gt;

&lt;p&gt;Allowed directories are folders. With Docker you can mount a single file into &lt;code&gt;/projects&lt;/code&gt;, which the README shows as an example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it work with clients other than these?
&lt;/h3&gt;

&lt;p&gt;It runs locally over stdio, so it needs a client that can start local MCP servers. A client that can only connect to remote servers can't start it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;Commands and config above come from these official docs. Tools change often, so check them for the latest steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem" rel="noopener noreferrer"&gt;Filesystem server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/servers/blob/main/src/filesystem/CHANGELOG.md" rel="noopener noreferrer"&gt;Filesystem server changelog (2.1.0, 2.0.1, 2.0.0, 1.0.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@modelcontextprotocol/server-filesystem" rel="noopener noreferrer"&gt;npm: @modelcontextprotocol/server-filesystem (version and engines)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/specification/2026-07-28/deprecated" rel="noopener noreferrer"&gt;MCP specification 2026-07-28: deprecated features (Roots)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/inspector/blob/main/clients/cli/README.md" rel="noopener noreferrer"&gt;MCP Inspector CLI README&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PluginStack is independent and not affiliated with or endorsed by the companies mentioned. Spotted something out of date? Email &lt;a href="mailto:pluginstackai@gmail.com"&gt;pluginstackai@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This guide was first published on &lt;a href="https://www.pluginstackai.com/guides/filesystem-mcp-server-setup/" rel="noopener noreferrer"&gt;PluginStack&lt;/a&gt;. Browse the &lt;a href="https://www.pluginstackai.com/" rel="noopener noreferrer"&gt;PluginStack directory&lt;/a&gt; for more hand-checked MCP servers, plugins and setup guides.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>node</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to add an MCP server to Cursor (mcp.json, examples &amp; fixes)</title>
      <dc:creator>PluginStack</dc:creator>
      <pubDate>Fri, 13 Nov 2026 22:18:38 +0000</pubDate>
      <link>https://dev.to/pluginstackai/how-to-add-an-mcp-server-to-cursor-mcpjson-examples-published-true-kcm</link>
      <guid>https://dev.to/pluginstackai/how-to-add-an-mcp-server-to-cursor-mcpjson-examples-published-true-kcm</guid>
      <description>&lt;h1&gt;
  
  
  How to add an MCP server to Cursor
&lt;/h1&gt;

&lt;p&gt;Checked against the official docs: Oct 20, 2026&lt;/p&gt;

&lt;p&gt;MCP (Model Context Protocol) servers give Cursor's Agent extra tools, such as reading GitHub issues, driving a browser or looking up current library docs. There are two ways to add one: one click from Cursor's Customize panel, or a few lines in an &lt;code&gt;mcp.json&lt;/code&gt; file. This guide covers both, with copy-paste configs and fixes for the errors people hit most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick answer
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (all your projects) or &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in your project folder (that project only).&lt;/li&gt;
&lt;li&gt;Add the server under an &lt;code&gt;mcpServers&lt;/code&gt; key: a &lt;code&gt;command&lt;/code&gt; for a local server, or a &lt;code&gt;url&lt;/code&gt; for a remote one (examples below).&lt;/li&gt;
&lt;li&gt;Save the file and restart Cursor.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Customize&lt;/strong&gt; in the sidebar, then &lt;strong&gt;MCPs&lt;/strong&gt;, and check the server is listed and switched on.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Prefer not to edit JSON? Use the one-click install first and come back to &lt;code&gt;mcp.json&lt;/code&gt; for anything it doesn't list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: one-click install from Customize
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Customize&lt;/strong&gt; in Cursor's sidebar and click &lt;strong&gt;MCPs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Browse or search for the server you want.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add to Cursor&lt;/strong&gt; next to it.&lt;/li&gt;
&lt;li&gt;Follow the sign-in (OAuth) prompts if the server asks for them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These entries come from the Cursor Marketplace. Cursor also points to &lt;a href="https://cursor.directory" rel="noopener noreferrer"&gt;cursor.directory&lt;/a&gt; for community plugins and MCP servers; community servers aren't reviewed by Cursor, so check who publishes them before installing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: add a server with mcp.json
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where the file goes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global&lt;/strong&gt; (just you, every project): &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; in your home folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt; (this project, can be shared with your team through git): &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in the project root.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cursor merges both files. If the same server name appears in both, the project file wins.&lt;/p&gt;

&lt;h3&gt;
  
  
  A local (stdio) server
&lt;/h3&gt;

&lt;p&gt;A local server is a program Cursor starts on your machine. You give it a &lt;code&gt;command&lt;/code&gt; and optional &lt;code&gt;args&lt;/code&gt; and &lt;code&gt;env&lt;/code&gt;. This adds &lt;a href="https://www.pluginstackai.com/plugins/playwright-mcp/" rel="noopener noreferrer"&gt;Playwright MCP&lt;/a&gt;, which lets the Agent open and control a browser (it needs Node.js 18 or newer):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"playwright"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@playwright/mcp@latest"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key (&lt;code&gt;playwright&lt;/code&gt; here) is just a label you choose. The &lt;code&gt;command&lt;/code&gt; has to be on your system PATH or be a full path to the program.&lt;/p&gt;

&lt;h3&gt;
  
  
  A remote server (URL)
&lt;/h3&gt;

&lt;p&gt;A remote server is hosted by the provider and reached over HTTP. Cursor supports Streamable HTTP and SSE endpoints with a &lt;code&gt;url&lt;/code&gt;. This adds the &lt;a href="https://www.pluginstackai.com/plugins/notion-mcp/" rel="noopener noreferrer"&gt;Notion MCP server&lt;/a&gt;. After saving, enable it in &lt;strong&gt;Customize&lt;/strong&gt; and complete Notion's OAuth sign-in to connect your workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"notion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://mcp.notion.com/mcp"&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;h3&gt;
  
  
  A remote server that needs a token
&lt;/h3&gt;

&lt;p&gt;Some servers take an API key or token in a header instead of OAuth. The &lt;a href="https://www.pluginstackai.com/plugins/github-mcp-server/" rel="noopener noreferrer"&gt;GitHub MCP Server&lt;/a&gt;'s Cursor guide uses a GitHub personal access token as a Bearer header. Rather than pasting the token into the file, read it from an environment variable with &lt;code&gt;${env:NAME}&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"github"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://api.githubcopilot.com/mcp/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Bearer ${env:GITHUB_PAT}"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set &lt;code&gt;GITHUB_PAT&lt;/code&gt; in your shell profile (for example &lt;code&gt;export GITHUB_PAT=...&lt;/code&gt; in &lt;code&gt;~/.zshrc&lt;/code&gt;), then restart Cursor so it picks up the variable. Give the token only the repositories and permissions you want the Agent to have.&lt;/p&gt;

&lt;h3&gt;
  
  
  Several servers in one file
&lt;/h3&gt;

&lt;p&gt;Each server is one entry inside the same &lt;code&gt;mcpServers&lt;/code&gt; object. Separate entries with a comma, and don't leave a comma after the last one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"playwright"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@playwright/mcp@latest"&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;span class="nl"&gt;"notion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://mcp.notion.com/mcp"&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;h2&gt;
  
  
  Keep API keys out of mcp.json
&lt;/h2&gt;

&lt;p&gt;A project &lt;code&gt;.cursor/mcp.json&lt;/code&gt; is meant to be committed, so never put real keys in it. Cursor resolves these variables in &lt;code&gt;command&lt;/code&gt;, &lt;code&gt;args&lt;/code&gt;, &lt;code&gt;env&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt; and &lt;code&gt;headers&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;${env:NAME}&lt;/code&gt;: an environment variable.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${userHome}&lt;/code&gt;: your home folder.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${workspaceFolder}&lt;/code&gt;: the project root (the folder that contains &lt;code&gt;.cursor/mcp.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${workspaceFolderBasename}&lt;/code&gt;: the project folder's name.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;${pathSeparator}&lt;/code&gt; or &lt;code&gt;${/}&lt;/code&gt;: the OS path separator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local (stdio) servers can also load variables from a file with &lt;code&gt;envFile&lt;/code&gt;, for example &lt;code&gt;"envFile": "${workspaceFolder}/.env"&lt;/code&gt;. Remote servers don't support &lt;code&gt;envFile&lt;/code&gt;, so use &lt;code&gt;${env:NAME}&lt;/code&gt; for them. Keep &lt;code&gt;.env&lt;/code&gt; in &lt;code&gt;.gitignore&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"my-local-server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&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="s2"&gt;"some-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"envFile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"${workspaceFolder}/.env"&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;h2&gt;
  
  
  Check that it works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Customize → MCPs&lt;/strong&gt;. The server should be listed with its toggle on.&lt;/li&gt;
&lt;li&gt;In the Agent chat, ask for something only that server can do, for example "Use playwright to open &lt;a href="https://example.com" rel="noopener noreferrer"&gt;https://example.com&lt;/a&gt; and tell me the page title".&lt;/li&gt;
&lt;li&gt;Approve the tool call. Cursor asks for approval before running MCP tools unless your approval settings (Cursor Settings → Agents → Approvals &amp;amp; Execution) let them run; click the arrow next to the tool name to see the arguments it will send.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to build your own MCP server, the (paid) &lt;a href="https://www.pluginstackai.com/packs/" rel="noopener noreferrer"&gt;Agent Builder Rules + Prompts&lt;/a&gt; pack has Cursor and Claude Code rules, 2 Claude Code skills, 10 scaffolding prompts for TypeScript or Python, and 12 eval prompt templates. You don't need it just to add servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common errors and fixes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The server doesn't show up
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check the path and name: the file must be &lt;code&gt;mcp.json&lt;/code&gt; inside a &lt;code&gt;.cursor&lt;/code&gt; folder, either in your home folder or in the project root.&lt;/li&gt;
&lt;li&gt;Check the JSON. A trailing comma, a missing quote or a missing closing brace makes the file invalid. Paste it into any JSON validator.&lt;/li&gt;
&lt;li&gt;Restart Cursor after editing the file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Read the MCP logs
&lt;/h3&gt;

&lt;p&gt;Open the Output panel (&lt;strong&gt;Cmd+Shift+U&lt;/strong&gt; on Mac, &lt;strong&gt;Ctrl+Shift+U&lt;/strong&gt; on Windows/Linux) and pick &lt;strong&gt;MCP Logs&lt;/strong&gt; from the dropdown. It shows connection errors, authentication problems and server crashes, which usually name the fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  "command not found" or the server exits immediately
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Most local servers start with &lt;code&gt;npx&lt;/code&gt; or &lt;code&gt;uvx&lt;/code&gt;, so install Node.js (for &lt;code&gt;npx&lt;/code&gt;) or uv (for &lt;code&gt;uvx&lt;/code&gt;) first, then restart Cursor.&lt;/li&gt;
&lt;li&gt;If Cursor still can't find it, use the full path to the program in &lt;code&gt;command&lt;/code&gt; (run &lt;code&gt;which npx&lt;/code&gt; on macOS/Linux or &lt;code&gt;where npx&lt;/code&gt; on Windows to get it).&lt;/li&gt;
&lt;li&gt;Run the same command in a terminal (for example &lt;code&gt;npx @playwright/mcp@latest&lt;/code&gt;). If it errors there, the message tells you what's missing. If it starts and waits silently, the server works and the problem is in the config.&lt;/li&gt;
&lt;li&gt;On Windows, some servers' READMEs (such as the official Filesystem server) launch &lt;code&gt;npx&lt;/code&gt; through &lt;code&gt;cmd /c&lt;/code&gt;: set &lt;code&gt;"command": "cmd"&lt;/code&gt; and put &lt;code&gt;"/c", "npx"&lt;/code&gt; at the start of &lt;code&gt;args&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The server can't see my API key
&lt;/h3&gt;

&lt;p&gt;If the server relies on variables set in your shell profile, make sure Cursor can see them and restart Cursor after changing the profile. For local servers, putting the key in &lt;code&gt;env&lt;/code&gt; or an &lt;code&gt;envFile&lt;/code&gt; avoids the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication fails on a remote server
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;For token servers, check the header format (&lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt;), that the token hasn't expired, and that it has the permissions the tool needs.&lt;/li&gt;
&lt;li&gt;For OAuth servers, remove the server in &lt;strong&gt;Customize → MCPs&lt;/strong&gt; and add it again to restart the sign-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Docker-based server won't start
&lt;/h3&gt;

&lt;p&gt;Servers that run with &lt;code&gt;"command": "docker"&lt;/code&gt; (such as the local version of the GitHub MCP Server) need Docker Desktop installed and running before Cursor starts them.&lt;/p&gt;

&lt;h3&gt;
  
  
  An npm-based server is stuck on an old version
&lt;/h3&gt;

&lt;p&gt;Cursor's docs suggest removing the server in Customize, running &lt;code&gt;npm cache clean --force&lt;/code&gt;, then adding it again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Too many tools
&lt;/h3&gt;

&lt;p&gt;Every server adds tools the Agent has to choose from. Switch off servers you're not using with their toggle in &lt;strong&gt;Customize → MCPs&lt;/strong&gt;; disabled servers don't load or appear in chat, and you keep their config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stay safe with MCP servers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install servers from the company or project that makes them. Our listings link to each official repo or docs page.&lt;/li&gt;
&lt;li&gt;Use the narrowest key you can: read-only modes, restricted tokens, a single project or repository.&lt;/li&gt;
&lt;li&gt;Read tool calls before approving them, especially ones that write, delete or spend money.&lt;/li&gt;
&lt;li&gt;Be careful with servers that read outside content (web pages, issues, emails): that text can carry prompt-injection instructions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Good servers to try first
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/context7/" rel="noopener noreferrer"&gt;Context7&lt;/a&gt;: current, version-specific library docs in the chat.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/github-mcp-server/" rel="noopener noreferrer"&gt;GitHub MCP Server&lt;/a&gt;: issues, pull requests and Actions runs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/playwright-mcp/" rel="noopener noreferrer"&gt;Playwright MCP&lt;/a&gt; or &lt;a href="https://www.pluginstackai.com/plugins/chrome-devtools-mcp/" rel="noopener noreferrer"&gt;Chrome DevTools MCP&lt;/a&gt;: let the Agent open and check your app in a real browser.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/figma-mcp/" rel="noopener noreferrer"&gt;Figma MCP Server&lt;/a&gt;: design context from a Figma frame link.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/linear-mcp/" rel="noopener noreferrer"&gt;Linear MCP&lt;/a&gt; or &lt;a href="https://www.pluginstackai.com/plugins/notion-mcp/" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt;: tickets and specs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pluginstackai.com/plugins/supabase-mcp/" rel="noopener noreferrer"&gt;Supabase MCP Server&lt;/a&gt; or &lt;a href="https://www.pluginstackai.com/plugins/neon-mcp/" rel="noopener noreferrer"&gt;Neon MCP Server&lt;/a&gt;: your database (start in read-only mode).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See every server we list in &lt;a href="https://www.pluginstackai.com/categories/mcp-servers/" rel="noopener noreferrer"&gt;MCP Servers&lt;/a&gt;. Each page has setup steps checked against the official docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should I use the global or the project mcp.json?
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; for personal tools you want everywhere, and &lt;code&gt;.cursor/mcp.json&lt;/code&gt; for tools a project's team should share. Keep keys out of the project file with &lt;code&gt;${env:NAME}&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which transports does Cursor support?
&lt;/h3&gt;

&lt;p&gt;stdio (a local command Cursor starts), SSE and Streamable HTTP (both by URL). If a provider offers both an SSE endpoint and a Streamable HTTP endpoint, use the one its docs recommend for Cursor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I turn a server off without deleting it?
&lt;/h3&gt;

&lt;p&gt;Yes. Use the toggle next to it in &lt;strong&gt;Customize → MCPs&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Claude Code too?
&lt;/h3&gt;

&lt;p&gt;Claude Code reads the same kind of &lt;code&gt;mcpServers&lt;/code&gt; entries but stores them differently. See &lt;a href="https://www.pluginstackai.com/guides/best-mcp-servers-for-claude-code/" rel="noopener noreferrer"&gt;the best MCP servers for Claude Code&lt;/a&gt; for the &lt;code&gt;claude mcp add&lt;/code&gt; commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;Commands and config above come from these official docs. Tools change often, so check them for the latest steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cursor.com/docs/context/mcp" rel="noopener noreferrer"&gt;Cursor docs: Model Context Protocol (MCP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cursor.com/help/customization/mcp" rel="noopener noreferrer"&gt;Cursor help: MCP integrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/github/github-mcp-server/blob/main/docs/installation-guides/install-cursor.md" rel="noopener noreferrer"&gt;GitHub MCP Server: install in Cursor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/playwright-mcp" rel="noopener noreferrer"&gt;Playwright MCP README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.notion.com/docs/get-started-with-mcp" rel="noopener noreferrer"&gt;Notion docs: Get started with MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem" rel="noopener noreferrer"&gt;Filesystem MCP server README (Windows config)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PluginStack is independent and not affiliated with or endorsed by the companies mentioned. Spotted something out of date? Email &lt;a href="mailto:pluginstackai@gmail.com"&gt;pluginstackai@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This guide was first published on &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-cursor/" rel="noopener noreferrer"&gt;PluginStack&lt;/a&gt;. Browse the &lt;a href="https://www.pluginstackai.com/" rel="noopener noreferrer"&gt;PluginStack directory&lt;/a&gt; for more hand-checked MCP servers, plugins and setup guides.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cursor</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Best MCP servers for Claude Code (with install commands)</title>
      <dc:creator>PluginStack</dc:creator>
      <pubDate>Fri, 13 Nov 2026 22:17:04 +0000</pubDate>
      <link>https://dev.to/pluginstackai/best-mcp-servers-for-claude-code-with-install-commands-3aga</link>
      <guid>https://dev.to/pluginstackai/best-mcp-servers-for-claude-code-with-install-commands-3aga</guid>
      <description>&lt;h1&gt;
  
  
  The best MCP servers for Claude Code
&lt;/h1&gt;

&lt;p&gt;Checked against the official docs: Oct 27, 2026&lt;/p&gt;

&lt;p&gt;Claude Code can already read, edit and run code in your project. MCP servers connect it to the things it can't see on its own: your GitHub issues, current library docs, a real browser, production errors, your tickets and your database. Below are ten official servers worth considering, the exact command to add each one, and how to fix the usual setup problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Short answer: where to start
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Almost everyone:&lt;/strong&gt; &lt;a href="https://www.pluginstackai.com/plugins/github-mcp-server/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; for issues and PRs, and &lt;a href="https://www.pluginstackai.com/plugins/context7/" rel="noopener noreferrer"&gt;Context7&lt;/a&gt; for current library docs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Front-end work:&lt;/strong&gt; &lt;a href="https://www.pluginstackai.com/plugins/playwright-mcp/" rel="noopener noreferrer"&gt;Playwright&lt;/a&gt; or &lt;a href="https://www.pluginstackai.com/plugins/chrome-devtools-mcp/" rel="noopener noreferrer"&gt;Chrome DevTools&lt;/a&gt; so Claude can see the running page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team tools:&lt;/strong&gt; &lt;a href="https://www.pluginstackai.com/plugins/sentry-mcp/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;, &lt;a href="https://www.pluginstackai.com/plugins/linear-mcp/" rel="noopener noreferrer"&gt;Linear&lt;/a&gt; and &lt;a href="https://www.pluginstackai.com/plugins/notion-mcp/" rel="noopener noreferrer"&gt;Notion&lt;/a&gt; if your team already uses them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data and infrastructure:&lt;/strong&gt; &lt;a href="https://www.pluginstackai.com/plugins/supabase-mcp/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; (or &lt;a href="https://www.pluginstackai.com/plugins/neon-mcp/" rel="noopener noreferrer"&gt;Neon&lt;/a&gt;) and &lt;a href="https://www.pluginstackai.com/plugins/cloudflare-mcp/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;, scoped to read-only or one project while you test.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add two or three, not all ten. The reasons are under "How we picked".&lt;/p&gt;

&lt;h2&gt;
  
  
  How we picked
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Official&lt;/strong&gt;: published by the company behind the service (or by Microsoft and Google for the browser tools), so it tracks the real API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fills a gap&lt;/strong&gt;: it gives Claude Code something it can't already do with its built-in tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can be scoped down&lt;/strong&gt;: OAuth sign-in, read-only modes or narrow tokens, so you don't have to hand over full access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't a ranking, and no one paid to be included. Pick the few that match how you work. Each connected server takes some of Claude's context window, because its tool names and server instructions load into every session, so fewer well-chosen servers beat many.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding any MCP server to Claude Code
&lt;/h2&gt;

&lt;p&gt;Run these in your terminal, not inside a &lt;code&gt;claude&lt;/code&gt; session. A remote (hosted) server takes &lt;code&gt;--transport http&lt;/code&gt; and a URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;name&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;url&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A local server takes the command that starts it after &lt;code&gt;--&lt;/code&gt;. Everything after &lt;code&gt;--&lt;/code&gt; goes to the server untouched, so flags like &lt;code&gt;-y&lt;/code&gt; aren't read as Claude Code options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;name&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; -- npx -y &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;package&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then check and manage your servers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp list          &lt;span class="c"&gt;# every server and its status&lt;/span&gt;
claude mcp get &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;name&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="c"&gt;# details for one server&lt;/span&gt;
claude mcp remove &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;name&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;# remove it&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside a session, &lt;code&gt;/mcp&lt;/code&gt; shows status and handles OAuth sign-in for servers that need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick a scope
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--scope local&lt;/code&gt; (default): just you, this project. Stored in &lt;code&gt;~/.claude.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--scope user&lt;/code&gt;: just you, every project. Also in &lt;code&gt;~/.claude.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--scope project&lt;/code&gt;: shared with everyone who clones the repo, through a &lt;code&gt;.mcp.json&lt;/code&gt; file in the project root.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The servers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. GitHub MCP Server: issues, PRs and Actions
&lt;/h3&gt;

&lt;p&gt;GitHub's official server lets Claude read repositories, triage issues, review pull requests and check why a GitHub Actions run failed. The hosted server takes a personal access token as a header. Create a fine-grained token with access to only the repositories you want Claude to work with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header &lt;span class="s2"&gt;"Authorization: Bearer YOUR_GITHUB_PAT"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For read-only tools, GitHub's remote-server docs give &lt;code&gt;https://api.githubcopilot.com/mcp/readonly&lt;/code&gt; as the URL. &lt;code&gt;claude mcp add&lt;/code&gt; doesn't check the token when it saves, so run &lt;code&gt;/mcp&lt;/code&gt; afterwards: a bad token shows an ✘ and an HTTP 401. More: &lt;a href="https://www.pluginstackai.com/plugins/github-mcp-server/" rel="noopener noreferrer"&gt;GitHub MCP Server on PluginStack&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Context7: current library docs
&lt;/h3&gt;

&lt;p&gt;Context7 pulls version-specific documentation and code examples into the conversation, which helps with libraries that changed after the model was trained. The quickest setup is Context7's &lt;code&gt;ctx7&lt;/code&gt; command, which signs you in, then lets you choose CLI + Skills or MCP mode; &lt;code&gt;--claude&lt;/code&gt; targets Claude Code (needs Node.js 22.13 or newer):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ctx7 setup --claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add the hosted server by hand. An API key is optional but recommended for higher rate limits (free keys at context7.com/dashboard):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --scope user --header &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt; \
  --transport http context7 https://mcp.context7.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add "use context7" to a prompt, or a line in &lt;code&gt;CLAUDE.md&lt;/code&gt; telling Claude to use it for library questions. More: &lt;a href="https://www.pluginstackai.com/plugins/context7/" rel="noopener noreferrer"&gt;Context7&lt;/a&gt; and &lt;a href="https://www.pluginstackai.com/guides/context7-mcp-setup/" rel="noopener noreferrer"&gt;how to set up Context7 MCP&lt;/a&gt; in other clients.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Playwright MCP: drive a real browser
&lt;/h3&gt;

&lt;p&gt;Microsoft's Playwright server lets Claude open pages, click, fill forms and read the result, which is handy for checking that a UI change actually works. It needs Node.js 18 or newer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add playwright -- npx -y @playwright/mcp@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first &lt;code&gt;claude mcp list&lt;/code&gt; can show "Failed to connect" while &lt;code&gt;npx&lt;/code&gt; downloads the package; run it again after a moment. Microsoft notes that for coding agents its Playwright CLI with skills can be more token-efficient than the MCP server. More: &lt;a href="https://www.pluginstackai.com/plugins/playwright-mcp/" rel="noopener noreferrer"&gt;Playwright MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Chrome DevTools MCP: debug and profile in Chrome
&lt;/h3&gt;

&lt;p&gt;Google's Chrome DevTools server lets Claude control and inspect a live Chrome browser: performance traces, network requests and console messages. It needs a current Node.js LTS and Chrome:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google collects usage statistics by default; add &lt;code&gt;--no-usage-statistics&lt;/code&gt; to the server's arguments to opt out. Performance tools may send trace URLs to the CrUX API unless you pass &lt;code&gt;--no-performance-crux&lt;/code&gt;. More: &lt;a href="https://www.pluginstackai.com/plugins/chrome-devtools-mcp/" rel="noopener noreferrer"&gt;Chrome DevTools MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Sentry MCP: production errors
&lt;/h3&gt;

&lt;p&gt;Sentry's hosted server is built for coding agents: it lets Claude look up Sentry issues, errors and traces and help you debug them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run &lt;code&gt;/mcp&lt;/code&gt;, select &lt;code&gt;sentry&lt;/code&gt; and choose &lt;strong&gt;Authenticate&lt;/strong&gt; to sign in through your browser. Sentry also offers a Claude Code plugin (&lt;code&gt;claude plugin marketplace add getsentry/sentry-mcp&lt;/code&gt;, then &lt;code&gt;claude plugin install sentry-mcp@sentry-mcp&lt;/code&gt;). More: &lt;a href="https://www.pluginstackai.com/plugins/sentry-mcp/" rel="noopener noreferrer"&gt;Sentry MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Linear MCP: tickets and projects
&lt;/h3&gt;

&lt;p&gt;Linear's official server lets Claude find, create and update issues, projects and comments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http linear-server https://mcp.linear.app/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;/mcp&lt;/code&gt; to sign in. For read-only access, Linear offers &lt;code&gt;https://mcp.linear.app/mcp/readonly&lt;/code&gt;. More: &lt;a href="https://www.pluginstackai.com/plugins/linear-mcp/" rel="noopener noreferrer"&gt;Linear MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Notion MCP: specs and docs
&lt;/h3&gt;

&lt;p&gt;Notion's hosted server lets Claude search, read, create and update the pages and databases you can access, so specs and notes don't have to be pasted in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http notion https://mcp.notion.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;/mcp&lt;/code&gt; to complete the OAuth sign-in. Workspace members can connect; guests can't. More: &lt;a href="https://www.pluginstackai.com/plugins/notion-mcp/" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Supabase MCP (or Neon): your database
&lt;/h3&gt;

&lt;p&gt;Supabase's server lets Claude manage tables, fetch project config and query data. Supabase asks you to read its MCP security best practices first, because connecting an LLM to a database carries real risk. Scoping the server to one project in read-only mode is a sensible start:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --scope project --transport http supabase \
  &lt;span class="s2"&gt;"https://mcp.supabase.com/mcp?project_ref=&amp;lt;your-project-ref&amp;gt;&amp;amp;read_only=true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;/mcp&lt;/code&gt; to sign in to Supabase. On Neon instead? &lt;code&gt;npx neon@latest init&lt;/code&gt; signs you in and configures Neon's server for Claude Code, and &lt;code&gt;https://mcp.neon.tech/mcp?readonly=true&lt;/code&gt; limits it to reads. More: &lt;a href="https://www.pluginstackai.com/plugins/supabase-mcp/" rel="noopener noreferrer"&gt;Supabase MCP Server&lt;/a&gt;, &lt;a href="https://www.pluginstackai.com/plugins/neon-mcp/" rel="noopener noreferrer"&gt;Neon MCP Server&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Figma MCP Server: designs to code
&lt;/h3&gt;

&lt;p&gt;Figma's hosted server brings design context from your Figma files into Claude Code, so the code it writes can match your designs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http figma https://mcp.figma.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sign in through Figma's OAuth flow, then paste a link to a frame or layer into your prompt. More: &lt;a href="https://www.pluginstackai.com/plugins/figma-mcp/" rel="noopener noreferrer"&gt;Figma MCP Server&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Cloudflare MCP server: your Cloudflare account
&lt;/h3&gt;

&lt;p&gt;Cloudflare's recommended server covers the whole Cloudflare API through a few code-mode tools, so Claude can inspect and change zones, Workers, DNS and more. Cloudflare also runs separate hosted servers for docs, Browser Run and containers. Cloudflare's own README now marks its older observability and bindings servers as deprecated in favour of this one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http cloudflare-api https://mcp.cloudflare.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;/mcp&lt;/code&gt; to sign in with Cloudflare OAuth and choose the permissions to grant. For CI, send a scoped API token as a Bearer header instead. It can change real settings, so review each action. More: &lt;a href="https://www.pluginstackai.com/plugins/cloudflare-mcp/" rel="noopener noreferrer"&gt;Cloudflare MCP servers&lt;/a&gt; and &lt;a href="https://www.pluginstackai.com/guides/cloudflare-mcp-server-setup/" rel="noopener noreferrer"&gt;how to connect the Cloudflare MCP server&lt;/a&gt; (tokens, portals and errors).&lt;/p&gt;

&lt;h3&gt;
  
  
  Also worth a look
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Web search and scraping: &lt;a href="https://www.pluginstackai.com/plugins/exa-mcp/" rel="noopener noreferrer"&gt;Exa&lt;/a&gt;, &lt;a href="https://www.pluginstackai.com/plugins/firecrawl-mcp/" rel="noopener noreferrer"&gt;Firecrawl&lt;/a&gt; (&lt;a href="https://www.pluginstackai.com/guides/firecrawl-mcp-server-setup/" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt;), &lt;a href="https://www.pluginstackai.com/plugins/apify-mcp/" rel="noopener noreferrer"&gt;Apify&lt;/a&gt; (&lt;a href="https://www.pluginstackai.com/guides/apify-mcp-server-setup/" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt;) and &lt;a href="https://www.pluginstackai.com/plugins/brave-search-mcp/" rel="noopener noreferrer"&gt;Brave Search&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Payments: &lt;a href="https://www.pluginstackai.com/plugins/stripe-mcp/" rel="noopener noreferrer"&gt;Stripe MCP&lt;/a&gt;. It can change a real account, so review every action.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Servers you can usually skip
&lt;/h2&gt;

&lt;p&gt;Claude Code already reads and edits files in your project and loads project instructions from &lt;code&gt;CLAUDE.md&lt;/code&gt; (or from &lt;code&gt;AGENTS.md&lt;/code&gt; when there is no &lt;code&gt;CLAUDE.md&lt;/code&gt;, on recent versions; see &lt;a href="https://www.pluginstackai.com/guides/cursor-rules-vs-agents-md/" rel="noopener noreferrer"&gt;Cursor rules vs AGENTS.md&lt;/a&gt;). That makes general-purpose &lt;a href="https://www.pluginstackai.com/plugins/filesystem-mcp/" rel="noopener noreferrer"&gt;Filesystem&lt;/a&gt; and &lt;a href="https://www.pluginstackai.com/plugins/memory-mcp/" rel="noopener noreferrer"&gt;Memory&lt;/a&gt; servers mostly redundant in Claude Code. They're more useful when you want the same setup across several MCP apps, or access to folders outside the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share servers with your team
&lt;/h2&gt;

&lt;p&gt;Add a server with &lt;code&gt;--scope project&lt;/code&gt; (or write the entry by hand) and commit the resulting &lt;code&gt;.mcp.json&lt;/code&gt;. Teammates get a prompt to approve each project server the first time Claude Code sees it. Keep secrets out of the file with environment variables: &lt;code&gt;.mcp.json&lt;/code&gt; expands &lt;code&gt;${VAR}&lt;/code&gt; and &lt;code&gt;${VAR:-default}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"github"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://api.githubcopilot.com/mcp/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Bearer ${GITHUB_PAT}"&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;span class="nl"&gt;"playwright"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"stdio"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&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="s2"&gt;"@playwright/mcp@latest"&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Remote entries need a &lt;code&gt;"type"&lt;/code&gt; (&lt;code&gt;"http"&lt;/code&gt;, &lt;code&gt;"sse"&lt;/code&gt; or &lt;code&gt;"ws"&lt;/code&gt;). An entry with a &lt;code&gt;url&lt;/code&gt; but no &lt;code&gt;type&lt;/code&gt; is read as a stdio server and skipped with an error.&lt;/p&gt;

&lt;p&gt;If a remote server gets an empty token and answers 401, check the variable name. In remote &lt;code&gt;url&lt;/code&gt; and &lt;code&gt;headers&lt;/code&gt; values, Claude Code deliberately reads some well-known credential variables as empty, such as &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; or &lt;code&gt;NPM_TOKEN&lt;/code&gt;, so they can't leak to a third-party server. Use a name of your own, like &lt;code&gt;GITHUB_PAT&lt;/code&gt; above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common errors and fixes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  /mcp says "No MCP servers configured"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You added the server from a different folder. Local-scope servers belong to the project you ran &lt;code&gt;claude mcp add&lt;/code&gt; in. Re-add it here, or use &lt;code&gt;--scope user&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You edited the wrong file. Claude Code reads &lt;code&gt;~/.claude.json&lt;/code&gt; and &lt;code&gt;&amp;lt;project&amp;gt;/.mcp.json&lt;/code&gt;, not paths like &lt;code&gt;~/.claude/mcp.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;An entry in &lt;code&gt;.mcp.json&lt;/code&gt; is malformed. Run &lt;code&gt;claude mcp list&lt;/code&gt; and look for the parse warning that names the field.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  "Failed to connect" or "Connection error"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;claude mcp get &amp;lt;name&amp;gt;&lt;/code&gt;: on recent versions it shows the HTTP status and the server's error text.&lt;/li&gt;
&lt;li&gt;For a remote server, test the URL with &lt;code&gt;curl -I &amp;lt;url&amp;gt;&lt;/code&gt; (&lt;code&gt;curl.exe&lt;/code&gt; in PowerShell). A 404 or 405 still means it's reachable, since many MCP endpoints only answer POST; a 401 or 403 means you need to sign in or fix your token.&lt;/li&gt;
&lt;li&gt;For a local server, run its command directly (for example &lt;code&gt;npx -y @playwright/mcp@latest&lt;/code&gt;). If it errors, the message names what's missing. If it starts and waits, check that you put &lt;code&gt;--&lt;/code&gt; before the command when adding it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Timed out at startup
&lt;/h3&gt;

&lt;p&gt;The first run of an &lt;code&gt;npx&lt;/code&gt; server can be slow while it downloads. Raise the startup timeout (in milliseconds):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MCP_TIMEOUT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60000 claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  "already exists"
&lt;/h3&gt;

&lt;p&gt;A server with that name already exists in that scope. Remove it with &lt;code&gt;claude mcp remove &amp;lt;name&amp;gt;&lt;/code&gt; (add &lt;code&gt;--scope&lt;/code&gt; if it exists in more than one) or pick another name.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connected, but no tools
&lt;/h3&gt;

&lt;p&gt;The server is usually missing a required environment variable such as an API key. Pass it with &lt;code&gt;--env KEY=value&lt;/code&gt; (before &lt;code&gt;--&lt;/code&gt;) or in the entry's &lt;code&gt;env&lt;/code&gt; field.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edits to .mcp.json don't take effect
&lt;/h3&gt;

&lt;p&gt;Claude Code reads &lt;code&gt;.mcp.json&lt;/code&gt; when a session starts, so exit and restart. If you rejected the server earlier, reset your choices with &lt;code&gt;claude mcp reset-project-choices&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  OAuth sign-in fails
&lt;/h3&gt;

&lt;p&gt;Run &lt;code&gt;/mcp&lt;/code&gt;, select the server and choose &lt;strong&gt;Authenticate&lt;/strong&gt; again. If the browser doesn't open, copy the URL from the terminal into your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building your own server?
&lt;/h2&gt;

&lt;p&gt;Anthropic's &lt;code&gt;mcp-server-dev&lt;/code&gt; plugin can scaffold one: run &lt;code&gt;/plugin install mcp-server-dev@claude-plugins-official&lt;/code&gt; inside Claude Code, then &lt;code&gt;/mcp-server-dev:build-mcp-server&lt;/code&gt;. Test it with the &lt;a href="https://www.pluginstackai.com/plugins/mcp-inspector/" rel="noopener noreferrer"&gt;MCP Inspector&lt;/a&gt;, or start from a framework like &lt;a href="https://www.pluginstackai.com/plugins/fastmcp/" rel="noopener noreferrer"&gt;FastMCP&lt;/a&gt;. If you want ready-made prompts for this, our own (paid) &lt;a href="https://www.pluginstackai.com/packs/" rel="noopener noreferrer"&gt;Agent Builder Rules + Prompts&lt;/a&gt; pack includes MCP server scaffolding prompts and rules for Claude Code and Cursor.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How many MCP servers should I add?
&lt;/h3&gt;

&lt;p&gt;Only the ones you'll use. Each server's tool names and instructions take up context in every session. Turn one off in the &lt;code&gt;/mcp&lt;/code&gt; panel to keep its config without loading it, and remove the ones you've stopped using.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I reuse servers I set up in Claude Desktop or claude.ai?
&lt;/h3&gt;

&lt;p&gt;Yes. &lt;code&gt;claude mcp add-from-claude-desktop&lt;/code&gt; imports Claude Desktop servers (macOS and WSL). Connectors you added at claude.ai show up automatically when you sign in to Claude Code with that claude.ai account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Cursor too?
&lt;/h3&gt;

&lt;p&gt;Most of these servers work in Cursor as well. See &lt;a href="https://www.pluginstackai.com/guides/add-mcp-server-to-cursor/" rel="noopener noreferrer"&gt;how to add an MCP server to Cursor&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;Commands and config above come from these official docs. Tools change often, so check them for the latest steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;Claude Code docs: Connect Claude Code to tools via MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.claude.com/docs/en/mcp-quickstart" rel="noopener noreferrer"&gt;Claude Code docs: Connect to MCP servers (quickstart and troubleshooting)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/github/github-mcp-server" rel="noopener noreferrer"&gt;GitHub MCP Server README and remote-server docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://context7.com/docs/resources/all-clients" rel="noopener noreferrer"&gt;Context7: MCP clients&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/microsoft/playwright-mcp" rel="noopener noreferrer"&gt;Playwright MCP README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/client-configurations.md" rel="noopener noreferrer"&gt;Chrome DevTools MCP: client configurations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getsentry/sentry-mcp" rel="noopener noreferrer"&gt;Sentry MCP README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linear.app/docs/mcp" rel="noopener noreferrer"&gt;Linear docs: MCP server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.notion.com/docs/get-started-with-mcp" rel="noopener noreferrer"&gt;Notion docs: Get started with MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/supabase-community/supabase-mcp" rel="noopener noreferrer"&gt;Supabase MCP README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/neondatabase/mcp-server-neon" rel="noopener noreferrer"&gt;Neon MCP Server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cloudflare/mcp-server-cloudflare" rel="noopener noreferrer"&gt;Cloudflare MCP server repo (servers, URLs, deprecations)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cloudflare/mcp" rel="noopener noreferrer"&gt;Cloudflare API MCP server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/" rel="noopener noreferrer"&gt;Figma docs: Remote MCP server installation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PluginStack is independent and not affiliated with or endorsed by the companies mentioned. Spotted something out of date? Email &lt;a href="mailto:pluginstackai@gmail.com"&gt;pluginstackai@gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This guide was first published on &lt;a href="https://www.pluginstackai.com/guides/best-mcp-servers-for-claude-code/" rel="noopener noreferrer"&gt;PluginStack&lt;/a&gt;. Browse the &lt;a href="https://www.pluginstackai.com/" rel="noopener noreferrer"&gt;PluginStack directory&lt;/a&gt; for more hand-checked MCP servers, plugins and setup guides.&lt;/p&gt;

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