> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Started with Base MCP

> Connect Base MCP to your agent in under 5 minutes

export const TruncatedPrompt = ({description, children}) => {
  const extractText = node => {
    if (node == null || typeof node === "boolean") return "";
    if (typeof node === "string" || typeof node === "number") return String(node);
    if (Array.isArray(node)) return node.map(extractText).join("");
    if (typeof node === "object" && node.props) {
      const inner = extractText(node.props.children);
      if (node.type === "code") return "`" + inner + "`";
      return inner;
    }
    return "";
  };
  const text = extractText(children).replace(/\s+/g, " ").trim();
  const [expanded, setExpanded] = useState(false);
  const [copied, setCopied] = useState(false);
  const timeoutRef = useRef(null);
  useEffect(() => () => {
    if (timeoutRef.current) clearTimeout(timeoutRef.current);
  }, []);
  const handleCopy = () => {
    navigator.clipboard.writeText(text).then(() => {
      setCopied(true);
      if (timeoutRef.current) clearTimeout(timeoutRef.current);
      timeoutRef.current = setTimeout(() => setCopied(false), 1500);
    }).catch(() => {});
  };
  const mono = "ui-monospace,'SF Mono','Cascadia Code',Menlo,Monaco,Consolas,monospace";
  const sans = "ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif";
  return <div style={{
    margin: "16px 0",
    borderRadius: 10,
    border: "1px solid rgba(125,125,125,0.25)",
    background: "rgba(125,125,125,0.06)",
    overflow: "hidden"
  }}>
      {description && <div style={{
    display: "flex",
    alignItems: "center",
    justifyContent: "space-between",
    padding: "8px 12px",
    borderBottom: "1px solid rgba(125,125,125,0.18)",
    fontFamily: sans,
    fontSize: 12,
    fontWeight: 600,
    color: "#6b7280",
    letterSpacing: "0.02em"
  }}>
          <span>{description}</span>
        </div>}

      <div style={{
    display: "flex",
    alignItems: "flex-start",
    gap: 8,
    padding: "10px 12px"
  }}>
        <button onClick={() => setExpanded(e => !e)} aria-label={expanded ? "Collapse prompt" : "Expand prompt"} aria-expanded={expanded} style={{
    display: "inline-flex",
    alignItems: "center",
    justifyContent: "center",
    width: 18,
    height: 18,
    marginTop: 2,
    flexShrink: 0,
    background: "transparent",
    border: "none",
    cursor: "pointer",
    padding: 0,
    color: "#6b7280"
  }}>
          <svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" style={{
    transform: expanded ? "rotate(90deg)" : "rotate(0deg)",
    transition: "transform 0.15s ease"
  }}>
            <path d="M8 5l8 7-8 7V5z" />
          </svg>
        </button>

        <code onClick={() => setExpanded(e => !e)} style={{
    flex: 1,
    minWidth: 0,
    fontFamily: mono,
    fontSize: 13,
    lineHeight: 1.55,
    cursor: "pointer",
    whiteSpace: expanded ? "pre-wrap" : "nowrap",
    overflow: expanded ? "visible" : "hidden",
    textOverflow: expanded ? "clip" : "ellipsis",
    wordBreak: expanded ? "break-word" : "normal"
  }}>
          {text}
        </code>

        <button onClick={handleCopy} aria-label={copied ? "Copied" : "Copy prompt"} style={{
    display: "inline-flex",
    alignItems: "center",
    justifyContent: "center",
    width: 24,
    height: 24,
    flexShrink: 0,
    background: "transparent",
    border: "1px solid rgba(125,125,125,0.25)",
    borderRadius: 6,
    cursor: "pointer",
    color: copied ? "#22c55e" : "#6b7280",
    transition: "color 0.15s ease, border-color 0.15s ease"
  }}>
          {copied ? <svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
              <path d="M20 6 9 17l-5-5" />
            </svg> : <svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
              <rect x="9" y="9" width="11" height="11" rx="2" />
              <path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" />
            </svg>}
        </button>
      </div>
    </div>;
};

## Demo

## Steps

<Steps>
  <Step title="Connect the MCP">
    <Tabs>
      <Tab title="Claude">
        <a href="https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Base%20MCP&connectorUrl=https%3A%2F%2Fmcp.base.org" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Add%20to%20Claude-1F1F1F?style=for-the-badge" alt="Add to Claude" noZoom />
        </a>

        Works in Claude.ai and Claude Apps (Desktop, iOS, Android). Click the button above, or:

        1. Open **Customize → Connectors → Add custom connector**
        2. The **Add custom connector** modal opens
        3. Fill in:
           * **Name**: `Base MCP`
           * **Remote MCP server URL**: `https://mcp.base.org`
        4. Click **Add**
        5. Next hit **Connect**, then approve the connection in Base Account. Click **Allow** once to authorize:
      </Tab>

      <Tab title="ChatGPT">
        <a href="https://chatgpt.com/#settings/Connectors" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Add%20to%20ChatGPT-1F1F1F?style=for-the-badge" alt="Add to ChatGPT" noZoom />
        </a>

        Click the button above, or open **Settings → Connectors** manually. Then:

        1. Enable **Developer Mode** if prompted (under Advanced)
        2. Click **Create** to open the **New App** modal
        3. Fill in:
           * **Name**: `Base MCP`
           * **Description** (optional): `Wallet and onchain tools for Base`
           * **MCP Server URL**: `https://mcp.base.org`
           * **Authentication**: `OAuth`
        4. Check **I understand and want to continue** on the risk warning
        5. Click **Create**
        6. You will be automatically redirected to Base Account. Click **Allow** once to authorize.
      </Tab>

      <Tab title="Perplexity">
        <a href="https://www.perplexity.ai/computer/connectors" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Add%20to%20Perplexity-1F1F1F?style=for-the-badge" alt="Add to Perplexity" noZoom />
        </a>

        Click the button above, or open [**Connectors**](https://www.perplexity.ai/computer/connectors) manually. Then:

        1. Search for `Base` to find the **Base by Coinbase** connector
        2. Click to add it
        3. Approve the connection in Base Account. Click **Allow** once to authorize.
      </Tab>

      <Tab title="Claude Code">
        Run this in your terminal to add the server to the current project:

        ```bash Terminal theme={null}
        claude mcp add --transport http base-mcp https://mcp.base.org
        ```

        To install globally (available across all your projects):

        ```bash Terminal theme={null}
        claude mcp add --transport http --scope user base-mcp https://mcp.base.org
        ```

        Verify it connected:

        ```bash Terminal theme={null}
        claude mcp list
        ```

        The `base-mcp` server will show with a tool count once active. You can also run `/mcp` inside a Claude Code session to see server status.
      </Tab>

      <Tab title="Codex">
        ```bash Terminal theme={null}
        codex mcp add base-mcp --url https://mcp.base.org/
        ```

        Or add to your `codex.toml`:

        ```toml codex.toml theme={null}
        [mcp_servers.base-mcp]
        url = "https://mcp.base.org/"
        ```
      </Tab>

      <Tab title="Cursor">
        <a href="cursor://anysphere.cursor-deeplink/mcp/install?name=base-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5iYXNlLm9yZyJ9" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Add%20to%20Cursor-1F1F1F?style=for-the-badge" alt="Add to Cursor" noZoom />
        </a>

        Or add manually to `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project):

        ```json mcp.json theme={null}
        {
          "mcpServers": {
            "base-mcp": {
              "url": "https://mcp.base.org"
            }
          }
        }
        ```

        Restart Cursor, then open **Settings → MCP** to confirm `base-mcp` shows as active.
      </Tab>

      <Tab title="Hermes">
        Hand the agent this quickstart and let it install itself:

        ```text Prompt theme={null}
        Install the Base MCP server from https://docs.base.org/agents/quickstart
        ```

        Hermes will fetch the page, write the entry to `~/.hermes/config.yaml`, and reload — no manual editing needed.

        **Manual install** — if you'd rather edit the config yourself:

        ```yaml ~/.hermes/config.yaml theme={null}
        mcp_servers:
          base-mcp:
            url: "https://mcp.base.org"
        ```

        Then start a Hermes chat (or run `/reload-mcp` inside an existing session) and Hermes will discover the tools automatically.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Install the skill">
    The `base-mcp` skill extends your assistant with pre-built prompts and workflows for wallet operations, token transfers, and DeFi interactions on Base.

    <Tabs>
      <Tab title="Claude">
        <Warning>
          Pick **one** of the options below — don't do both. Running the prompt while a persistent skill is also installed can confuse the assistant about which onboarding to follow.
        </Warning>

        **Option 1: Paste this prompt into a new conversation**

        <TruncatedPrompt description="Onboard via the SKILL.md">
          I'd like to use Base MCP. For setup notes, please open `https://docs.base.org/agents/skills/SKILL.md` as your reference. If your built-in browser can't reach the page, the Base MCP also exposes a `web_request` tool that can fetch it. If a section points to a related file under `references/` or `plugins/`, open that one too when it's relevant to what I'm asking.
        </TruncatedPrompt>

        Nothing to install — Claude reads the skill on the fly and fetches each reference or plugin file only when it needs one.

        **Option 2: Install as a persistent skill**

        <a href="https://github.com/base/skills/releases/download/base-mcp-v0.2.0/base-mcp.zip" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Download%20skill-1F1F1F?style=for-the-badge&logo=download&logoColor=white" alt="Download for Claude" noZoom />
        </a>

        Click the button above to download `base-mcp.zip`, then:

        1. In Claude Desktop or Claude.ai, open [**Customize → Skills**](https://claude.ai/customize/skills)
        2. Click **Upload skill** and select the downloaded `base-mcp.zip`
        3. Toggle the skill on

        Claude activates the skill automatically when relevant to your prompt. See [Use skills in Claude](https://support.claude.com/en/articles/12512180-use-skills-in-claude) for details.
      </Tab>

      <Tab title="ChatGPT">
        <Warning>
          Pick **one** of the options below — don't do both. Running the prompt while a persistent skill is also installed can confuse the assistant about which onboarding to follow.
        </Warning>

        **Option 1: Paste this prompt into a new conversation**

        <TruncatedPrompt description="Onboard via the SKILL.md">
          I'd like to use Base MCP. For setup notes, please open `https://docs.base.org/agents/skills/SKILL.md` as your reference. If your built-in browser can't reach the page, the Base MCP also exposes a `web_request` tool that can fetch it. If a section points to a related file under `references/` or `plugins/`, open that one too when it's relevant to what I'm asking.
        </TruncatedPrompt>

        Nothing to install — ChatGPT reads the skill on the fly and fetches each reference or plugin file only when it needs one. Works on any ChatGPT plan.

        **Option 2: Install as a persistent skill (Business, Enterprise, Edu, Teachers, Healthcare plans)**

        <a href="https://github.com/base/skills/releases/download/base-mcp-v0.2.0/base-mcp.zip" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Download%20skill-1F1F1F?style=for-the-badge&logo=download&logoColor=white" alt="Download for ChatGPT" noZoom />
        </a>

        Click the button above to download `base-mcp.zip`, then:

        1. In ChatGPT, open [**Settings → Skills**](https://chatgpt.com/skills)
        2. Click **Add skill** and upload the downloaded `base-mcp.zip`
        3. Enable the skill for the conversations where you want it active

        See [Skills in ChatGPT](https://help.openai.com/en/articles/20001066-skills-in-chatgpt) for details.
      </Tab>

      <Tab title="Perplexity">
        <a href="https://github.com/base/skills/releases/download/base-mcp-v0.2.0/base-mcp.zip" target="_blank" rel="noopener noreferrer">
          <img src="https://img.shields.io/badge/Download%20skill-1F1F1F?style=for-the-badge&logo=download&logoColor=white" alt="Download for Perplexity" noZoom />
        </a>

        Click the button above to download `base-mcp.zip`, then:

        1. In Perplexity, open [**Skills**](https://www.perplexity.ai/computer/skills)
        2. Click **Create skill** and upload the downloaded `base-mcp.zip`
        3. Enable the skill for the conversations where you want it active
      </Tab>

      <Tab title="Claude Code">
        ```bash Terminal theme={null}
        npx skills add base/skills --skill base-mcp -a claude-code
        ```

        Installs to `~/.claude/skills/base-mcp/`. The skill loads on your next session — Claude Code will use it automatically when wallet questions come up.
      </Tab>

      <Tab title="Codex">
        ```bash Terminal theme={null}
        npx skills add base/skills --skill base-mcp -a codex
        ```

        Installs to `~/.codex/skills/base-mcp/`. Codex picks it up automatically on the next run.
      </Tab>

      <Tab title="Cursor">
        ```bash Terminal theme={null}
        npx skills add base/skills --skill base-mcp -a cursor
        ```

        Installs to `~/.cursor/skills/base-mcp/`. Cursor picks it up automatically — invoke it in agent chat for any wallet workflow.
      </Tab>

      <Tab title="Hermes">
        ```bash Terminal theme={null}
        hermes skills install github:base/skills/base-mcp
        ```

        Installs to `~/.hermes/skills/base-mcp/`. Run `/reload-skills` inside Hermes (or restart the session) and it's available immediately.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Try it">
    Ask your assistant:

    ```text theme={null}
    Show me my wallets
    ```

    ```text theme={null}
    What's my USDC balance on Base?
    ```

    ```text theme={null}
    Send 1 USDC to jesse.base.eth
    ```

    ```text theme={null}
    Find the highest paying USDC yield on Base by APY and deposit 100 USDC
    ```

    Every send, swap, or sign operation will give you an approval link. Open it, review the action in Base Account, and confirm.
  </Step>
</Steps>
