<?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: quickpromptco</title>
    <description>The latest articles on DEV Community by quickpromptco (@juholee).</description>
    <link>https://dev.to/juholee</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%2F4149943%2F72d87944-7e12-430c-b73c-eae188319e32.png</url>
      <title>DEV Community: quickpromptco</title>
      <link>https://dev.to/juholee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juholee"/>
    <language>en</language>
    <item>
      <title>How to Build a Claude Code Skill That Loads Itself (5-Minute SKILL.md Setup)</title>
      <dc:creator>quickpromptco</dc:creator>
      <pubDate>Wed, 30 Sep 2026 01:00:28 +0000</pubDate>
      <link>https://dev.to/juholee/how-to-build-a-claude-code-skill-that-loads-itself-5-minute-skillmd-setup-2jjb</link>
      <guid>https://dev.to/juholee/how-to-build-a-claude-code-skill-that-loads-itself-5-minute-skillmd-setup-2jjb</guid>
      <description>&lt;p&gt;Every new session starts the same way: you paste your code review checklist again, re-explain your team’s API conventions again, walk the agent through the release process again. Forget once, and Claude Code falls back to generic habits.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Skill&lt;/strong&gt; ends the repetition. It’s a folder with one &lt;code&gt;SKILL.md&lt;/code&gt; file that teaches Claude Code a repeatable task or a piece of standing knowledge. Claude reads the description and pulls the skill in automatically whenever it’s relevant, no manual invocation needed. This guide builds one from scratch in about 5 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;Create a personal skill that works across every project on your machine:&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="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.claude/skills/api-conventions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then create &lt;code&gt;~/.claude/skills/api-conventions/SKILL.md&lt;/code&gt; with a frontmatter block and instructions (see Step 2 below). Claude Code picks it up on its next session start — no restart command needed. Total time: about 5 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ Copy This Prompt: Let Claude Code Build the Skill For You
&lt;/h3&gt;

&lt;p&gt;Skip Steps 1-4 below entirely and hand the whole thing to the agent instead — Claude Code can create the folder, write the SKILL.md, and validate it in one session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You have file access in this project. Do the following and report back — do not tell me it's done unless step 4 actually confirms it:

1. Ask me what recurring task or piece of knowledge this skill should cover, and whether it should be personal (~/.claude/skills/) or project-scoped (.claude/skills/).
2. Create the skill folder and a SKILL.md file at the right path.
3. Write the frontmatter (name, and a description phrased the way I'd naturally ask for this task) plus the instructions body, based on what I told you.
4. Run `ls .claude/skills/*/SKILL.md` (or the personal-path equivalent) to confirm the file exists, then run `claude plugin validate .claude/skills` to confirm the frontmatter parses cleanly.
5. If validation fails, do not report success — tell me the exact error and fix it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent writes the file, then re-checks it exists and parses cleanly before telling you it’s done — instead of you writing the frontmatter by hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You’ll Need
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Why You Need It&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code installed&lt;/td&gt;
&lt;td&gt;Skills are a built-in feature — no extra package to add&lt;/td&gt;
&lt;td&gt;0 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A text editor&lt;/td&gt;
&lt;td&gt;To write the SKILL.md file’s frontmatter and instructions&lt;/td&gt;
&lt;td&gt;0 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A recurring task in mind&lt;/td&gt;
&lt;td&gt;Skills are worth building for anything you’d otherwise re-explain repeatedly&lt;/td&gt;
&lt;td&gt;~2 min to define&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;

&lt;p&gt;Prefer to do it by hand instead of delegating to the agent? Here’s the manual version of the same steps.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1 — Choose personal or project scope
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Personal skills&lt;/strong&gt; live in &lt;code&gt;~/.claude/skills/&lt;/code&gt; and apply to every project you open. &lt;strong&gt;Project skills&lt;/strong&gt; live in &lt;code&gt;.claude/skills/&lt;/code&gt; at your repo root and are loaded for anyone working in that repo (and its subdirectories, all the way down). Use project scope for team conventions, personal scope for your own habits.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2 — Create the skill folder and file
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;Each skill gets its own folder containing exactly one &lt;code&gt;SKILL.md&lt;/code&gt;:&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="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude/skills/api-conventions
&lt;span class="nb"&gt;touch&lt;/span&gt; .claude/skills/api-conventions/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 3 — Write the frontmatter and instructions
&lt;/h4&gt;

&lt;p&gt;~2 min&lt;/p&gt;

&lt;p&gt;The opening &lt;code&gt;---&lt;/code&gt; must be the very first line of the file for the frontmatter to parse. &lt;code&gt;description&lt;/code&gt; is what Claude matches against your requests, so write it the way you’d naturally ask for the task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
name: api-conventions
description: REST API design conventions for our services
---
# API Conventions
- Use kebab-case for URL paths
- Use camelCase for JSON properties
- Always include pagination for list endpoints
- Version APIs in the URL path (/v1/, /v2/)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Optional frontmatter fields: &lt;code&gt;disable-model-invocation: true&lt;/code&gt; makes it callable only via &lt;code&gt;/api-conventions&lt;/code&gt;, never triggered automatically; &lt;code&gt;allowed-tools&lt;/code&gt; restricts which tools Claude can use while the skill is active.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4 — Test it
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;Start (or restart) a Claude Code session in the project, then ask a question that matches the description naturally — Claude should pull the skill in on its own. To force it regardless of description matching, call it directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/api-conventions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2For2n9jkk9fe2chnrzi3n.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2For2n9jkk9fe2chnrzi3n.webp" alt="Deck of instruction cards with one glowing card sliding into a terminal" width="799" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Skill loads itself when the task matches, so you stop repeating the same instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Each Piece Does
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Piece&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sets the skill’s invocation name; without it, Claude falls back to the folder name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;What Claude matches against your requests to decide when to auto-trigger the skill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;disable-model-invocation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Turns off automatic triggering, leaving only manual &lt;code&gt;/name&lt;/code&gt; invocation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allowed-tools&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Limits which tools are available while this skill’s instructions are active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill body (below frontmatter)&lt;/td&gt;
&lt;td&gt;The actual instructions Claude follows once the skill is loaded&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Verify the Installation
&lt;/h2&gt;

&lt;p&gt;Confirm the file exists and the frontmatter parses cleanly:&lt;/p&gt;

&lt;p&gt;$ ls .claude/skills/*/SKILL.md&lt;br&gt;&lt;br&gt;
.claude/skills/api-conventions/SKILL.md  &lt;/p&gt;

&lt;p&gt;$ claude plugin validate .claude/skills&lt;br&gt;&lt;br&gt;
✔ api-conventions: valid&lt;/p&gt;

&lt;p&gt;Run the same two commands yourself:&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="nb"&gt;ls&lt;/span&gt; .claude/skills/&lt;span class="k"&gt;*&lt;/span&gt;/SKILL.md
&lt;span class="nb"&gt;ls&lt;/span&gt; ~/.claude/skills/&lt;span class="k"&gt;*&lt;/span&gt;/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude plugin validate .claude/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside a Claude Code session, ask &lt;strong&gt;“What skills are available?”&lt;/strong&gt; — your skill should appear in the list. If the frontmatter has a YAML syntax error, the skill still loads but with no description to match against, so it’ll only work via manual &lt;code&gt;/name&lt;/code&gt; invocation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Opening &lt;code&gt;---&lt;/code&gt; isn’t on line 1.&lt;/strong&gt; Any blank line or comment before it means the frontmatter won’t parse at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vague description.&lt;/strong&gt; “Helps with APIs” won’t match much. Write it the way you’d phrase the actual request, with the keywords you’d naturally use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More than one &lt;code&gt;SKILL.md&lt;/code&gt; per folder.&lt;/strong&gt; Each skill needs its own dedicated folder — don’t stack multiple skills’ instructions into one file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expecting a skill below your working directory to load automatically.&lt;/strong&gt; Claude Code loads project skills from where you started up through parent directories to the repo root — not from subdirectories below that, unless you explicitly add that directory to the session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assuming &lt;code&gt;/name&lt;/code&gt; working means the description-matching works too.&lt;/strong&gt; A skill with a broken frontmatter is still manually callable, which can mask the real problem — run the validator instead of just testing the slash command.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Q&amp;amp;A
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I need to restart Claude Code after adding a skill?
&lt;/h3&gt;

&lt;p&gt;Personal and project skills are picked up on the next session start. Skills in directories added mid-session (via &lt;code&gt;/add-dir&lt;/code&gt;) also load at that point without a full restart.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I just have the agent build the skill for me?
&lt;/h3&gt;

&lt;p&gt;Yes — that’s what the copy-paste prompt above is for. Claude Code can create the folder, write the SKILL.md, and run the validator itself instead of you writing the frontmatter by hand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can a skill call other tools automatically?
&lt;/h3&gt;

&lt;p&gt;Yes, unless &lt;code&gt;allowed-tools&lt;/code&gt; restricts it — by default a skill’s instructions run with the same tool access as the rest of the session.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s the difference between a skill and a slash command?
&lt;/h3&gt;

&lt;p&gt;A skill can trigger automatically based on its description matching your request. A plain slash command only runs when you type it explicitly — skills with &lt;code&gt;disable-model-invocation: true&lt;/code&gt; behave like slash commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I share a skill with my team?
&lt;/h3&gt;

&lt;p&gt;Yes — put it under &lt;code&gt;.claude/skills/&lt;/code&gt; in the repo and commit it. Anyone who clones the repo gets it automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;Claude Code Skills Documentation&lt;/a&gt; — full frontmatter reference and troubleshooting&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/plugins" rel="noopener noreferrer"&gt;Plugins Documentation&lt;/a&gt; — bundling multiple skills for distribution&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/best-practices" rel="noopener noreferrer"&gt;Claude Code Best Practices&lt;/a&gt; — real-world skill examples&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://quickpromptco.com/create-install-claude-code-skill-setup-guide/" rel="noopener noreferrer"&gt;quickpromptco.com&lt;/a&gt;, where the guide is kept up to date.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Connect Any MCP Server to Claude Code With One Command (claude mcp add, 2 Minutes)</title>
      <dc:creator>quickpromptco</dc:creator>
      <pubDate>Tue, 29 Sep 2026 14:23:26 +0000</pubDate>
      <link>https://dev.to/juholee/how-to-connect-any-mcp-server-to-claude-code-with-one-command-claude-mcp-add-2-minutes-1gha</link>
      <guid>https://dev.to/juholee/how-to-connect-any-mcp-server-to-claude-code-with-one-command-claude-mcp-add-2-minutes-1gha</guid>
      <description>&lt;p&gt;You find an MCP server that would save you hours, then the setup instructions send you hunting for the right config file to hand-edit JSON and guess which scope it belongs in. One typo and the server doesn’t load, and you’re left guessing why.&lt;/p&gt;

&lt;p&gt;You don’t need to touch that file. MCP (Model Context Protocol) servers give Claude Code access to outside tools and data — a Notion workspace, a Playwright browser, a private API — and Claude Code’s built-in &lt;code&gt;claude mcp&lt;/code&gt; command adds, checks, and removes them for you. This guide walks through both connection types and how to confirm one actually works, in about 2 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;Connect a remote HTTP-based MCP server in one line — no local install, no package to run.&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="nt"&gt;--transport&lt;/span&gt; http notion https://mcp.notion.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Claude Code, then run &lt;code&gt;/mcp&lt;/code&gt; inside a session to see it listed as connected. Total time: about 2 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ Copy This Prompt: Let Claude Code Install and Verify It For You
&lt;/h3&gt;

&lt;p&gt;Skip Steps 1-5 below entirely and hand the whole thing to the agent instead. Fill in the bracketed line with the server you want, paste the rest as-is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You have access to the `claude mcp` CLI in this project. Do the following and report back — do not tell me it's done unless step 3 actually confirms it:

1. Run `claude mcp list` to see what's already configured.
2. Add this MCP server: [PASTE THE SERVER'S NAME, URL/PACKAGE, AND TRANSPORT TYPE HERE — e.g. "notion, https://mcp.notion.com/mcp, http" or "airtable, npx -y airtable-mcp-server, stdio with AIRTABLE_API_KEY=..."]
3. Run `claude mcp list` again and confirm the server shows as Connected.
4. If it does NOT show Connected, do not report success. Tell me: the exact status shown, the most likely cause (missing auth, wrong URL/package name, missing prerequisite), and the specific command to fix it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works because Claude Code can run its own CLI commands in a session — it adds the server, re-checks the connection, and only tells you it’s done once &lt;code&gt;claude mcp list&lt;/code&gt; actually agrees.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You’ll Need
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Why You Need It&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code installed&lt;/td&gt;
&lt;td&gt;The &lt;code&gt;claude mcp&lt;/code&gt; command ships with it — nothing extra to install&lt;/td&gt;
&lt;td&gt;0 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An MCP server URL or package name&lt;/td&gt;
&lt;td&gt;What you’re actually connecting to (remote HTTP endpoint or local npm package)&lt;/td&gt;
&lt;td&gt;~1 min to find&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node.js (for local servers only)&lt;/td&gt;
&lt;td&gt;Most stdio MCP servers run via &lt;code&gt;npx&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;~5 min if missing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API key or token (some servers)&lt;/td&gt;
&lt;td&gt;Private servers need auth headers or env vars to connect&lt;/td&gt;
&lt;td&gt;~2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step-by-Step Setup
&lt;/h2&gt;

&lt;p&gt;Prefer to do it by hand instead of delegating to the agent? Here’s the manual version of the same steps.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1 — Pick a connection type
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote HTTP&lt;/strong&gt; is the recommended default — the server runs elsewhere and Claude Code just connects over the network. &lt;strong&gt;Local stdio&lt;/strong&gt; runs the server as a process on your own machine, usually via &lt;code&gt;npx&lt;/code&gt;. Use HTTP whenever the tool offers it; fall back to stdio for local-only tools like a filesystem or browser server.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2 — Add a remote HTTP server
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;Basic syntax, plus a real example connecting to Notion:&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="nt"&gt;--transport&lt;/span&gt; http notion https://mcp.notion.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the server needs a bearer token, pass it with &lt;code&gt;--header&lt;/code&gt;:&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="nt"&gt;--transport&lt;/span&gt; http secure-api https://api.example.com/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer your-token"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 3 — Or add a local stdio server
&lt;/h4&gt;

&lt;p&gt;~2 min&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;--&lt;/code&gt; to separate Claude’s own options from the command that launches the server. Example: adding the Airtable server with an API key passed as an environment variable:&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="nt"&gt;--env&lt;/span&gt; &lt;span class="nv"&gt;AIRTABLE_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_KEY &lt;span class="nt"&gt;--transport&lt;/span&gt; stdio airtable &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;-y&lt;/span&gt; airtable-mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 4 — Choose a scope
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User scope&lt;/strong&gt; makes the server available across every project on your machine. &lt;strong&gt;Project scope&lt;/strong&gt; writes the server definition into a &lt;code&gt;.mcp.json&lt;/code&gt; file in the project root, so it can be committed and shared with teammates:&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="nt"&gt;--scope&lt;/span&gt; user &lt;span class="nt"&gt;--transport&lt;/span&gt; http claude-code-docs https://code.claude.com/docs/mcp
claude mcp add &lt;span class="nt"&gt;--scope&lt;/span&gt; project &lt;span class="nt"&gt;--transport&lt;/span&gt; http claude-code-docs https://code.claude.com/docs/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A project-scoped server can also be defined directly in &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="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&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;"claude-code-docs"&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;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://code.claude.com/docs/mcp"&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;"playwright"&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;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"stdio"&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;"@playwright/mcp@latest"&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="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;h4&gt;
  
  
  Step 5 — Approve and start using it
&lt;/h4&gt;

&lt;p&gt;~1 min&lt;/p&gt;

&lt;p&gt;Run &lt;code&gt;claude&lt;/code&gt; to start an interactive session. On first launch, project-scoped servers from &lt;code&gt;.mcp.json&lt;/code&gt; show a one-time approval prompt — accept it, and the server’s tools become available in that session.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0popdd6v33ixh4wtfpce.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0popdd6v33ixh4wtfpce.webp" alt="Orange plug going into a socket panel next to other connected cables" width="799" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One command plugs a new server into Claude Code, and /mcp shows what’s connected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Each Piece Does
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Piece&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transport (http / stdio)&lt;/td&gt;
&lt;td&gt;How Claude Code talks to the server — over the network, or as a local process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope (user / project / local)&lt;/td&gt;
&lt;td&gt;Who can see the server — just you everywhere, or a shared project team&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;.mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The project-level config file that lists shared servers, meant to be committed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--header&lt;/code&gt; / &lt;code&gt;--env&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Passes auth tokens or API keys to the server without hardcoding them in the command&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/mcp&lt;/code&gt; panel&lt;/td&gt;
&lt;td&gt;In-session view of every connected server and its live status&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Verify the Connection
&lt;/h2&gt;

&lt;p&gt;List every configured server and its health at a glance:&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what the status column actually looks like, and what each one means:&lt;/p&gt;

&lt;p&gt;✔ notion &amp;nbsp;&amp;nbsp; Connected&lt;br&gt;&lt;br&gt;
! secure-api &amp;nbsp;&amp;nbsp; Needs authentication&lt;br&gt;&lt;br&gt;
✘ airtable &amp;nbsp;&amp;nbsp; Failed to connect&lt;br&gt;&lt;br&gt;
⏸ claude-code-docs &amp;nbsp;&amp;nbsp; Pending approval (run &lt;code&gt;claude&lt;/code&gt; to approve)&lt;/p&gt;

&lt;p&gt;✔ Connected is the only state that means “working.” Everything else needs action: &lt;code&gt;! Needs authentication&lt;/code&gt; (add the missing token), &lt;code&gt;✘ Failed to connect&lt;/code&gt; (check the URL or package name), &lt;code&gt;⏸ Pending approval&lt;/code&gt; (run &lt;code&gt;claude&lt;/code&gt; interactively and accept it). For one server’s full detail:&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 get notion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Mistakes to Avoid
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forgetting the &lt;code&gt;--&lt;/code&gt; separator on stdio servers.&lt;/strong&gt; Without it, Claude Code can’t tell where its own flags end and the server’s launch command begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoding API keys directly in the URL or command.&lt;/strong&gt; Use &lt;code&gt;--header&lt;/code&gt; or &lt;code&gt;--env&lt;/code&gt; instead, so secrets aren’t sitting in your shell history or a committed &lt;code&gt;.mcp.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assuming a listed server is actually working.&lt;/strong&gt; A server appears in &lt;code&gt;claude mcp list&lt;/code&gt; as soon as it’s configured — always check the status column, don’t assume “listed” means “connected.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not restarting after adding a server.&lt;/strong&gt; Claude Code needs a fresh session (or the &lt;code&gt;/mcp&lt;/code&gt; panel refresh) to pick up a newly added server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignoring a pending-approval status.&lt;/strong&gt; Project-scoped servers from a teammate’s &lt;code&gt;.mcp.json&lt;/code&gt; sit unapproved until you run &lt;code&gt;claude&lt;/code&gt; interactively and accept the prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Q&amp;amp;A
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What’s the difference between user scope and project scope?
&lt;/h3&gt;

&lt;p&gt;User scope is private to you and active in every project. Project scope lives in &lt;code&gt;.mcp.json&lt;/code&gt; in the repo, so it’s shared with anyone who clones it — useful for team-standard tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to know how to code to use MCP servers?
&lt;/h3&gt;

&lt;p&gt;No. Adding one is a single CLI command, and once connected, Claude Code calls its tools automatically when relevant — no manual invocation required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I just have the agent do the whole setup?
&lt;/h3&gt;

&lt;p&gt;Yes — that’s what the copy-paste prompt above is for. Claude Code can run its own &lt;code&gt;claude mcp&lt;/code&gt; commands in a session, so it can add a server and re-check the connection itself instead of you typing each command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I remove a server later?
&lt;/h3&gt;

&lt;p&gt;Yes — &lt;code&gt;claude mcp remove &amp;lt;name&amp;gt;&lt;/code&gt; deletes it from config, and for remote servers it also clears any stored OAuth tokens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does a server show “Failed to connect”?
&lt;/h3&gt;

&lt;p&gt;Usually a wrong URL, a missing auth header, or the local package failing to start. Run &lt;code&gt;claude mcp get &amp;lt;name&amp;gt;&lt;/code&gt; for the specific error before troubleshooting further.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/mcp" rel="noopener noreferrer"&gt;Claude Code MCP Documentation&lt;/a&gt; — full command reference and transport options&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.claude.com/docs/en/mcp-quickstart" rel="noopener noreferrer"&gt;MCP Quickstart&lt;/a&gt; — official getting-started walkthrough&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt; — the open spec MCP servers implement&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://quickpromptco.com/connect-mcp-server-claude-code-setup-guide/" rel="noopener noreferrer"&gt;quickpromptco.com&lt;/a&gt;, where the guide is kept up to date.&lt;/em&gt;&lt;/p&gt;

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