Follow Discord
Sweep 25 Sep 2026 · 19:33Z Build v2.1.283 504 read Stable v2.1.274 Latest v2.1.283 Next v2.1.283 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · claude-docs

One read of Claude Documentationclaude-docs-20260925T180706Z

76 pages moved out of 255 read.

Pages moved 76 significant first
Pages read 255 in this capture
Captured 18:07 UTC
Corpus hash 62975fc51967 corpus-hash

What this read moved

26-50 of 76, page 2 of 4

This capture is too large to show at once. Changes 26-50 of 76 are below, significant first; the rest are on the following screens.

connectors/building/what-to-build Changed · +43 / -37 lines

# Decide what to include in your plugin ## Reach your product with an MCP connector ## Teach Claude your workflows with skills ## Add commands, agents, and UI ## Package and list the plugin # What should I build: MCP, plugin, or both? ## The recommendation ## When to build only one ## What a plugin can bundle ## How they coexist ## Skills are not a standalone directory type ## Build it with Claude

from line 1
1# What should I build: MCP, plugin, or both?
1# Decide what to include in your plugin
22 
3> Decide between an MCP server, a plugin, or both for your Claude integration
3> Decide which pieces your Claude plugin needs: an MCP connector backed by a server you host, skills, commands, agents, or UI, and how they're listed together.
44 
5Most partners ship two things: a remote MCP server and a plugin that wraps it. They serve different purposes, and together they give users the best experience.
5When you build for people who use Claude, you build a plugin. A plugin can package any combination of these pieces:
66 
7## The recommendation
7* An MCP connector that gives Claude access to your product
8* Skills that teach Claude your workflows
9* Commands and agents
10* Interactive UI on the connector
811 
9Build a **remote MCP server with OAuth** first to provide connectivity and core functionality. Then create a **plugin with skills** that helps users get the most out of that MCP server.
12A plugin with only a connector or only skills is complete.
1013 
11| | MCP server | Plugin |
12| ---------------- | ------------------------------------------------ | ------------------------------------------------ |
13| **What it is** | A live tool surface Claude calls over HTTP | An installable bundle of skills and connectors |
14| **Mental model** | "Claude can call your API" | "Claude knows how to *use* your product" |
15| **Contains** | Tools, prompts, resources, optionally MCP App UI | Skills, MCP connector references, slash commands |
16| **Works in** | Claude.ai, Desktop, mobile, Cowork, Claude Code | Claude Code, Cowork |
14This page is for developers deciding which of those pieces their plugin needs. Once you've decided, [Plugin structure and testing](/docs/plugins/build), [Build an MCP server for Claude](/docs/connectors/building/index), and [Publish to the directory](/docs/directory/publish) cover the work.
1715 
18## When to build only one
16<Note>
17 * If you're choosing what to add to your own Claude rather than what to build, see [Connectors, skills, and plugins](/docs/extend/overview), which compares the three from the user's side
18 * If you're building for your own organization and not listing publicly, the same decisions apply, and you distribute the result as a [custom connector](/docs/connectors/custom/add-unlisted#add-a-connector-by-url) and an [organization plugin](/docs/plugins/admin) instead of through the directory
19</Note>
1920 
20**MCP server only** is fine when your integration is simple and doesn't need skills—a few well-named tools that Claude can use without additional guidance.
21## Reach your product with an MCP connector
2122 
22**Plugin only** is fine when you already have a public API or CLI that doesn't need an MCP wrapper. A plugin can ship skills that teach Claude to use that API or CLI directly.
23Include an MCP connector when Claude needs to read from or act in your product or data. The connector points at a remote MCP server that you build and host, with [OAuth sign-in](/docs/connectors/building/authentication) if your tools act on the user's own account. [Build an MCP server for Claude](/docs/connectors/building/index) covers the server, and [Build your first MCP server for Claude](/docs/connectors/building/quickstart) is the place to start if you haven't written one.
2324 
24## What a plugin can bundle
25Once the server is live, people can use your product in chat on web, desktop, and mobile, in Cowork, and in Claude Code. Tools you add to the server later reach every plugin that references it without a new plugin release.
2526 
26A plugin can contain any combination of:
27A plugin can reference remote and local MCP servers, and more than one of each. A remote server reaches users on every surface. A local one runs in Claude Code and in a Cowork session that runs on the user's computer in the desktop app, not in chat, so most plugins reference remote servers.
2728 
28* Skills only
29* A single MCP connector reference
30* Skills plus one or more MCP connectors
31* Multiple MCP connectors
29If you already have a public API or CLI that Claude can use directly, the plugin can leave the connector out: its skills teach Claude to use that API or CLI instead.
3230 
33Plugins can reference both remote and local MCP servers. A remote MCP works on every Claude surface (web, mobile, Cowork, Desktop, Claude Code); a local MCP works only in Claude Desktop and Claude Code. Most MCP servers are remote.
31## Teach Claude your workflows with skills
3432 
35## How they coexist
33Include skills when you want Claude to use your product the way it's meant to be used, instead of however each user happens to prompt. A connector on its own leaves Claude to work out your workflow from tool names. The skills are where you put the sequence of steps, the defaults, and what good output looks like.
3634 
37A plugin references a remote MCP server by **URL**. If a user has both your directory connector and your plugin installed, Claude sees one set of tools—the plugin and the connector point at the same server. If a plugin references an MCP URL that isn't in the directory, the connector appears as **Custom** in the user's settings.
35A connector with a few well-named tools that Claude can use without guidance may not need skills. You can't submit a skill to the directory on its own, so a plugin is also how skills reach the directory.
3836 
39Both MCP servers and plugins can update without Anthropic involvement. When you add tools to your MCP server, plugins that reference it pick them up automatically. Plugin updates are pushed via GitHub and pass through automated screening.
37## Add commands, agents, and UI
4038 
41## Skills are not a standalone directory type
39Commands, agents, and UI are optional pieces, and each fits a particular need:
4240 
43Skills are user-shared micro-workflows. **Plugins are the distribution mechanism for skills**—you can't submit a skill to the directory on its own. If you have skills to ship, bundle them in a plugin.
41* **Commands**: named actions people run themselves, such as `/your-plugin:weekly-report`, for tasks they start deliberately rather than describe
42* **Agents**: specialists Claude can delegate part of a task to. Cowork and Claude Code run them; chat doesn't, as [Plugin feature support across platforms](/docs/plugins/platform-support) lists
43* **An MCP App**: interactive UI that your connector shows in the conversation, such as a form or a chart. [Add interactive UI with MCP Apps](/docs/connectors/building/mcp-apps/getting-started) covers building one
4444 
45## Build it with Claude
45## Package and list the plugin
4646 
47The fastest way to scaffold an MCP server is with Claude itself. Install the official [`mcp-server-dev` plugin](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/mcp-server-dev) in Claude Code and run `/mcp-server-dev:build-mcp-server`—it interviews you about your use case, picks the right deployment model, and generates a working server.
47Most plugins for a product include both an MCP connector and skills: the connector so Claude can reach the product, and the skills so Claude uses it the way you intend. Everything in the plugin is packaged together, so one listing gives people all of it.
4848 
49## Next steps
49When you list the plugin, submit the server too: the plugin as a plugin bundle and the server as an MCP connector. Submitting the server as a connector gives your organization the connector's listing and its dashboard, and lets you pair the two listings. [Submit your plugin, and your MCP server as a connector](/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector) explains the pairing.
5050 
51<Columns cols={2}>
52 <Card title="Build an MCP server" icon="server" href="/docs/connectors/building/index">
53 Start with the MCP building guide.
54 </Card>
51The diagram shows what the server and the plugin each give people. The server gives them your connector. The plugin adds your skills and points to that same server.
5552 
56 <Card title="Build a plugin" icon="puzzle-piece" href="/docs/plugins/overview">
57 Bundle skills and connectors together.
58 </Card>
59</Columns>
53<img className="block dark:hidden" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/what-you-ship.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=532adf863a7d27314b67c68b561ee94d" alt="Diagram in two columns. Left, what you ship: 1, a remote MCP server you host, with your tools; 2, a plugin holding a connector entry with your server's URL and skills that teach Claude how to use your product. Right, what people get: your connector, so Claude can reach your product, and your skills, so Claude uses it the way you intend, in Chat, Cowork, and Claude Code. Three straight arrows: from the server across to your connector, labeled people connect to it; from the plugin's connector entry up to the server, labeled points to the same server; and from the plugin's skills across to your skills, labeled people add the plugin." width="1000" height="440" data-path="images/extend/what-you-ship.svg" />
54 
55<img className="hidden dark:block" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/what-you-ship-dark.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=c68dde016b86337ca85dfa19c538d95e" alt="Diagram in two columns. Left, what you ship: 1, a remote MCP server you host, with your tools; 2, a plugin holding a connector entry with your server's URL and skills that teach Claude how to use your product. Right, what people get: your connector, so Claude can reach your product, and your skills, so Claude uses it the way you intend, in Chat, Cowork, and Claude Code. Three straight arrows: from the server across to your connector, labeled people connect to it; from the plugin's connector entry up to the server, labeled points to the same server; and from the plugin's skills across to your skills, labeled people add the plugin." width="1000" height="440" data-path="images/extend/what-you-ship-dark.svg" />
56 
57In a plugin, you reference a remote MCP server by URL. If a user has both your directory connector and your plugin installed, Claude sees one set of tools, because the plugin and the connector point at the same server.
58 
59If your plugin references an MCP URL that isn't in the directory, the user first adds it as a custom connector from the plugin's **Connectors** tab, and it then has the **Custom** label. On Team and Enterprise plans, an Owner adds the connector for the organization, and members then connect with their own account.
60 
61## Next steps
62 
63* [Plugin structure and testing](/docs/plugins/build): write the folder that packages your connector, skills, and the rest, and installs on every surface
64* [Build an MCP server for Claude](/docs/connectors/building/index): implement the server and its authentication, and test it against Claude
65* [Publish to the directory](/docs/directory/publish): submit the plugin, and its MCP server as a connector, from the [developer portal](https://claude.ai/directory/manage). Anyone on a paid Claude plan can submit, and on Team and Enterprise an Owner submits
6066 

connectors/custom/add-unlisted New page · 275 lines, new page

# Add a connector that isn't in the directory ## Choose a URL or a local install ## Add a connector by URL ### On a Team or Enterprise plan #### Add the connector for the organization #### Connect as a member ### On a Free, Pro, or Max plan ### Choose authentication settings ### Authenticate with request headers #### Add a request header #### Enter the full header value ### Turn connectors on or off in a chat ### Edit or remove a connector ## Install a local connector in the desktop app ### Get a desktop extension from your organization ### Build and package a desktop extension ## Security and privacy ### Connectors you add by URL ### Desktop extensions ### Report a malicious server ## Next steps

A whole new page. There's nothing to diff it against, so here is what it says.

# Add a connector that isn't in the directory

> Connect Claude to an MCP server that isn't in the Connectors Directory, by its URL or as a local desktop extension.

You can connect Claude to a [Model Context Protocol (MCP)](/docs/connectors/building/mcp) server that isn't listed in the [Connectors Directory](/docs/connectors/directory). You add a remote server by its URL as a custom connector. In Claude Desktop, you can also use a desktop extension, which runs the server on your own computer.

This page is for people adding a connector to their own Claude and for Team and Enterprise Owners adding one for their organization.

<Note>
  * If you want a service that's already in the directory, see the [Connectors Directory](/docs/connectors/directory) and connect it from there
  * If you're building the server yourself, see [Build an MCP server for Claude](/docs/connectors/building/index)
  * If your server runs inside your private network, see [MCP tunnels](/docs/connectors/mcp-tunnels/overview)
</Note>

If you have a server URL, go to [Add a connector by URL](#add-a-connector-by-url). If you have a desktop extension, go to [Install a local connector in the desktop app](#install-a-local-connector-in-the-desktop-app).

## Choose a URL or a local install

A connector by URL suits internet-hosted services and public APIs. A desktop extension suits access to local files or tools, sensitive enterprise data, and work that needs offline capability.

| You have                       | Use                                                                                           | Works in                                       |
| ------------------------------ | --------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| The URL of a remote MCP server | [Add a connector by URL](#add-a-connector-by-url)                                             | Free, Pro, Max, Team, and Enterprise plans     |
| A desktop extension            | [Install a local connector in the desktop app](#install-a-local-connector-in-the-desktop-app) | The Claude desktop app, signed in to claude.ai |

## Add a connector by URL

You can add any third-party connector as a custom connector as long as you have the URL of its remote MCP server. On Team and Enterprise plans, an Owner adds the connector for the organization, and members then connect with their own account.

<Warning>
  Custom connectors allow connections to unverified services. Claude can access and perform actions within these services, so review [Security and privacy](#security-and-privacy) before you add one.
</Warning>

### On a Team or Enterprise plan

An Owner adds the connector for the organization. On Enterprise plans, a member whose custom role includes managing the organization's libraries can add it too. If you're a member without one of those roles, you can't add a custom connector yourself, so ask an Owner to add it.

#### Add the connector for the organization

Adding the connector in organization settings makes it appear under [**Customize > Connectors**](https://claude.ai/customize/connectors) for members, with the **Custom** label. To add it:

<Steps>
  <Step title="Open organization connectors">
    Go to [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors).
  </Step>

  <Step title="Add a custom connector">
    Select **Add**, then **Custom**. If Claude asks for the connector type, choose **Web**.
  </Step>

  <Step title="Enter the server URL">
    Enter the remote MCP server URL.
  </Step>

  <Step title="Enter OAuth credentials if needed">
    Optionally, enter an OAuth client ID and secret. See [Choose authentication settings](#choose-authentication-settings).
  </Step>

  <Step title="Add the connector">
    Click **Add**.
  </Step>
</Steps>

#### Connect as a member

Once an Owner has added the connector, each member connects to it with their own account:

<Steps>
  <Step title="Open Customize > Connectors">
    Go to **Customize > Connectors**.
  </Step>

  <Step title="Find the custom connector">
    Find the connector with the **Custom** label.
  </Step>

  <Step title="Connect">
    Click **Connect** to authenticate.
  </Step>
</Steps>

### On a Free, Pro, or Max plan

You add custom connectors to your own account. On the Free plan, you can add one custom connector.

<Steps>
  <Step title="Open Customize > Connectors">
    Go to **Customize > Connectors**.
  </Step>

  <Step title="Add a custom connector">
    Click **Add custom connector**.
  </Step>

  <Step title="Enter the server URL">
    Enter the remote MCP server URL.
  </Step>

  <Step title="Enter OAuth credentials if needed">
    Optionally, enter OAuth credentials. See [Choose authentication settings](#choose-authentication-settings).
  </Step>

  <Step title="Add the connector">
    Click **Add**.
  </Step>
</Steps>

### Choose authentication settings

The layout of the **Add custom connector** dialog varies by organization. If yours shows a name, a URL, and **Advanced settings** on one screen, enter the OAuth client ID and secret under **Advanced settings**. If yours has two steps, it asks you to choose among the settings in this section.

For **MCP server URL**, enter the HTTPS address where the server accepts MCP requests, for example `https://mcp.example.com/mcp`.

For **Authentication**, choose how people connect to the server:

* **Sign in now**: each user signs in through the server's OAuth flow before using the connector
* **Sign in when needed**: Claude connects without credentials and prompts users to sign in when the server asks
* **No sign-in**: anyone with access to the server URL can use the connector. If the server uses an API key, choose **No sign-in** and add the key under **Request headers**. Claude stores the key as the connector's credential

For **OAuth client**, choose how Claude identifies itself to the server's authorization server. You see this setting unless you chose **No sign-in**.

* **Use Claude's published identity**: the recommended option. The server reads Claude's client details from a Client ID Metadata Document that Anthropic hosts. You set nothing up, and the server must support this method
* **Register automatically**: Claude registers OAuth clients with the server as users connect, using Dynamic Client Registration. This works with most servers and adds client registrations over time
* **Use your own OAuth client**: enter a client ID you registered with the server. Leave the secret blank unless your authorization server requires one. See [Authentication for connectors](/docs/connectors/building/authentication)

For **Request headers**, add fixed credentials such as API keys that Claude sends on every request. See [Authenticate with request headers](#authenticate-with-request-headers).

Change **Advanced > Transport** only if the server's documentation says to. A URL ending in `/sse` selects the older SSE transport.

### Authenticate with request headers

<Note>
  Request header authentication is in beta and available to a limited set of organizations. If you don't see the **Request headers** section in the **Add custom connector** dialog, your organization doesn't have access yet.
</Note>

If your MCP server authenticates with an API key, bearer token, or other fixed credential instead of OAuth, configure it in the **Request headers** section of the **Add custom connector** dialog. Claude stores each header value securely, doesn't show it again after you save, and sends it on every request to your server.

Request headers suit services where everyone in your organization shares one credential, such as an internal tool or a service account. If each person needs to sign in with their own account, use OAuth instead.

You can also use request headers in addition to OAuth, including OAuth with your own pre-registered client credentials. Claude sends the headers on every request alongside the OAuth bearer token. Use this to verify where a request came from, to pass additional client metadata, or to work with tunnels and gateways that need their own routing header. On an OAuth connection you can't configure `Authorization` as a request header, because OAuth uses that header.

#### Add a request header

A request header holds a fixed credential, such as an API key, that Claude stores and sends on every request to your server. To add one:

<Steps>
  <Step title="Open Request headers">
    In the **Add custom connector** dialog, open **Request headers**.
  </Step>

  <Step title="Choose the header name">
    Select a header name from the list, or choose **Custom header** to enter a different name. The list offers standard authentication and routing header names such as `authorization`, `x-api-key`, and `x-auth-token`, which every connector can use.
  </Step>

  <Step title="Enter the value">
    Enter the header value exactly as your server expects to receive it.
  </Step>

  <Step title="Mark it required or optional">
    Choose whether the header is **Required**. When a required header has no stored value at connection time, the connection fails. When an optional header has no value, Claude omits it from the request.
  </Step>

  <Step title="Add more headers and save">
    Repeat for any additional headers your server needs, then click **Add**. You can add up to four headers.
  </Step>
</Steps>

Anthropic reviews and approves each custom header name before Claude sends it to a third-party server. This review prevents connector configuration from being used to send arbitrary header names. If you enter a header name that isn't approved, Claude rejects the save with an error. To request approval for a custom header name, contact [Claude support](https://support.claude.com/en/articles/9015913-how-to-get-support).

#### Enter the full header value

Claude sends the value exactly as you enter it. It doesn't add an authentication scheme or any other prefix. For an `Authorization` header, include the scheme in the value, as this table shows.

| You enter           | Claude sends                       |
| ------------------- | ---------------------------------- |
| `Bearer your-token` | `Authorization: Bearer your-token` |
| `your-token`        | `Authorization: your-token`        |

Most servers that use bearer tokens reject a value without the `Bearer ` scheme. If your server's documentation shows `Authorization: Bearer YOUR_TOKEN`, enter `Bearer ` followed by your token, including the space. The same applies to Basic authentication, where you enter `Basic ` followed by the base64-encoded credentials.

### Turn connectors on or off in a chat

You can turn each connector on or off for a single conversation. Click the **+** button in your chat interface and select **Connectors**, then turn each connector on or off for that conversation.

### Edit or remove a connector

You can edit a connector's name or URL, or remove the connector:

<Steps>
  <Step title="Open your connectors">
    Go to **Customize > Connectors**. If you're a Team or Enterprise Owner, go to **Organization settings > Connectors** instead.
  </Step>

  <Step title="Remove or open the menu">
    Click **Remove**, or select the three-dot menu.
  </Step>

  <Step title="Follow the prompts">
    Follow the prompts.
  </Step>
</Steps>

You can't change authentication settings after you add a connector. That covers OAuth credentials and request headers. To change them, remove the connector and add it again with the new details. Members then need to reconnect.

## Install a local connector in the desktop app

A desktop extension is a local MCP server packaged with MCPB (MCP Bundles) that runs on your device inside Claude Desktop. Use one when Claude needs local tools without an internet dependency, or a custom integration with an internal tool.

You can install a desktop extension in the Claude desktop app when you're signed in to claude.ai. Your organization can turn extensions off or limit which ones you can install. When extensions are turned off, **Extensions** doesn't appear in settings.

To install an extension you have as a `.mcpb` file:

<Steps>
  <Step title="Open Settings > Extensions">
    In the Claude desktop app, go to **Settings > Extensions**.
  </Step>

  <Step title="Drag in the file">
    Drag the `.mcpb` file onto the page. Claude opens a preview of the extension.
  </Step>

  <Step title="Install">
    Select **Install**, then confirm.
  </Step>
</Steps>

The extension then appears in the list on the **Extensions** page.

### Get a desktop extension from your organization

On Team and Enterprise plans, your organization can build its own desktop extensions and package them with MCPB. It deploys them through enterprise software management and controls which extensions you can install.

### Build and package a desktop extension

If you're authoring the extension, follow [Build a desktop extension with MCPB](/docs/connectors/building/mcpb) and the [MCPB documentation](https://github.com/modelcontextprotocol/mcpb). You build your MCP server, bundle it with MCPB, test it locally, and then deploy it to your organization.

## Security and privacy

Some connectors in the directory are verified by Anthropic and others are community connectors, as [connector verification](/docs/connectors/verification) explains. A connector you add yourself connects Claude to an unverified service.

### Connectors you add by URL

A remote MCP server gives Claude tools that can read data from applications, create, modify, or delete data, and take actions on your behalf. Before you connect to one, take these precautions:

* Only connect to servers from trusted organizations
* Carefully review requested permission scopes during authentication
* Be aware of prompt injection risks. Claude has built-in protections
* Monitor for unexpected changes in tool behavior

While you use the connector, take these precautions:

* Monitor Claude's actions for unintended effects
* Review tool approval requests carefully
* Only click **Always allow** for trusted servers
* Turn off connectors you aren't using with the toggles in the **Connectors** item of the chat **+** menu
* Block individual tools you don't need under **Customize > Connectors** by selecting the connector and setting the tool's permission to **Blocked**

### Desktop extensions

A desktop extension runs locally with your user permissions:

* It can access only what you can access
* It transmits no data unless the extension is explicitly designed to
* Enterprise organizations get full audit capability
* Administrators can revoke it

### Report a malicious server

Report malicious MCP servers to [Anthropic's Bug Bounty Program](https://www.anthropic.com/responsible-disclosure-policy).

## Next steps

* [Build an MCP server for Claude](/docs/connectors/building/index): build your own remote MCP server for any tool
* [Connector verification](/docs/connectors/verification): which directory connectors Anthropic verifies and which are community connectors
* [MCP in Claude Code](https://code.claude.com/docs/en/mcp-quickstart): add the same server to Claude Code from the command line

connectors/custom/desktop-extensions Page removed · 82 lines, page removed

# Desktop extensions ## What are desktop extensions? ## MCPB (MCP Bundles) ### Key features ## When to use desktop vs remote ## Enterprise deployment ## Security considerations ## Getting started ## Related topics

The page is gone upstream. What it last said is kept here.

connectors/custom/remote-mcp Page removed · 180 lines, page removed

# Third party connectors with remote MCP ## What are third party connectors? ### Finding connectors ## Adding custom connectors ### For Team and Enterprise plans ### For Free, Pro, and Max plans ### Enabling connectors in chat ## The Add custom connector dialog, field by field ## Authenticating with request headers ### Adding a request header ### Enter the full header value ## Managing connectors ## Security and privacy ### Best practices ### Tool actions ## Reporting issues ## Related topics

The page is gone upstream. What it last said is kept here.

connectors/directory Changed · +42 / -30 lines

## Understand how the directory works ## Browse the directory ## Request a connector on a Team plan ## Recognize when a connector's endpoint changes ## Submit to the directory ## Next steps ## How the directory works ## Browsing the directory ## Requesting a connector on a Team plan ## When a connector's endpoint changes ## Submitting to the directory ## Related topics

from line 1
11# Connectors directory
22 
3> Browse verified and community MCP integrations for Claude
3> Browse verified and community MCP connectors in the Connectors Directory, one catalog for claude.ai, Claude Desktop, mobile, Claude Code, and Cowork
44 
5The Connectors Directory is a catalog of [MCP](/docs/connectors/building/mcp) servers that work across all Claude products — Claude.ai, Claude Desktop, Claude Mobile, Claude Code, and Cowork.
5The Connectors Directory is a catalog of [MCP](/docs/connectors/building/mcp) servers that work across all Claude products: claude.ai, Claude Desktop, Claude Mobile, Claude Code, and Cowork.
66 
7The directory contains both verified connectors and community connectors. Verified connectors have been tested by Anthropic for quality and compatibility and met the Software Directory Policy requirements at the time of review, though verification is not a security audit. Anthropic screens community connectors before listing but does not review them in depth. The label reflects the level of review each connector received, not how it works: once connected, a community connector has the same capabilities and access as any connector you grant. See [connector verification](/docs/connectors/verification) to learn what each label means.
7The directory contains both verified connectors and community connectors. Verification isn't a security audit. [Connector verification](/docs/connectors/verification) explains what each label means.
88 
99<Note>
1010 All connectors in the directory are subject to the [Anthropic Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy) and the [Anthropic Software Directory Terms](https://support.claude.com/en/articles/13145338-anthropic-software-directory-terms).
1111</Note>
1212 
13## How the directory works
13## Understand how the directory works
1414 
15* The same catalog serves Claude.ai, Cowork, Desktop, mobile, and Claude Code.
16* Directory connectors are eligible for **Suggested Connectors**—in-chat recommendations when relevant to the user's task. Every directory entry is included automatically.
17* Ranking is usage-based, similar to other app stores.
18* No domain-ownership proof (DNS or `.well-known`) is required—that requirement applies only to the open MCP Registry, not the Anthropic Directory.
19* The help-docs link shown in the in-product connector setup flow is not partner-customizable.
15* The same catalog serves claude.ai, Cowork, Desktop, mobile, and Claude Code
16* Directory connectors are eligible for **Suggested Connectors**, which are in-chat recommendations shown when relevant to the user's task. Every directory entry is included automatically
17* Ranking is usage-based, similar to other app stores
18* No domain-ownership proof (DNS or `.well-known`) is required. That requirement applies only to the open MCP Registry, not the Anthropic Directory
19* The help-docs link shown in the in-product connector setup flow is not partner-customizable
2020 
21Directory connectors and custom connectors run on the same infrastructure—see [directory vs custom](/docs/connectors/building/directory-vs-custom).
21Directory connectors and custom connectors run on the same infrastructure. See [directory vs custom](/docs/connectors/building/directory-vs-custom).
2222 
23## Browsing the directory
23## Browse the directory
2424 
2525Access the Connectors Directory through:
2626 
2727* **[Customize > Connectors](https://claude.ai/customize/connectors)** in claude.ai
28* **[Organization settings > Connectors](https://claude.ai/admin-settings/connectors)** for Team/Enterprise admins
28* **[Organization settings > Connectors](https://claude.ai/admin-settings/connectors)** for Team and Enterprise Owners
2929 
30## Requesting a connector on a Team plan
30On Team and Enterprise plans, an Owner adds a connector for the organization, and members then connect with their own account. On Enterprise plans, a member whose custom role includes managing the organization's libraries can add one too.
3131 
32On Claude Team plans, members who do not have permission to enable connectors see a **Request** button on each directory connector instead of a connect action. Selecting **Request** sends the connector to your organization's admins for review. The button changes to **Requested** while the request is pending.
32## Request a connector on a Team plan
3333 
34If you are a Team admin with permission to manage connectors, member requests appear in two places:
34On Claude Team plans, members who do not have permission to enable connectors see a **Request** button on each directory connector instead of a connect action. Selecting **Request** sends the request to your organization's Owners. The button changes to **Requested** while the request is pending.
3535 
36* **[Organization settings > Connectors](https://claude.ai/admin-settings/connectors)** shows a **Requested by your team** section above the connector list.
37* **[Organization settings > Notifications](https://claude.ai/admin-settings/notifications)** lists each requested connector on the **Requests** tab, and the **Notifications** item in the admin sidebar shows a count badge while requests are pending.
36If you are an Owner on a Team plan, member requests appear in two places:
3837 
38* **[Organization settings > Connectors](https://claude.ai/admin-settings/connectors)** shows a **Requested by your team** section above the connector list
39* **[Organization settings > Notifications](https://claude.ai/admin-settings/notifications)** lists each requested connector on the **Requests** tab, and the **Notifications** item in the admin sidebar shows a count badge while requests are pending
40 
3941From either location you can enable the connector for your organization or dismiss the request. Claude shows the requesting member the outcome the next time they open the connectors directory.
4042 
41## When a connector's endpoint changes
43## Recognize when a connector's endpoint changes
4244 
4345Occasionally a provider updates the endpoint URL behind its directory listing, for example moving a server from `https://mcp.example.com/sse` to `https://mcp.example.com/mcp`. This is a routine change on the provider's side. Here is what you may notice in Claude:
4446 
45* **Your existing connection keeps working.** Connectors you added before the change keep using the endpoint they were installed with, and your authentication is unaffected.
46* **It appears as a custom connector.** Because your connector no longer matches the updated directory listing, it shows under "Custom" in [Customize > Connectors](https://claude.ai/customize/connectors) instead of as a named directory connector.
47* **The directory listing shows as not installed.** Adding the connector from the directory again without removing the original gives you two connections: your original one and a new one on the updated endpoint.
47* **Your existing connection keeps working.** Connectors you added before the change keep using the endpoint they were installed with, and your authentication is unaffected
48* **It appears as a custom connector.** Because your connector no longer matches the updated directory listing, it shows under **Custom** in **[Customize > Connectors](https://claude.ai/customize/connectors)** instead of as a named directory connector
49* **The directory listing shows as not installed.** Adding the connector from the directory again without removing the original gives you two connections: your original one and a new one on the updated endpoint
4850 
4951To move to the new endpoint, remove the connector and re-add it from the directory. Claude prompts you to authenticate with the service again.
5052 
51## Submitting to the directory
53## Submit to the directory
5254 
5355Organizations can submit their MCP servers for review and inclusion in the directory:
5456 
551. Review the [submission guidelines](/docs/connectors/building/submission)
562. Ensure your server meets security and compatibility standards
573. Submit through the [submission portal](https://claude.ai/admin-settings/directory/submissions/new) in Claude.ai admin settings
57<Steps>
58 <Step title="Review the submission guidelines">
59 Review the [submission guidelines](/docs/connectors/building/submission).
60 </Step>
5861 
59Submitting requires a Team or Enterprise organization and directory management access (organization Owners by default); see [Before you start](/docs/connectors/building/submission#before-you-start). After publication, the same dashboard shows your server's health and usage; see [Managing your listing](/docs/connectors/building/managing-your-listing).
62 <Step title="Meet the standards">
63 Ensure your server meets security and compatibility standards.
64 </Step>
6065 
61## Related topics
66 <Step title="Submit in the developer portal">
67 Submit through the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage).
68 </Step>
69</Steps>
6270 
63<Card title="Build a connector" icon="code" href="/docs/connectors/building/index">
64 Create your own MCP server.
65</Card>
71Anyone on a paid Claude plan can submit, and on Team and Enterprise an Owner submits; see [who can submit to the directory](/docs/directory/publish#confirm-you-can-submit-to-the-directory) for the role and organization requirements. After publication, the same dashboard shows your server's health and usage; see [Manage your directory listing](/docs/connectors/building/managing-your-listing).
72 
73## Next steps
74 
75* [Connector verification](/docs/connectors/verification): what the Verified and Community labels mean
76* [Get started with connectors](/docs/connectors/getting-started): set up a connector and use it in conversations
77* [Build an MCP server for Claude](/docs/connectors/building/index): create your own MCP server
6678 

connectors/getting-started Changed · +74 / -91 lines

## Before you begin ## Add a connector from the directory ## Use the connector in a conversation ## Manage or disconnect a connector ## Where connectors work ## Next steps ## What you'll learn ## Prerequisites ## Setting up your first connector ### Step 1: Access connector settings ### Step 2: Choose a connector ### Step 3: Authenticate ## Using connectors in conversations ### In chat ### In projects ## Connector-specific tips ### Google Drive ### Gmail & Calendar ### GitHub ### Slack ### Microsoft 365 ## Best practices ## Troubleshooting ## Related topics

from line 1
11# Get started with connectors
22 
3> Learn to connect Claude to your tools and data
3> Connect Claude to an app or service from the Connectors directory, turn the connector on in a conversation, and manage or disconnect it later.
44 
5This tutorial walks you through setting up and using Claude's connector integrations to enhance your workflow.
5A connector links Claude to an outside app or service, such as your calendar, your documents, or your issue tracker, so Claude can find information there and take actions for you.
66 
7## What you'll learn
7This page is for anyone who wants to add a connector to their own Claude account, in claude.ai or the Claude desktop app. You connect one from Anthropic's directory, use it in a conversation, and learn where to turn it off or disconnect it afterward.
88 
9* Setting up your first connector
10* Using connectors in conversations
11* Best practices for each integration
12* Troubleshooting common issues
9If you already know which connector you want, open [**Customize > Connectors**](https://claude.ai/customize/connectors) and follow [Add a connector from the directory](#add-a-connector-from-the-directory).
1310 
14## Prerequisites
11<Note>
12 * If the service you want isn't in the directory and you have its server URL, see [Add a connector that isn't in the directory](/docs/connectors/custom/add-unlisted#add-a-connector-by-url)
13 * If you're building a connector, see [Build an MCP server for Claude](/docs/connectors/building/index)
14 * If you're a Team or Enterprise Owner deciding which connectors your organization offers, see [Browse the directory](/docs/connectors/directory#browse-the-directory) to add them from organization settings and handle member requests
15</Note>
1516 
16* A Claude account (Pro, Max, Team, or Enterprise for most connectors)
17* Accounts on the services you want to connect
17## Before you begin
1818 
19## Setting up your first connector
19To add a connector you need:
2020 
21### Step 1: Access connector settings
21* A Claude account, signed in at claude.ai or in the Claude desktop app
22* An account with the service you're connecting. That service is run by its provider, which may require its own account or paid plan
2223 
231. Go to [claude.ai](https://claude.ai)
242. Select **Customize** in the sidebar
253. Select **Connectors**
24On Team and Enterprise plans, an Owner adds a connector for the organization, and members then connect with their own account.
2625 
27### Step 2: Choose a connector
26## Add a connector from the directory
2827 
29Available connectors include:
28The Connectors directory lists the connectors that Anthropic and other providers offer. You reach it from **Customize**, the page in claude.ai and the desktop app that holds your connectors, skills, and plugins.
3029 
31* Google Drive, Gmail, Calendar
32* GitHub
33* Slack
34* Microsoft 365
30<Steps>
31 <Step title="Open the Connectors page">
32 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors). In the desktop app, select **Customize** in the sidebar, then **Connectors**.
33 </Step>
3534 
36### Step 3: Authenticate
35 <Step title="Find the connector">
36 Select **Discover** to browse the directory. Enter a service name in **Search connectors**, or look through the categories, then select a connector to open its page.
3737 
381. Click "Connect" next to your chosen service
392. Log in to your account on that service
403. Grant Claude the requested permissions
414. Return to Claude
38 Each listing carries a Verified or Community label. [Connector verification](/docs/connectors/verification) explains what each one means.
39 </Step>
4240 
43## Using connectors in conversations
41 <Step title="Start the connection">
42 Select **Connect to Claude**. Some connectors first ask for details such as a server URL or the region your account is hosted in. Enter them and continue.
4443 
45### In chat
44 On a Team or Enterprise plan, what you see depends on whether the connector has been added for your organization:
4645 
471. Start a new conversation
482. Click the "+" button
493. Select "Add from \[Service]"
504. Choose the content you want to include
515. Ask your question
46 * If it hasn't, you see **Request** or a note to ask an organization Owner instead of a connect button. [Request a connector on a Team plan](/docs/connectors/directory#request-a-connector-on-a-team-plan) covers what happens next
47 * If you're an Owner, the button reads **Connect for your team** and adds the connector for everyone in your organization. You then connect your own account with **Connect to Claude**. To try the connector without adding it for everyone, select the arrow next to **Connect for your team**, then **Connect just for me**
48 </Step>
5249 
53### In projects
50 <Step title="Sign in to the service">
51 Claude takes you to the service's sign-in page:
5452 
551. Open your project
562. Click "Add Content"
573. Select the connector
584. Add documents to your project knowledge
53 * On claude.ai, the page opens in the same browser tab
54 * In the desktop app, the page opens in your browser
5955 
60## Connector-specific tips
56 Sign in, review the access Claude asks for, and approve it.
6157 
62### Google Drive
58 A connector that doesn't use sign-in connects as soon as you select the button, with no page to visit.
59 </Step>
6360 
64* Best for: Document analysis, research
65* Add multiple Google Docs for comprehensive context
66* Documents sync automatically with updates
61 <Step title="Confirm the connection">
62 When sign-in finishes and you're back on the **Connectors** page, the connector is listed under **Your connectors** with the status **Connected**.
63 </Step>
64</Steps>
6765 
68### Gmail & Calendar
66## Use the connector in a conversation
6967 
70* Best for: Finding information, scheduling context
71* Ask questions like "What did Sarah say about the budget?"
72* Claude can search your emails but can't send them
68A connected connector is available in your conversations on the web, desktop, and mobile. You choose in each conversation whether Claude can use it.
7369 
74### GitHub
70<Steps>
71 <Step title="Make sure the connector is on">
72 In a new or existing chat, select **+** in the message box and select **Connectors**. The connector you connected is in the list with a toggle next to it. The toggle controls whether Claude can use the connector in this conversation. If it's off, turn it on.
73 </Step>
7574 
76* Best for: Code understanding, documentation
77* Add entire repositories or specific files
78* Use with Projects for persistent codebase context
75 <Step title="Ask for something the service holds">
76 Send a message that needs the service, such as "What's on my calendar tomorrow afternoon?" for a calendar connector or "Summarize the open issues assigned to me" for an issue tracker.
77 </Step>
7978 
80### Slack
79 <Step title="Approve the tool call">
80 Claude can ask for your approval before it uses one of the connector's tools. Select **Allow once** to continue, or **Always allow** to skip the prompt for that tool from now on. You can change this later under the connector's [tool permissions](#manage-or-disconnect-a-connector).
81 </Step>
82</Steps>
8183 
82* Best for: Finding discussions, team context
83* Search channels and direct messages
84* Requires installing the earlier Claude in Slack app first
84To stop Claude from using a connector in a conversation, turn its toggle off in the same **+** menu. The connector stays connected: Claude is still signed in to the service on your account, and you can turn the toggle back on in any conversation. To sign Claude out of the service entirely, [disconnect the connector](#manage-or-disconnect-a-connector).
8585 
86### Microsoft 365
86## Manage or disconnect a connector
8787 
88* Best for: Enterprise document search
89* Access SharePoint, OneDrive, Outlook, Teams
90* Requires a work or school Microsoft account
88Everything about a connector you've added is on its own page. Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) and select the connector under **Your connectors**. From that page you can:
9189 
92## Best practices
90* **Set tool permissions**: under **Tool permissions**, choose **Always allow**, **Needs approval**, or **Blocked** for each group of tools or for a single tool
91* **Disconnect**: select **Disconnect** to sign Claude out of the service. The connector stays in your list and shows **Connect**, so you can sign in again later
92* **Remove**: open the three-dot menu and select **Remove** to take the connector off your account. On Team and Enterprise plans, an Owner removes a connector for the organization from **Organization settings > Connectors**
9393 
941. **Connect what you need**: Only connect services with relevant data
952. **Review permissions**: Understand what Claude can access
963. **Keep context focused**: Don't overload with too much data
94If Claude loses access to the service later, the connector's row shows **Reconnect**. Select it and sign in again.
9795 
98## Troubleshooting
96## Where connectors work
9997 
100<AccordionGroup>
101 <Accordion title="Connector won't authenticate">
102 * Clear browser cookies and try again
103 * Check that you have the right account permissions
104 * Try a different browser
105 </Accordion>
98Connectors work across the Claude apps. Each app supports these kinds:
10699 
107 <Accordion title="Data not showing up">
108 * Verify you have access to the data in the source service
109 * Wait a moment for sync to complete
110 * Try disconnecting and reconnecting
111 </Accordion>
100* **claude.ai on the web**: remote connectors, including MCP Apps that display interactive content in the conversation
101* **Claude desktop app**: remote connectors, plus local connectors installed as desktop extensions
102* **Claude mobile app**: remote connectors
103* **Claude Code**: the connectors you add in claude.ai are available in Claude Code, in the terminal and in cloud sessions, when you sign in with your Claude account. See [Use MCP servers from claude.ai](https://code.claude.com/docs/en/mcp#use-mcp-servers-from-claude-ai)
104* **Cowork**: connectors and plugins
112105 
113 <Accordion title="Connection expired">
114 * Go to Customize > Connectors
115 * Click "Reconnect" or "Refresh"
116 * Re-authenticate with the service
117 </Accordion>
118</AccordionGroup>
106Most connectors are remote services that you sign in to, as the steps on this page describe. A local connector is a desktop extension, packaged as an MCP Bundle (MCPB), that runs on your computer in the Claude desktop app. To add one, see [Install a local connector in the desktop app](/docs/connectors/custom/add-unlisted#install-a-local-connector-in-the-desktop-app).
119107 
120## Related topics
108## Next steps
121109 
122<Columns cols={2}>
123 <Card title="Connectors Overview" icon="plug" href="/docs/connectors/overview">
124 See all available connectors.
125 </Card>
126 
127 <Card title="Custom Connectors" icon="code" href="/docs/connectors/custom/remote-mcp">
128 Build your own integrations with MCP.
129 </Card>
130</Columns>
110* [Connectors directory](/docs/connectors/directory): how the directory is organized and how requests work on a Team plan
111* [Add a connector that isn't in the directory](/docs/connectors/custom/add-unlisted): connect Claude to any remote MCP server by its URL, or install a desktop extension
112* [Install and use plugins](/docs/plugins/overview#bundled-connectors): add a plugin that bundles connectors with the skills that use them
113* [Connectors, skills, and plugins](/docs/extend/overview): decide which of the three fits what you want Claude to do
131114 

connectors/github/index Changed · +81 / -46 lines

## Add repository content ## Connect a private repository ## Try the connector ## Keep repository content current ## Review what Claude retrieves from GitHub ## Next steps ## Adding GitHub repositories ### In chats ### In projects ## Connecting to private repositories ## What information is retrieved ## Frequently asked questions

from line 1
11# GitHub integration
22 
3> Connect your code repositories to Claude
3> Add files and folders from your GitHub repositories to a conversation or project so Claude can read your code
44 
5Connect GitHub repositories directly to Claude to provide comprehensive context for software development tasks. Claude can understand your codebase and assist with development questions.
5The GitHub integration lets you add files and folders from your GitHub repositories to a conversation or a project, so Claude can read your code and answer development questions with that context. It's available on every plan, including Free, and works with public repositories and with private repositories you grant access to.
66 
7By the end of this page you have added repository content to a chat or a project and asked Claude about it. Claude reads file names and contents only: it doesn't see commit history, pull requests, or issues.
8 
79<Note>
8 Available on all plans including Free.
10 If you want Claude to edit code, run commands, and open pull requests in your repository, see [Claude Code](https://code.claude.com/docs).
911</Note>
1012 
11## Adding GitHub repositories
13## Add repository content
1214 
13### In chats
15You can add repository content to a single conversation, or to a [project](https://support.claude.com/en/articles/9517075-what-are-projects), a workspace in Claude where a set of chats share the same background documents. Choose the tab below for where you want the content available. If you haven't signed in to GitHub from Claude yet, Claude sends you to GitHub to sign in before you continue.
1416 
151. Click the "+" button in the lower left corner of the chat interface
162. Select "Add from GitHub" from the dropdown menu
173. Use the file browser to select specific files and folders
184. When sending your message, Claude accesses and processes the selected content
17<Tabs>
18 <Tab title="In a chat">
19 <Steps>
20 <Step title="Open the add menu">
21 In the conversation, select **+** at the lower left of the message box.
22 </Step>
1923 
20### In projects
24 <Step title="Choose GitHub">
25 Select **Add from GitHub**.
26 </Step>
2127 
221. Click the "+" button in your project knowledge section
232. Select "GitHub" from the dropdown
243. Search accessible repositories or paste a repository URL
254. Use the file browser to select specific files and folders
265. Your selected content is added to project knowledge
28 <Step title="Select files and folders">
29 Use the file browser to select the files and folders you want Claude to read.
30 </Step>
2731 
28**Keeping content current:**
32 <Step title="Send your message">
33 Write your question and send it. Claude reads and processes the selected content when you send the message.
34 </Step>
35 </Steps>
36 </Tab>
2937 
30* Use the "Sync" icon to ensure you're working with the latest codebase
31* Use the "Configure files" icon to modify which files Claude analyzes
38 <Tab title="In a project">
39 You can add repository content only to a private project, one you haven't shared with other people. In a shared project, the **GitHub** option is dimmed and shows **Only accessible from private projects**.
3240 
33<Note>
34 If you're not authenticated with GitHub, you'll be redirected to authenticate before using the integration.
35</Note>
41 <Steps>
42 <Step title="Open project knowledge">
43 Open the project and, in its project knowledge section, select **+**.
44 </Step>
3645 
37## Connecting to private repositories
46 <Step title="Choose GitHub">
47 Select **GitHub**.
48 </Step>
3849 
39If you see a warning after entering a valid URL, you're likely attempting to connect to a private repository.
50 <Step title="Pick a repository">
51 Search the repositories you have access to, or paste a repository URL.
52 </Step>
4053 
41Follow the link to the GitHub App where you can:
54 <Step title="Select files and folders">
55 Use the file browser to select the files and folders you want Claude to read.
56 </Step>
57 </Steps>
4258 
43* **Grant access yourself**: Choose between allowing Claude access to all repos or specific ones
44* **Request access**: GitHub organization administrators receive an email notification. Once approved, you can sync and access the repository
59 The selected content is added to the project's knowledge.
60 </Tab>
61</Tabs>
4562 
46## Best practices
63## Connect a private repository
4764 
481. **Start small**: Begin with a small codebase subset to understand how Claude interprets your code
492. **Iterate and refine**: Ask follow-up questions if initial responses need clarification
503. **Combine with human expertise**: Use Claude's insights as a starting point for team discussion
514. **Thoughtful file selection**: Include key files central to your task while staying within token limits
525. **Regular updates**: Refresh GitHub sync periodically, especially before new analysis or major repo changes
65If a warning appears after you enter a valid repository URL, the repository is most likely private and Claude doesn't have access to it yet. Follow the link in the warning to the Claude GitHub App, where you have two options:
5366 
54## What information is retrieved
67* **Grant access yourself**: allow Claude access to all of your repositories or only to specific ones
68* **Request access**: your GitHub organization's administrators receive an email notification. Once they approve, you can sync and add the repository
5569 
56| Retrieved | Not Retrieved |
70## Try the connector
71 
72After you add repository content, ask Claude something that depends on the code you selected. For example, ask Claude:
73 
74* Explain how request authentication works in these files
75* Where is the retry logic, and what happens when it gives up?
76 
77Claude answers from the names and contents of the files you selected on the branch you chose. It doesn't see commit history, pull requests, issues, or repository metadata; [Review what Claude retrieves from GitHub](#review-what-claude-retrieves-from-github) has the full list.
78 
79## Keep repository content current
80 
81After you add a repository, use these controls in your project knowledge to keep its content current and scoped to what you need:
82 
83* **Sync**: select **Sync now** on the repository in your project knowledge to fetch the latest changes, especially before a new analysis or after major changes to the repository
84* **Change the selection**: select **Configure files** to change which files and folders Claude reads
85* **Multiple repositories**: you can add several repositories for broader context, as long as the selected content fits within Claude's context window
86* **Lost access**: if you lose access to a repository, you can no longer view its contents in projects where it was added. The repository preview is removed, but your conversation history remains
87 
88## Review what Claude retrieves from GitHub
89 
90The table lists what the integration reads from a repository and what it leaves out.
91 
92| Retrieved | Not retrieved |
5793| -------------- | ------------------- |
5894| File names | Commit history |
5995| File contents | Pull requests |
from line 96
6096| Branch content | Issues |
6197| | Repository metadata |
6298 
63## Frequently asked questions
99## Best practices
64100 
65<AccordionGroup>
66 <Accordion title="What if my repository updates after adding it?">
67 Click "Sync now" to fetch the latest changes from your repository.
68 </Accordion>
101These habits help Claude give useful answers about a codebase:
69102 
70 <Accordion title="Can I add multiple repositories?">
71 Yes, add multiple repositories to provide comprehensive context, provided they fit within Claude's context window.
72 </Accordion>
103* **Start small**: begin with a small subset of the codebase to see how Claude interprets your code
104* **Select files thoughtfully**: include the files central to your task while staying within token limits
105* **Iterate and refine**: ask follow-up questions when an initial response needs clarification
106* **Combine with human expertise**: treat Claude's analysis as a starting point for team discussion
107* **Sync regularly**: refresh the GitHub sync periodically, especially before a new analysis or after major repository changes
73108 
74 <Accordion title="What happens if I lose repository access?">
75 You won't be able to view its contents in projects where it was previously added. The repository preview is removed, but conversation history remains.
76 </Accordion>
77</AccordionGroup>
109## Next steps
110 
111* [Get started with connectors](/docs/connectors/getting-started): set up another connector and use it in conversations
112* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
78113 

connectors/google/calendar Changed · +40 / -52 lines

# Google Calendar ## Try the connector ## Next steps # Google Calendar integration ## How to use Calendar integration ### 1. Ask about your schedule ### 2. Review Claude's response ### 3. Follow up ### Authentication ### Data access ## Related topics

from line 1
1# Google Calendar integration
1# Google Calendar
22 
3> Access your calendar and meeting information with Claude
3> Connect the Google Calendar connector so Claude can answer questions about your meetings, attendees, and availability.
44 
5The Google Calendar integration enables Claude to understand your calendar commitments, helping you manage your schedule more effectively.
5The Google Calendar connector lets Claude read your calendar so it can answer questions about your meetings, attendees, and availability. It's available on Pro, Max, Team, and Enterprise plans. On Team and Enterprise plans, an Owner or Primary Owner enables it for the organization before members can connect.
66 
7By the end of this page you have connected your Google account and asked Claude a first question about your schedule. Claude reads your calendar only; it can't create or change events or send invitations.
8 
79<Note>
8 Available on Pro, Max, Team, and Enterprise plans.
10 If your organization uses Outlook or Teams calendars, see [Microsoft 365](/docs/connectors/microsoft/365) instead.
911</Note>
1012 
1113## Connect Google Calendar
1214 
131. In claude.ai, go to **Customize > Connectors**.
142. Find Google Calendar and click **Connect**.
153. Sign in to your Google account and grant the requested permissions.
15You connect Google Calendar once from your connector settings, and Claude can then read your calendar in any conversation where you turn the connector on.
1616 
17On Team and Enterprise plans, an Owner or Primary Owner must enable the integration for your organization before it appears in your connector list. For the full walkthrough, including troubleshooting, see [Get started with connectors](/docs/connectors/getting-started).
17<Steps>
18 <Step title="Open your connectors">
19 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) in claude.ai. **Customize** is the page that holds your connectors, skills, and plugins.
20 </Step>
1821 
19## How to use Calendar integration
22 <Step title="Connect Google Calendar">
23 Find **Google Calendar** in the list and select **Connect**.
24 </Step>
2025 
21### 1. Ask about your schedule
26 <Step title="Sign in to Google">
27 Sign in to your Google account and grant the requested permissions.
28 </Step>
29</Steps>
2230 
23Simply ask Claude questions about your calendar. Claude automatically detects when calendar data is needed.
31When the connection succeeds, the **Connect** button on the Google Calendar connector changes to **Disconnect**.
2432 
25**Example questions:**
33On Team and Enterprise plans, Google Calendar doesn't appear in your connector list until an Owner or Primary Owner enables it for your organization. For the full walkthrough, including troubleshooting, see [Get started with connectors](/docs/connectors/getting-started).
2634 
27* "What meetings do I have tomorrow?"
28* "When is my next meeting with the product team?"
29* "Do I have any conflicts next week?"
30* "Who's attending the budget review meeting?"
35## Try the connector
3136 
32### 2. Review Claude's response
37In a conversation, select **+** at the lower left of the message box, select **Connectors**, and turn on **Google Calendar**. Then ask a question about your schedule. Claude detects when calendar data is needed and reads your calendar to answer. For example, ask Claude:
3338 
34Claude provides answers that include:
39* What meetings do I have tomorrow?
40* When is my next meeting with the product team?
41* Do I have any conflicts next week?
42* Who's attending the budget review meeting?
3543 
36* Clear answers to your questions
37* Citations indicating which calendar events were used
38* Links to original events when applicable
44Claude's answer includes citations that show which calendar events it used, with links to the original events where applicable. You can follow up in the same conversation to ask about attendees, event timing and duration, or related meetings and patterns.
3945 
40### 3. Follow up
41 
42You can ask for more details about:
43 
44* Meeting attendees
45* Event timing and duration
46* Related meetings and patterns
47 
4846## Privacy and data handling
4947 
50### Authentication
48You authenticate directly with your Google account, and Claude's access follows these rules:
5149 
52You must authenticate directly to your Google account. For Claude for Work (Team/Enterprise) plans, an Owner or Primary Owner must enable integrations at the account level.
50* Claude accesses only data from the Google account you connected
51* Claude reads your calendar only when your request calls for it
52* Claude retrieves the minimum information needed to answer your question
53* Your existing calendar permissions apply, so Claude can search only the calendars you can access
5354 
54### Data access
55 
56* Claude accesses only data from your connected Google account
57* Access occurs only when you explicitly request it
58* Minimum information is retrieved to answer your question
59* Your existing calendar permissions are mirrored
60 
6155## Limitations
6256 
63<Warning>
64 * Claude cannot create, modify, or delete calendar events
65 * Claude cannot send calendar invitations
66 * Only calendars you have access to can be searched
67</Warning>
57The connector is read-only:
6858 
69## Related topics
59* Claude can't create, modify, or delete calendar events
60* Claude can't send calendar invitations
61* Claude can search only the calendars you have access to
7062 
71<Columns cols={2}>
72 <Card title="Gmail" icon="envelope" href="/docs/connectors/google/gmail">
73 Search and analyze your emails.
74 </Card>
63## Next steps
7564 
76 <Card title="Google Drive" icon="google-drive" href="/docs/connectors/google/drive">
77 Connect your documents.
78 </Card>
79</Columns>
65* [Gmail](/docs/connectors/google/gmail): search and analyze your emails
66* [Google Drive](/docs/connectors/google/drive): search and read your Drive files
67* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
8068 

connectors/google/drive Changed · +106 / -62 lines

# Google Drive ## Connect Google Drive ## What Claude can read from Drive ## Add Drive files to a chat or project ## Try the connector ## Reconnect or remove Google Drive ## Next steps # Google Drive integration ## How to add Google Docs ### In chats ### In projects ## Supported file types ## Key features ## Frequently asked questions ## Troubleshooting ## Related topics

from line 1
1# Google Drive integration
1# Google Drive
22 
3> Connect Google Docs directly to Claude
3> Connect the Google Drive connector so Claude can search your Drive, read Docs, Sheets, Slides, and PDFs, and use Drive files in chats and projects.
44 
5The Google Drive integration lets you connect Google Docs directly to Claude on paid Claude.ai plans. You can add documents by pasting URLs or selecting recent files to provide context for your conversations.
5The Google Drive connector lets Claude search your Google Drive, read the files it finds, and create new files there. Google builds and runs the connector, and each person who uses it signs in with their own Google account, so Claude can reach only the files that account can open. Once you connect it, you can turn it on in any Claude conversation and pick Drive files to add to a chat or to a project's knowledge.
66 
7To get going, [connect Google Drive](#connect-google-drive) and then [try a first question](#try-the-connector).
8 
79<Note>
8 Available on Pro, Max, Team, and Enterprise plans.
10 If you want Claude to search your email or calendar rather than your files, see [Gmail](/docs/connectors/google/gmail) or [Google Calendar](/docs/connectors/google/calendar).
911</Note>
1012 
11## How to add Google Docs
13## Connect Google Drive
1214 
13### In chats
15You connect Google Drive once from your connector settings, and Claude can then use it in any conversation where you turn the connector on.
1416 
151. Click the plus sign (+) in the chat interface
162. Select "Add from Google Drive"
173. Authenticate with Google on first use
184. Search recent documents or paste a document URL
195. Claude accesses and processes the document when you send your message
17<Steps>
18 <Step title="Open your connectors">
19 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) in claude.ai. **Customize** is the page that holds your connectors, skills, and plugins.
20 </Step>
2021 
21### In projects
22 <Step title="Connect Google Drive">
23 Find **Google Drive** in the list and select **Connect**.
24 </Step>
2225 
23The integration works only in private projects:
26 <Step title="Sign in to Google">
27 Sign in to your Google account and grant the requested permissions.
28 </Step>
29</Steps>
2430 
251. Click "Add Content" in project knowledge
262. Select "Google Drive"
273. Authenticate on first use
284. Search or paste a document URL
295. The document becomes available to Claude within that project
31When the connection succeeds, the **Connect** button on the Google Drive connector changes to **Disconnect**.
3032 
31## Supported file types
33On Team and Enterprise plans, Google Drive doesn't appear in your connector list until an Owner adds it for your organization. Each member then connects their own Google account. For the full walkthrough, including troubleshooting, see [Get started with connectors](/docs/connectors/getting-started).
3234 
33| Type | Supported | Notes |
34| -------------------- | --------- | -------------------------------- |
35| Google Docs | ✅ | Up to 10MB, text extraction only |
36| Google Sheets | ❌ | Not currently supported |
37| Google Slides | ❌ | Not currently supported |
38| Images in docs | ❌ | Not extracted |
39| Comments/Suggestions | ❌ | Not extracted |
35## What Claude can read from Drive
4036 
41<Tip>
42 Convert .docx files by opening in Google Docs, clicking "File," then "Save as Google Docs."
43</Tip>
37With the connector turned on in a conversation, Claude can search your Drive, list your recent files, check a file's details and who it's shared with, and read a file's content. The table shows which file types Claude can read this way.
4438 
45## Key features
39| File type | Claude can read it |
40| ------------------------------------------------------ | ------------------ |
41| Google Docs | Yes |
42| Google Sheets | Yes |
43| Google Slides | Yes |
44| PDF | Yes |
45| Word, Excel, and PowerPoint files | Yes |
46| OpenDocument text, spreadsheet, and presentation files | Yes |
47| PNG and JPEG images | Yes |
4648 
47* **Live sync**: Documents continue syncing with the latest Google Drive version
48* **Multiple documents**: Add multiple docs if they fit the context window
49* **Permission-based**: You can only sync documents you have permission to view
49Two limits apply to every type:
5050 
51## Frequently asked questions
51* **Very large files**: the content Claude receives can be incomplete for a very large file
52* **Comments and suggestions**: Claude can't read a file's comments or suggested edits, only its content
5253 
53<AccordionGroup>
54 <Accordion title="Do documents update after I add them?">
55 Yes, documents continue syncing with the latest Google Drive version.
56 </Accordion>
54## Add Drive files to a chat or project
5755 
58 <Accordion title="Can I add multiple documents?">
59 Yes, you can add multiple docs as long as they fit within the context window.
60 </Accordion>
56Besides letting Claude search on its own, you can pick specific Drive files yourself. A file you pick is attached to the conversation, or added to a [project](https://support.claude.com/en/articles/9517075-what-are-projects)'s knowledge so every chat in that project can use it. The picker lists your Google Docs, Sheets, and Slides.
6157 
62 <Accordion title="What happens if I lose access to a document?">
63 You'll lose document preview access but your conversation history remains.
64 </Accordion>
65</AccordionGroup>
58<Tabs>
59 <Tab title="In a chat">
60 <Steps>
61 <Step title="Open the add menu">
62 In the conversation, select **+** at the lower left of the message box.
63 </Step>
6664 
67## Troubleshooting
65 <Step title="Choose Google Drive">
66 Select **Add from Google Drive**.
67 </Step>
6868 
69For reconnection errors:
69 <Step title="Pick a file">
70 Search for the file by name, or select it from the list.
71 </Step>
7072 
711. Navigate to **Customize > Connectors**
722. Find Google Drive
733. Click the menu button (...)
744. Select "Disconnect"
755. Authenticate again when prompted
73 <Step title="Send your message">
74 Write your question and send it. Claude reads the file's current content from Drive each time you send a message, so later edits in Drive reach Claude too.
75 </Step>
76 </Steps>
77 </Tab>
7678 
77For persistent issues, disconnect from Google account connections at [myaccount.google.com](https://myaccount.google.com), search "Claude for Google Drive," and delete all connections.
79 <Tab title="In a project">
80 You can add Drive files only to a private project, one you haven't shared with other people. In a shared project, the **Google Drive** option is dimmed and shows **Only accessible from private projects**. To add a file to a private project's knowledge:
7881 
79## Related topics
82 <Steps>
83 <Step title="Open the add menu">
84 Open the project and, in its knowledge section, select **Add files**.
85 </Step>
8086 
81<Columns cols={2}>
82 <Card title="Gmail" icon="envelope" href="/docs/connectors/google/gmail">
83 Search and analyze your emails.
84 </Card>
87 <Step title="Choose Google Drive">
88 Select **Google Drive**.
89 </Step>
8590 
86 <Card title="Google Calendar" icon="calendar" href="/docs/connectors/google/calendar">
87 Access your calendar information.
88 </Card>
89</Columns>
91 <Step title="Pick a file">
92 Search for the file, paste its Google Drive URL, or select it from the list.
93 </Step>
94 </Steps>
95 
96 The file appears in the project's knowledge and is available to Claude in every chat in that project. Its content refreshes from Drive periodically when you open the project.
97 </Tab>
98</Tabs>
99 
100Claude receives a text version of each file you add this way:
101 
102* **Google Docs**: converted to Markdown, without the images in the document
103* **Google Sheets**: converted to CSV, with every tab included
104* **Google Slides**: converted to plain text
105 
106Google caps exports of Docs, Sheets, and Slides at about 10 MB. For a file over that cap, Claude receives the file's name and details but not its content.
107 
108## Try the connector
109 
110In a conversation, select **+** at the lower left of the message box, select **Connectors**, and turn on **Google Drive**. Then ask a question that needs your files. For example, ask Claude:
111 
112* Find the design brief for the onboarding project in my Drive and summarize the open decisions
113* Read the Q3 budget spreadsheet and tell me which lines are over plan
114* What files have I worked on in the last week?
115 
116Claude can ask for your approval before it uses one of the connector's tools. Its answer draws on the files it read, and you can follow up in the same conversation to ask about another file or a detail in the same one.
117 
118## Reconnect or remove Google Drive
119 
120Everything about the connector after you've added it is on its own page. Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) and select **Google Drive** under **Your connectors**. From that page you can:
121 
122* **Reconnect**: if Claude has lost access to your Google account, the connector's row shows **Reconnect**. Select it and sign in again
123* **Disconnect**: select **Disconnect** to sign Claude out of Google. The connector stays in your list and shows **Connect**, so you can sign in again later
124* **Remove**: open the three-dot menu and select **Remove** to take the connector off your account
125 
126If a reconnection error keeps coming back, select **Disconnect**, then **Connect**, and sign in to Google again.
127 
128## Next steps
129 
130* [Gmail](/docs/connectors/google/gmail): search and analyze your emails
131* [Google Calendar](/docs/connectors/google/calendar): access your calendar information
132* [Get started with connectors](/docs/connectors/getting-started#manage-or-disconnect-a-connector): set tool permissions and manage any connector
133* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
90134 

connectors/google/gmail Changed · +39 / -55 lines

# Gmail ## Try the connector ## Next steps # Gmail integration ## How to use Gmail integration ### 1. Ask a question ### 2. Review Claude's response ### 3. Follow up ## Understanding citations ### Authentication ### Data access ## Related topics

from line 1
1# Gmail integration
1# Gmail
22 
3> Search and analyze emails with Claude
3> Connect the Gmail connector so Claude can search your email and answer questions from your messages, with citations back to each one.
44 
5The Gmail integration enables Claude to search your emails and provide answers based on your email content, reducing time spent retrieving information.
5The Gmail connector lets Claude search your email and answer questions from what it finds, with citations that link back to the messages it used. It's available on Pro, Max, Team, and Enterprise plans. On Team and Enterprise plans, an Owner or Primary Owner enables it for the organization before members can connect.
66 
7By the end of this page you have connected your Google account and asked Claude a first question about your email. Claude reads and searches email only; it can't create, send, or modify messages.
8 
79<Note>
8 Available on Pro, Max, Team, and Enterprise plans.
10 If your organization uses Outlook, see [Microsoft 365](/docs/connectors/microsoft/365) instead.
911</Note>
1012 
1113## Connect Gmail
1214 
131. In claude.ai, go to **Customize > Connectors**.
142. Find Gmail and click **Connect**.
153. Sign in to your Google account and grant the requested permissions.
15You connect Gmail once from your connector settings, and Claude can then search your email in any conversation where you turn the connector on.
1616 
17On Team and Enterprise plans, an Owner or Primary Owner must enable the integration for your organization before it appears in your connector list. For the full walkthrough, including troubleshooting, see [Get started with connectors](/docs/connectors/getting-started).
17<Steps>
18 <Step title="Open your connectors">
19 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) in claude.ai. **Customize** is the page that holds your connectors, skills, and plugins.
20 </Step>
1821 
19## How to use Gmail integration
22 <Step title="Connect Gmail">
23 Find **Gmail** in the list and select **Connect**.
24 </Step>
2025 
21### 1. Ask a question
26 <Step title="Sign in to Google">
27 Sign in to your Google account and grant the requested permissions.
28 </Step>
29</Steps>
2230 
23Simply ask Claude a question that needs email information. Claude automatically detects when email data is needed.
31When the connection succeeds, the **Connect** button on the Gmail connector changes to **Disconnect**.
2432 
25**Example questions:**
33On Team and Enterprise plans, Gmail doesn't appear in your connector list until an Owner or Primary Owner enables it for your organization. For the full walkthrough, including troubleshooting, see [Get started with connectors](/docs/connectors/getting-started).
2634 
27* "What did Sarah say about the project deadline?"
28* "Find emails about the Q4 budget review"
29* "Summarize my conversation with the sales team last week"
35## Try the connector
3036 
31### 2. Review Claude's response
37In a conversation, select **+** at the lower left of the message box, select **Connectors**, and turn on **Gmail**. Then ask a question that needs your email. Claude detects when email data is needed and searches Gmail to answer. For example, ask Claude:
3238 
33Claude provides answers that include:
39* What did Sarah say about the project deadline?
40* Find emails about the Q4 budget review
41* Summarize my conversation with the sales team last week
3442 
35* Clear answers to your questions
36* Citations indicating which emails were used
37* Links to original sources when applicable
43Claude's answer includes citations that show which emails it used, with links to the original messages where applicable, so you can open a message to verify the answer or read more context. You can follow up in the same conversation to ask for more detail, find related threads, or summarize a longer exchange.
3844 
39### 3. Follow up
40 
41You can ask for more details, such as:
42 
43* Requesting additional email information
44* Finding related threads
45* Summarizing longer conversations
46 
47## Understanding citations
48 
49Citations show which specific emails Claude used to answer your question. You can follow links back to original sources for verification and additional context.
50 
5145## Privacy and data handling
5246 
53### Authentication
47You authenticate directly with your Google account, and Claude's access follows these rules:
5448 
55You must authenticate directly to your Google account. For Claude for Work (Team/Enterprise) plans, an Owner or Primary Owner must enable integrations at the account level.
49* Claude accesses only data from the Google account you connected
50* Claude searches your email only when your request calls for it
51* Claude retrieves the minimum information needed to answer your question
52* Your existing Gmail permissions apply, so Claude can search only the email you can access
5653 
57### Data access
58 
59* Claude accesses only data from your connected Google account
60* Access occurs only when you explicitly request it
61* Minimum information is retrieved to answer your question
62* Your existing Gmail permissions are mirrored
63 
6454## Limitations
6555 
66<Warning>
67 * Claude cannot create, send, or modify emails
68 * Embedded images in emails are not visible to Claude
69 * Only emails you have access to can be searched
70</Warning>
56The connector is read-only, and some email content isn't visible to Claude:
7157 
72## Related topics
58* Claude can't create, send, or modify emails
59* Claude can't see images embedded in emails
60* Claude can search only the emails you have access to
7361 
74<Columns cols={2}>
75 <Card title="Google Calendar" icon="calendar" href="/docs/connectors/google/calendar">
76 Access your calendar information.
77 </Card>
62## Next steps
7863 
79 <Card title="Google Drive" icon="google-drive" href="/docs/connectors/google/drive">
80 Connect your documents.
81 </Card>
82</Columns>
64* [Google Calendar](/docs/connectors/google/calendar): access your calendar information
65* [Google Drive](/docs/connectors/google/drive): search and read your Drive files
66* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
8367 

connectors/mcp-tunnels/oauth Changed · +17 / -10 lines

## Understand how OAuth works through a tunnel ## Next steps ## How OAuth works through a tunnel

from line 1
11# Authenticate to MCP servers behind a tunnel
22 
3> Make OAuth sign-in work for MCP servers reached through an MCP tunnel when the authorization server or identity provider is inside your network. Covers the Tunnel OAuth configuration fields (issuer, authorization endpoint, token endpoint, registration endpoint, scopes) and the split-metadata alternative.
3> Make OAuth sign-in work for MCP servers reached through an MCP tunnel when the authorization server or identity provider is inside your network.
44 
55<Note>
66 MCP tunnels are in research preview and are available to organizations on the Claude Enterprise plan by request. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team.
from line 8
88 
99An MCP tunnel carries Claude's requests to an MCP server inside your network, but it does not authenticate to that server. Each tunneled server should still require OAuth, as the [MCP authorization specification](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization) describes, so that a member signs in with their own account before Claude can call the server's tools. This page is for the administrator adding a tunneled server as a custom connector, and explains what to configure when the OAuth authorization server is itself only reachable inside your network.
1010 
11If your authorization server is reachable from the public internet and its metadata advertises public URLs, you don't need anything on this page. Add the connector as described in [Set up an MCP tunnel](/docs/connectors/mcp-tunnels/setup#add-tunneled-servers-as-connectors) and members sign in as they would for any other connector.
11<Note>
12 If your authorization server is reachable from the public internet and its metadata advertises public URLs, you don't need anything on this page. Add the connector as described in [Set up an MCP tunnel](/docs/connectors/mcp-tunnels/setup#add-tunneled-servers-as-connectors), and members sign in as they would for any other connector.
13</Note>
1214 
13## How OAuth works through a tunnel
15## Understand how OAuth works through a tunnel
1416 
1517Two different parties make requests during an OAuth sign-in, and they reach your authorization server by different paths.
1618 
17* **The member's browser** is redirected to the authorization endpoint to sign in and approve access. This request comes from the member's device, so the authorization endpoint must be a URL their browser can load, either on the public internet or on your corporate network. It can't be a `tunnel.anthropic.com` hostname, because tunnel hostnames accept connections only from Claude.
18* **Claude's servers** fetch the authorization server's metadata, register an OAuth client if the server supports dynamic registration, and exchange the authorization code for tokens at the token endpoint. These requests come from Anthropic's network, so the endpoints must be reachable from there, either publicly or through the tunnel.
19* **The member's browser** is redirected to the authorization endpoint to sign in and approve access. This request comes from the member's device, so the authorization endpoint must be a URL their browser can load, either on the public internet or on your corporate network. It can't be a `tunnel.anthropic.com` hostname, because tunnel hostnames accept connections only from Claude
20* **Claude's servers** fetch the authorization server's metadata, register an OAuth client if the server supports dynamic registration, and exchange the authorization code for tokens at the token endpoint. These requests come from Anthropic's network, so the endpoints must be reachable from there, either publicly or through the tunnel
1921 
20By default Claude discovers all of these URLs from the metadata your MCP server and authorization server publish. When the authorization server sits inside your network, that metadata usually advertises internal hostnames. Claude then can't reach the token endpoint, or the member's browser is sent to an address it can't load, and sign-in fails.
22By default Claude discovers the authorization server's endpoint URLs from the metadata your MCP server and authorization server publish. When the authorization server sits inside your network, that metadata usually advertises internal hostnames. Claude then can't reach the token endpoint, or the member's browser is sent to an address it can't load, and sign-in fails.
2123 
22You fix this by routing Claude's server-to-server calls through the tunnel and telling Claude explicitly which URL to use for each endpoint.
24You fix this sign-in failure by routing Claude's server-to-server calls through the tunnel and telling Claude explicitly which URL to use for each endpoint.
2325 
2426## Route the authorization server through the tunnel
2527 
from line 37
3537 
3638## Set the Tunnel OAuth configuration
3739 
38When you add the tunneled MCP server as a custom connector in **Organization settings > Connectors**, turn on **Tunnel OAuth configuration** in the connector dialog. The values you enter replace the ones Claude would otherwise read from the authorization server's metadata. Anthropic enables this option for each organization in the research preview on request, so if the toggle does not appear in the dialog, contact your Anthropic account team.
40When you add the tunneled MCP server as a custom connector in [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors), turn on **Tunnel OAuth configuration** in the connector dialog. The values you enter replace the ones Claude would otherwise read from the authorization server's metadata. Anthropic enables this option for each organization in the research preview on request, so if the toggle does not appear in the dialog, contact your Anthropic account team.
3941 
4042| Field | What to enter | Example |
4143| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
from line 49
4749 
4850The paths after the hostname (`/authorize`, `/oauth/token`, and so on) are whatever your authorization server uses. Copy them from its metadata document, usually served at `/.well-known/oauth-authorization-server` or `/.well-known/openid-configuration`, and change only the scheme and host.
4951 
50After you save the connector, connect it yourself from your own connector settings. Your browser should land on your sign-in page, and after you approve access the connector should show as connected. If either step fails, see [Troubleshooting](/docs/connectors/mcp-tunnels/troubleshooting#sign-in-redirects-to-a-tunnel-address-that-does-not-load).
52After you save the connector, connect it yourself from your own connector settings. Your browser should open your sign-in page, and after you approve access the connector should show as connected. If either step fails, see [Troubleshooting](/docs/connectors/mcp-tunnels/troubleshooting#sign-in-redirects-to-a-tunnel-address-that-does-not-load).
5153 
5254## Publish split metadata instead
5355 
from line 74
7274}
7375```
7476 
75This approach also suits an authorization server that is publicly reachable but sits behind a source-IP allowlist that you don't want to open to Anthropic's egress ranges. The [platform troubleshooting guide](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/troubleshooting#oauth-fails-behind-a-source-ip-allowlist) walks through the same configuration.
77Publishing split metadata also suits an authorization server that is publicly reachable but sits behind a source-IP allowlist that you don't want to open to Anthropic's egress ranges. The [platform troubleshooting guide](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/troubleshooting#oauth-fails-behind-a-source-ip-allowlist) walks through the same configuration.
7678 
7779Use **Tunnel OAuth configuration** when the authorization server is a product whose metadata you can't edit, or when you prefer to keep tunnel-specific addresses out of the server's configuration. Use split metadata when you control the authorization server and want the configuration to apply to every client that discovers it through the tunnel.
80 
81## Next steps
82 
83* [Add tunneled servers as connectors](/docs/connectors/mcp-tunnels/setup#add-tunneled-servers-as-connectors): where you add the connector and turn on **Tunnel OAuth configuration**
84* [Troubleshoot OAuth sign-in](/docs/connectors/mcp-tunnels/troubleshooting#oauth-sign-in): fix sign-in redirects that don't load and token exchanges that fail
7885 

connectors/mcp-tunnels/overview Changed · +21 / -34 lines

## Decide when to use an MCP tunnel ## Understand how tunnel traffic flows ## Meet the tunnel requirements ## When to use an MCP tunnel ## How traffic flows ## What you need

from line 1
11# MCP tunnels
22 
3> Connect Claude to MCP servers inside your private network without opening inbound firewall ports or exposing the servers to the internet. How MCP tunnels work, what you deploy, network and plan requirements, and the security model.
3> Connect Claude to MCP servers inside your private network without opening inbound firewall ports or exposing the servers to the internet.
44 
55<Note>
66 MCP tunnels are in research preview and are available to organizations on the Claude Enterprise plan by request. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team. The preview is provided as-is, without uptime, support, or continuity commitments, and it depends on a third-party network provider (Cloudflare) that makes no availability commitment for the underlying transport. Anthropic may modify or discontinue MCP tunnels at any time.
77</Note>
88 
9MCP tunnels connect Claude to [Model Context Protocol (MCP)](/docs/connectors/building/mcp) servers that run inside your private network. You run a small tunnel stack on a host in your network, the stack opens an outbound-only connection to Anthropic, and Claude sends MCP requests to your servers over that connection. Your firewall needs no inbound rules and your MCP servers need no public endpoint. Members of your organization use the tunneled servers as [custom connectors](/docs/connectors/custom/remote-mcp) in Claude, the same way they use any other remote MCP server.
9MCP tunnels connect Claude to [Model Context Protocol (MCP)](/docs/connectors/building/mcp) servers that run inside your private network. You run a small tunnel stack on a host in your network, the stack opens an outbound-only connection to Anthropic, and Claude sends MCP requests to your servers over that connection. Your firewall needs no inbound rules and your MCP servers need no public endpoint. Members of your organization use the tunneled servers as [custom connectors](/docs/connectors/custom/add-unlisted#add-a-connector-by-url) in Claude, the same way they use any other remote MCP server.
1010 
1111This section is for administrators of claude.ai organizations on the Enterprise plan and the infrastructure teams they work with. To use MCP tunnels with the Claude Console, Claude Managed Agents, or the Messages API, see [MCP tunnels in the Claude Platform docs](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/overview). A tunnel belongs to the organization that created it, so a tunnel created from a Console organization can't serve connectors in claude.ai, and a tunnel created from claude.ai can't serve the API.
1212 
13## When to use an MCP tunnel
13## Decide when to use an MCP tunnel
1414 
1515Use a tunnel when the MCP server your organization wants to reach from Claude is only reachable inside your network, and your security policy rules out giving it a public endpoint or allowlisting Anthropic's IP ranges at your edge. Internal knowledge bases, ticketing systems, and data services wrapped in an MCP server are typical candidates.
1616 
17If the MCP server is already reachable from the internet, you don't need a tunnel. Add it as a [custom connector](/docs/connectors/custom/remote-mcp) directly.
17If the MCP server is already reachable from the internet, you don't need a tunnel. Add it as a [custom connector](/docs/connectors/custom/add-unlisted#add-a-connector-by-url) directly.
1818 
19## How traffic flows
19## Understand how tunnel traffic flows
2020 
2121The tunnel stack is two containers that you run inside your network, from images that Anthropic and Cloudflare publish:
2222 
23* **cloudflared** is Cloudflare's open-source tunnel connector. It dials out from your network to the tunnel edge and keeps that connection open. It never listens on an inbound port.
24* **The proxy** (`mcp-proxy`) is Anthropic's routing component. It terminates an inner layer of TLS, checks that each destination address falls inside an allowed private range, and forwards each request to the right MCP server based on the hostname it was sent to.
23* **cloudflared** is Cloudflare's open-source tunnel connector. It dials out from your network to the tunnel edge and keeps that connection open. It never listens on an inbound port
24* **The proxy** (`mcp-proxy`) is Anthropic's routing component. It terminates an inner layer of TLS, checks that each destination address falls inside an allowed private range, and forwards each request to the right MCP server based on the hostname it was sent to
2525 
2626When you create a tunnel, Anthropic assigns it a domain such as `abc123.tunnel.anthropic.com`. Each MCP server you expose gets a subdomain of that domain, chosen by you in the proxy's route configuration. A route named `docs` that points at `http://docs-mcp.example.corp:8080` makes that server reachable from Claude at `https://docs.abc123.tunnel.anthropic.com`.
2727 
from line 33
3333 
3434Hostnames under `tunnel.anthropic.com` accept connections only from Claude. You can't open them in a browser or test them with `curl` from your own network, so you verify a tunnel by using it from Claude.
3535 
36## What you need
36## Meet the tunnel requirements
3737 
38* A claude.ai organization on the Enterprise plan with MCP tunnels enabled. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team.
39* The Owner or Primary Owner role in that organization, to create the API key the tunnel setup uses and to add the tunneled servers as connectors.
40* A place to run the tunnel stack inside your network: a Kubernetes cluster (deployed with Helm) or a Linux host with Docker and Docker Compose. One stack serves one tunnel, and you can run replicas of it on several hosts for availability.
41* One or more MCP servers that speak the Streamable HTTP transport and are reachable from that cluster or host.
42* Outbound network access from the stack as listed under [Network requirements](#network-requirements).
38* A claude.ai organization on the Enterprise plan with MCP tunnels enabled. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team
39* The Owner or Primary Owner role in that organization, to create the API key the tunnel setup uses and to add the tunneled servers as connectors
40* A place to run the tunnel stack inside your network: a Kubernetes cluster (deployed with Helm) or a Linux host with Docker and Docker Compose. One stack serves one tunnel, and you can run replicas of it on several hosts for availability
41* One or more MCP servers that speak the Streamable HTTP transport and are reachable from that cluster or host
42* Outbound network access from the stack as listed under [Network requirements](#network-requirements)
4343 
4444### Network requirements
4545 
from line 82
8282 
8383## Limits
8484 
85* An organization can have up to 10 active tunnels.
86* A tunnel holds up to two active CA certificates at a time, so you can rotate without downtime.
87* The server certificate that the setup component generates is valid for 90 days.
88* The proxy connects to upstream MCP servers over IPv4 only, and by default only to addresses in the RFC 1918 private ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`).
85* An organization can have up to 10 active tunnels
86* A tunnel holds up to two active CA certificates at a time, so you can rotate without downtime
87* The server certificate that the setup component generates is valid for 90 days
88* The proxy connects to upstream MCP servers over IPv4 only, and by default only to addresses in the RFC 1918 private ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`)
8989 
9090## Next steps
9191 
92<Columns cols={2}>
93 <Card title="Set up an MCP tunnel" icon="rocket" href="/docs/connectors/mcp-tunnels/setup">
94 Create the API key, deploy the tunnel stack with Helm or Docker Compose, and add your servers as connectors.
95 </Card>
96 
97 <Card title="Authenticate through a tunnel" icon="lock" href="/docs/connectors/mcp-tunnels/oauth">
98 Make OAuth sign-in work when your authorization server is inside your network.
99 </Card>
100 
101 <Card title="Troubleshooting" icon="wrench" href="/docs/connectors/mcp-tunnels/troubleshooting">
102 Diagnose connection, certificate, routing, and sign-in failures.
103 </Card>
104 
105 <Card title="Platform reference" icon="book" href="https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference">
106 Proxy configuration fields, certificate requirements, and the setup component.
107 </Card>
108</Columns>
92* [Set up an MCP tunnel](/docs/connectors/mcp-tunnels/setup): create the API key, deploy the tunnel stack with Helm or Docker Compose, and add your servers as connectors
93* [Authenticate through a tunnel](/docs/connectors/mcp-tunnels/oauth): make OAuth sign-in work when your authorization server is inside your network
94* [Troubleshooting](/docs/connectors/mcp-tunnels/troubleshooting): diagnose connection, certificate, routing, and sign-in failures
95* [Platform reference](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference): proxy configuration fields, certificate requirements, and the setup component
10996 

connectors/mcp-tunnels/setup Changed · +144 / -68 lines

### Replace the Tunnels API key ### Rotate the tunnel token ### Renew the server certificate ## Next steps

from line 1
11# Set up an MCP tunnel
22 
3> Create a Tunnels API key in claude.ai, deploy the MCP tunnel stack with Helm or Docker Compose, verify the connection, add tunneled MCP servers as custom connectors, rotate the tunnel token and certificates, and remove a tunnel.
3> Create a Tunnels API key, deploy the MCP tunnel stack with Helm or Docker Compose, verify the connection, and add tunneled MCP servers as custom connectors.
44 
55<Note>
66 MCP tunnels are in research preview and are available to organizations on the Claude Enterprise plan by request. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team.
from line 8
88 
99This page covers the full setup of an MCP tunnel for a claude.ai Enterprise organization, from creating the API key that provisioning uses to members calling a tunneled MCP server from Claude. You need the Owner or Primary Owner role in claude.ai, and someone who can deploy containers to a Kubernetes cluster or a Docker host inside your network. Read [MCP tunnels](/docs/connectors/mcp-tunnels/overview) first if the tunnel stack, the tunnel domain, and routes are unfamiliar.
1010 
11The deployment steps on this page are reference deployments. You are responsible for adapting them to your organization's security requirements. For the full set of proxy options, certificate requirements, and hardening guidance, see the [MCP tunnels reference](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference) and [MCP tunnels security](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/security) pages in the Claude Platform docs. Those pages describe the Claude Console flow, which authenticates the setup component differently. For a claude.ai organization, follow the authentication steps on this page.
12 
1311## Create a Tunnels API key
1412 
1513The setup component that runs alongside the tunnel stack needs a short-lived credential to create the tunnel, register its certificate authority (CA) certificate with Anthropic, and fetch the tunnel token. In claude.ai that credential is a Tunnels API key.
1614 
171. In claude.ai, go to **Organization settings > Tunnels**. This page appears once Anthropic has enabled MCP tunnels for your organization.
182. Open **Tunnels API** and create a key.
193. Copy the key somewhere safe for the next section. You pass it to the setup component once.
15<Steps>
16 <Step title="Open Organization settings > Tunnels">
17 In claude.ai, go to **Organization settings > Tunnels**. This page appears once Anthropic has enabled MCP tunnels for your organization.
18 </Step>
2019 
20 <Step title="Create a key">
21 Open **Tunnels API** and create a key.
22 </Step>
23 
24 <Step title="Copy the key">
25 Copy the key somewhere safe for the next section. You pass it to the setup component once.
26 </Step>
27</Steps>
28 
2129The tunnel stack does not use the key at runtime. Revoke the key as soon as setup completes, and create a fresh one later when you rotate the tunnel token.
2230 
2331## Deploy the tunnel stack
2432 
33The deployment steps on this page are reference deployments. You are responsible for adapting them to your organization's security requirements. For the full set of proxy options, certificate requirements, and hardening guidance, see the [MCP tunnels reference](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference) and [MCP tunnels security](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/security) pages in the Claude Platform docs. Those pages describe the Claude Console flow, which authenticates the setup component differently. For a claude.ai organization, follow the authentication steps on this page.
34 
2535Choose Helm if you run Kubernetes. The chart provisions the tunnel, stores the credentials in a Secret, and renews the server certificate automatically. Choose Docker Compose for a single host or a VM, where you run the setup component and certificate renewal yourself.
2636 
27Both paths need at least one route. A route maps a subdomain of your tunnel domain to the internal URL of an MCP server, in the form `scheme://host:port` with no path. The examples use `docs` pointing at `http://docs-mcp.example.corp:8080`. Replace them with your own servers.
37Both the Helm and Docker Compose paths need at least one route. A route maps a subdomain of your tunnel domain to the internal URL of an MCP server, in the form `scheme://host:port` with no path. The examples use `docs` pointing at `http://docs-mcp.example.corp:8080`. Replace them with your own servers.
2838 
2939<Tabs>
3040 <Tab title="Helm">
from line 283
273283 
274284Each route becomes a custom connector for your organization. The connector URL is the route's tunnel hostname plus the path your MCP server serves. Many servers serve at `/mcp`, and the proxy forwards the path unchanged.
275285 
2761. In claude.ai, go to **Organization settings > Connectors**.
2772. Select **Add**, then **Custom**. If Claude asks for the connector type, choose **Web**.
2783. Enter the server URL, for example `https://docs.abc123.tunnel.anthropic.com/mcp`.
2794. Configure authentication for the server. If its OAuth authorization server is also inside your network, turn on **Tunnel OAuth configuration** and follow [Authenticate to MCP servers behind a tunnel](/docs/connectors/mcp-tunnels/oauth).
2805. Select **Add**.
286<Steps>
287 <Step title="Open organization connectors">
288 In claude.ai, go to **Organization settings > Connectors**.
289 </Step>
281290 
282Members then find the connector in their own connector settings and select **Connect** to sign in, as described in [Third party connectors with remote MCP](/docs/connectors/custom/remote-mcp#adding-custom-connectors). To confirm the tunnel end to end, connect the server yourself and ask Claude to use one of its tools while you watch the proxy logs for the request.
291 <Step title="Add a custom connector">
292 Select **Add**, then **Custom**. If Claude asks for the connector type, choose **Web**.
293 </Step>
283294 
295 <Step title="Enter the tunnel URL">
296 Enter the server URL, for example `https://docs.abc123.tunnel.anthropic.com/mcp`.
297 </Step>
298 
299 <Step title="Configure authentication">
300 Configure authentication for the server. If its OAuth authorization server is also inside your network, turn on **Tunnel OAuth configuration** and follow [Authenticate to MCP servers behind a tunnel](/docs/connectors/mcp-tunnels/oauth).
301 </Step>
302 
303 <Step title="Add the connector">
304 Select **Add**.
305 </Step>
306</Steps>
307 
308Members then find the connector in their own connector settings and select **Connect** to sign in, as described in [Add a connector by URL](/docs/connectors/custom/add-unlisted#add-a-connector-by-url). To confirm the tunnel end to end, connect the server yourself and ask Claude to use one of its tools while you watch the proxy logs for the request.
309 
284310### Add more servers later
285311 
286Add a route for the new server, apply the change, and register the new hostname as another custom connector. No certificate or cloudflared changes are needed, because the server certificate covers every subdomain of your tunnel domain.
312Adding another MCP server later takes a new route and a new connector. No certificate or cloudflared changes are needed, because the server certificate covers every subdomain of your tunnel domain.
287313 
288<CodeGroup>
289 ```bash Helm theme={null}
290 # After adding the route under gateway.config.routes in values.yaml
291 helm upgrade mcp-tunnel \
292 oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
293 --version 2.0.2 \
294 -n mcp-tunnel \
295 -f values.yaml
296 ```
314<Steps>
315 <Step title="Add a route">
316 Add a route for the new server.
317 </Step>
297318 
298 ```bash Docker Compose theme={null}
299 # After adding the route in config/mcp-proxy.yaml
300 docker compose restart mcp-proxy
301 ```
302</CodeGroup>
319 <Step title="Apply the change">
320 Apply the change:
303321 
322 <CodeGroup>
323 ```bash Helm theme={null}
324 # After adding the route under gateway.config.routes in values.yaml
325 helm upgrade mcp-tunnel \
326 oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
327 --version 2.0.2 \
328 -n mcp-tunnel \
329 -f values.yaml
330 ```
331 
332 ```bash Docker Compose theme={null}
333 # After adding the route in config/mcp-proxy.yaml
334 docker compose restart mcp-proxy
335 ```
336 </CodeGroup>
337 </Step>
338 
339 <Step title="Register the connector">
340 Register the new hostname as another custom connector.
341 </Step>
342</Steps>
343 
304344## Rotate credentials
305345 
306Three credentials are involved, and each rotates differently.
346An MCP tunnel involves three credentials: the Tunnels API key, the tunnel token, and the server certificate. Each rotates differently.
307347 
308**Tunnels API key.** Used only while the setup component runs. Revoke it after every use and create a new one in **Organization settings > Tunnels > Tunnels API** when you next need to run setup.
348### Replace the Tunnels API key
309349 
310**Tunnel token.** Authenticates cloudflared's outbound connection. Rotate it on your regular schedule and immediately if you suspect exposure. Rotation does not sever connections that are already established, so you can rotate, restart cloudflared with the new value, and let the old connections drain.
350The Tunnels API key is used only while the setup component runs. Revoke it after every use and create a new one in **Organization settings > Tunnels > Tunnels API** when you next need to run setup.
311351 
352### Rotate the tunnel token
353 
354The tunnel token authenticates cloudflared's outbound connection. Rotate it on your regular schedule and immediately if you suspect exposure. Rotation does not sever connections that are already established, so you can rotate, restart cloudflared with the new value, and let the old connections drain.
355 
312356<Tabs>
313357 <Tab title="Helm">
314 Increment `tunnel.tokenVersion` in `values.yaml`, create a fresh Tunnels API key, and upgrade. The setup component re-runs, rotates the token, and updates the Secret.
358 <Steps>
359 <Step title="Increment the token version">
360 Increment `tunnel.tokenVersion` in `values.yaml`.
361 </Step>
315362 
316 ```bash theme={null}
317 read -rs API_TOKEN && export API_TOKEN
363 <Step title="Create a Tunnels API key">
364 Create a fresh Tunnels API key.
365 </Step>
318366 
319 helm upgrade mcp-tunnel \
320 oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
321 --version 2.0.2 \
322 -n mcp-tunnel \
323 -f values.yaml \
324 --set api.token="$API_TOKEN" \
325 --set setup.force=true
326 ```
367 <Step title="Upgrade">
368 Upgrade. The setup component re-runs, rotates the token, and updates the Secret.
327369 
328 Revoke the API key once the upgrade completes.
370 ```bash theme={null}
371 read -rs API_TOKEN && export API_TOKEN
372 
373 helm upgrade mcp-tunnel \
374 oci://us-docker.pkg.dev/anthropic-public-registry/charts/mcp-tunnel \
375 --version 2.0.2 \
376 -n mcp-tunnel \
377 -f values.yaml \
378 --set api.token="$API_TOKEN" \
379 --set setup.force=true
380 ```
381 
382 Revoke the API key once the upgrade completes.
383 </Step>
384 </Steps>
329385 </Tab>
330386 
331387 <Tab title="Docker Compose">
332 Edit `docker-compose.yaml` and increment the `--token-version` value in the `setup` service (for example from `1` to `2`), so the new value persists for future runs. Then create a fresh Tunnels API key and re-run setup.
388 <Steps>
389 <Step title="Increment the token version">
390 Edit `docker-compose.yaml` and increment the `--token-version` value in the `setup` service (for example from `1` to `2`), so the new value persists for future runs.
391 </Step>
333392 
334 ```bash theme={null}
335 read -rs API_TOKEN && export API_TOKEN
336 docker compose run --rm setup
393 <Step title="Create a Tunnels API key">
394 Create a fresh Tunnels API key.
395 </Step>
337396 
338 export TUNNEL_TOKEN=$(sudo cat data/tunnel-token)
339 docker compose up -d cloudflared
340 ```
397 <Step title="Re-run setup">
398 Re-run setup, then restart cloudflared with the new token:
341399 
400 ```bash theme={null}
401 read -rs API_TOKEN && export API_TOKEN
402 docker compose run --rm setup
403 
404 export TUNNEL_TOKEN=$(sudo cat data/tunnel-token)
405 docker compose up -d cloudflared
406 ```
407 </Step>
408 </Steps>
409 
342410 Revoke the API key and run `unset API_TOKEN` once rotation completes. For a multi-host deployment, setup writes the new token only to the `data/` directory on the host where it ran, so copy the updated `data/` directory (at minimum `data/tunnel-token`) to every other host that runs a replica. Then repeat the last two commands on each of those hosts so every replica restarts with the new token.
343411 </Tab>
344412</Tabs>
345413 
346**Server certificate.** The certificate the proxy presents is valid for 90 days, and you are responsible for renewing it before it expires. Renewal is local. It signs a new certificate with the CA already stored in your deployment, makes no API calls, and needs no API key. The proxy reloads the certificate file automatically, so no restart is required.
414### Renew the server certificate
347415 
416The server certificate the proxy presents is valid for 90 days, and you are responsible for renewing it before it expires. Renewal is local. It signs a new certificate with the CA already stored in your deployment, makes no API calls, and needs no API key. The proxy reloads the certificate file automatically, so no restart is required.
417 
348418<Tabs>
349419 <Tab title="Helm">
350420 The chart deploys a CronJob that runs daily and renews the certificate once it is within 30 days of expiry. Monitor the CronJob and the certificate's expiry date to confirm renewal completes.
from line 493
423493</Steps>
424494 
425495If you archived the tunnel because of a suspected compromise, also notify your Anthropic account team, rotate any OAuth tokens or secrets your MCP servers issued, and review the proxy, cloudflared, and MCP server logs for the affected period before you provision a replacement tunnel.
496 
497## Next steps
498 
499* [Authenticate to MCP servers behind a tunnel](/docs/connectors/mcp-tunnels/oauth): make OAuth sign-in work when your authorization server is inside your network
500* [Troubleshoot MCP tunnels](/docs/connectors/mcp-tunnels/troubleshooting): diagnose connection, certificate, routing, and sign-in failures
501* [MCP tunnels reference](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference): proxy configuration fields, certificate requirements, and the setup component
426502 

connectors/mcp-tunnels/troubleshooting Changed · +31 / -9 lines

### Adding the connector fails, or the connector connects but no tools appear ## Related resources ### Adding the connector fails, or it connects but no tools appear

from line 1
11# Troubleshoot MCP tunnels
22 
3> Fix MCP tunnel problems: cloudflared won't connect, connector added but tools don't appear, no route for host, IP validation failed, TLS handshake failed, expired certificate, OAuth sign-in redirects to a tunnel.anthropic.com URL, token exchange fails, and setup or Helm hook errors.
3> Fix MCP tunnel problems: cloudflared won't connect, tools don't appear, routing and IP validation errors, TLS and certificate failures, and OAuth errors.
44 
55<Note>
66 MCP tunnels are in research preview and are available to organizations on the Claude Enterprise plan by request. To request access, [submit the MCP tunnels interest form](https://claude.com/form/mcp-tunnels) or contact your Anthropic account team.
from line 26
2626 
2727### The tunnel stack starts but cloudflared never connects
2828 
29cloudflared logs four `Registered tunnel connection` lines when it reaches the tunnel edge. If they never appear, the cause is almost always one of two things. Either `TUNNEL_TOKEN` is missing, truncated, or from a token that has since been rotated, or a firewall is blocking outbound TCP and UDP on port 7844 to the edge ranges `198.41.192.0/19` and `2606:4700:a0::/44`. On Docker Compose, confirm the variable is exported in the shell that ran `docker compose up`. After a token rotation, restart cloudflared on every host with the new value.
29cloudflared logs four `Registered tunnel connection` lines when it reaches the tunnel edge. If they never appear, the cause is almost always one of these:
3030 
31* **The tunnel token**: `TUNNEL_TOKEN` is missing, truncated, or from a token that has since been rotated. On Docker Compose, confirm the variable is exported in the shell that ran `docker compose up`. After a token rotation, restart cloudflared on every host with the new value
32* **A firewall**: a firewall is blocking outbound TCP and UDP on port 7844 to the edge ranges `198.41.192.0/19` and `2606:4700:a0::/44`
33 
3134### cloudflared logs `failed to sufficiently increase receive buffer size`
3235 
33This is a QUIC tuning hint, not an error, and the tunnel works without addressing it. To remove the warning, raise the host's UDP buffer limits as described in the [quic-go UDP buffer documentation](https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes).
36The `failed to sufficiently increase receive buffer size` message is a QUIC tuning hint, not an error, and the tunnel works without addressing it. To remove the warning, raise the host's UDP buffer limits as described in the [quic-go UDP buffer documentation](https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes).
3437 
3538### The setup component fails with an authentication or permission error
3639 
from line 55
5255 
5356### A tunnel hostname does not respond to curl or a browser
5457 
55This is expected. Hostnames under `tunnel.anthropic.com` accept connections only from Claude, so you can't test them from your own network or the internet. Verify the tunnel by connecting the custom connector in Claude and calling one of the server's tools while you watch the proxy logs.
58A tunnel hostname that doesn't respond to curl or a browser is expected. Hostnames under `tunnel.anthropic.com` accept connections only from Claude, so you can't test them from your own network or the internet. Verify the tunnel by connecting the custom connector in Claude and calling one of the server's tools while you watch the proxy logs.
5659 
5760## Routes and certificates
5861 
from line 100
97100 
98101## Connectors and tools
99102 
100### Adding the connector fails, or it connects but no tools appear
103### Adding the connector fails, or the connector connects but no tools appear
101104 
102105Work through these checks in order.
103106 
1041. Confirm the stack is connected, using the log checks in [Verify the connection](/docs/connectors/mcp-tunnels/setup#verify-the-connection).
1052. Confirm the tunnel was created with a Tunnels API key from the same claude.ai organization where you are adding the connector. A tunnel created from another organization, including a Claude Console organization, is refused before any traffic reaches your network, and your proxy logs show nothing.
1063. Confirm the connector URL includes the path your MCP server serves, such as `/mcp`. A request to the bare hostname reaches the proxy but the server may answer `404`.
1074. Watch the proxy logs while you retry. `no route for host` and `IP validation failed` point to the sections above. An upstream connection error means the proxy can't reach the MCP server from where it runs.
107<Steps>
108 <Step title="Confirm the stack is connected">
109 Confirm the stack is connected, using the log checks in [Verify the connection](/docs/connectors/mcp-tunnels/setup#verify-the-connection).
110 </Step>
108111 
112 <Step title="Confirm the tunnel's organization">
113 Confirm the tunnel was created with a Tunnels API key from the same claude.ai organization where you are adding the connector. A tunnel created from another organization, including a Claude Console organization, is refused before any traffic reaches your network, and your proxy logs show nothing.
114 </Step>
115 
116 <Step title="Confirm the connector URL's path">
117 Confirm the connector URL includes the path your MCP server serves, such as `/mcp`. A request to the bare hostname reaches the proxy but the server may answer `404`.
118 </Step>
119 
120 <Step title="Watch the proxy logs">
121 Watch the proxy logs while you retry. `no route for host` and `IP validation failed` point to the sections above. An upstream connection error means the proxy can't reach the MCP server from where it runs.
122 </Step>
123</Steps>
124 
109125## OAuth sign-in
110126 
111127See [Authenticate to MCP servers behind a tunnel](/docs/connectors/mcp-tunnels/oauth) for how the sign-in flow splits between the member's browser and Claude's servers.
from line 145
129145## Get help
130146 
131147If these steps don't resolve the problem, contact your Anthropic account team with the tunnel domain, the time of a failed request, and the relevant cloudflared and proxy log lines.
148 
149## Related resources
150 
151* [Set up an MCP tunnel](/docs/connectors/mcp-tunnels/setup): the deployment, verification, and credential rotation steps
152* [Authenticate to MCP servers behind a tunnel](/docs/connectors/mcp-tunnels/oauth): the Tunnel OAuth configuration fields and the split-metadata alternative
153* [MCP tunnels reference](https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/reference): proxy configuration fields, certificate requirements, and the setup component
132154 

connectors/microsoft/365 Changed · +117 / -72 lines

## Review what Claude can do ## Set up the connector ### Add the connector for your organization ### Connect your account ## Try the connector ### Approve the write permissions ### Turn on write actions ## Next steps ## Capabilities ## Setup requirements ### Phase 1: Administrator setup ### Phase 2: User enablement ## Usage ### Example queries ## What you can access

from line 1
11# Microsoft 365 connector
22 
3> Connect SharePoint, OneDrive, Outlook, and Teams to Claude
3> Connect SharePoint, OneDrive, Outlook, and Teams to Claude so it can search, analyze, and act on your Microsoft 365 information
44 
5The Microsoft 365 connector enables Claude to search, analyze, and act on information across SharePoint, OneDrive, Outlook, and Teams.
5The Microsoft 365 connector lets Claude search, analyze, and act on information across SharePoint, OneDrive, Outlook, and Teams, using the access your own Microsoft 365 account already has. It's available on every Claude plan: Free, Pro, Max, Team, and Enterprise. It requires a work or school Microsoft account, and a Microsoft Entra Global Administrator must grant tenant consent for your Microsoft organization.
66 
7By the end of this page you have the connector set up for your organization and your own account connected, and you have asked Claude a first question that draws on Microsoft 365.
8 
79<Note>
8 Available on all Claude plans: Free, Pro, Max, Team, and Enterprise. On Team and Enterprise plans, an organization Owner must enable the connector before members can connect.
10 * If your organization runs Claude Desktop on third-party inference, see [Connect to Microsoft 365](/docs/third-party/claude-desktop/connectors-m365) instead
11 * If you're in a US government deployment, see [Set up the Microsoft 365 connector](/docs/government/connectors/microsoft-365) in the government section
912</Note>
1013 
11## Capabilities
14## Review what Claude can do
1215 
13With this connector, Claude can:
16All access is delegated: Claude acts on your behalf and can read or change only what your Microsoft 365 account can already read or change. The table lists what Claude can do in each service; the write column applies only when your administrators have turned on [write actions](#write-actions).
1417 
15* **Search and analyze documents** across SharePoint sites and OneDrive libraries
16* **Access email threads** and analyze Outlook communications
17* **Review meeting information** from Teams Calendar
18* **Pull insights** from Teams Chat discussions
19* **Send and manage email**, including drafts, labels, mail filters, and automatic replies
20* **Manage calendar events** and find meeting times
21* **Create and update files** in SharePoint
22* **Send Teams messages** in chats and channels
18| Service | Read and search | Write |
19| --------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
20| **SharePoint and OneDrive** | Search and analyze documents across SharePoint sites and OneDrive libraries | Create and update files in SharePoint |
21| **Outlook** | Search email threads and archived email | Send mail and manage drafts, labels, mail filters, and automatic replies; create, update, and delete calendar events and find meeting times |
22| **Teams Calendar** | Review meeting information, summaries, and attendance | None |
23| **Teams Chat** | Read channel and chat discussions | Send chat and channel messages |
2324 
24## Setup requirements
25## Set up the connector
2526 
26On Free, Pro, and Max plans, no organization-level setup is needed. Connect from **Customize > Connectors** in claude.ai. A Microsoft Entra Global Administrator still needs to grant tenant consent for your Microsoft organization.
27What you do first depends on your Claude plan:
2728 
29* **Free, Pro, and Max**: there's no organization-level step in Claude. Skip to [Connect your account](#connect-your-account). A Microsoft Entra Global Administrator still needs to grant tenant consent for your Microsoft organization
30* **Team and Enterprise**: a Claude Owner or Primary Owner [adds the connector for the organization](#add-the-connector-for-your-organization) first, and then each member connects their account
31 
2832### Prerequisites
2933 
30* A work or school Microsoft account on a Microsoft Entra tenant (personal accounts such as outlook.com, hotmail.com, or live.com aren't supported)
31* Claude user with Owner or Primary Owner role (Team and Enterprise plans)
32* Global Administrator access to Microsoft Entra tenant
33* Active Microsoft 365 accounts for all users (Team and Enterprise plans)
34Check these before you start:
3435 
35### Phase 1: Administrator setup
36* A work or school Microsoft account on a Microsoft Entra tenant. Personal accounts such as outlook.com, hotmail.com, or live.com aren't supported
37* Global Administrator access to the Microsoft Entra tenant
38* On Team and Enterprise plans: the Owner or Primary Owner role in Claude, and active Microsoft 365 accounts for all users
3639 
37**Automatic Setup (Recommended):**
40### Add the connector for your organization
3841 
391. Navigate to **Organization settings > Connectors**
402. Select **Add**, then **All available**
413. Find Microsoft 365 and select "Add to your team"
424. Connect individually and grant organization-wide permissions
435. (Optional) Restrict user access or revoke specific permission scopes
42On Team and Enterprise plans, an Owner or Primary Owner adds the connector once for everyone. The steps below are the automatic setup, which is the recommended path.
4443 
45### Phase 2: User enablement
44<Steps>
45 <Step title="Open organization connectors">
46 In claude.ai, go to [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors).
47 </Step>
4648 
47Once enabled by administrators, team members:
49 <Step title="Add Microsoft 365">
50 Select **Add**, then **All available**. Find **Microsoft 365** and select **Add to your team**.
51 </Step>
4852 
491. Navigate to **Customize > Connectors**
502. Find Microsoft 365 and click "Connect"
513. Authenticate with credentials
53 <Step title="Connect and grant consent">
54 Connect your own account and grant the organization-wide permissions.
55 </Step>
5256 
53## Usage
57 <Step title="Adjust access if needed">
58 Restrict which users can use the connector, or revoke specific permission scopes.
59 </Step>
60</Steps>
5461 
55Ask Claude questions requiring Microsoft 365 data, or ask Claude to take an action such as sending an email or updating a file. Claude automatically detects and uses the necessary tools.
62For the detailed administrator walkthrough, see [Set up the Microsoft 365 connector](https://support.claude.com/en/articles/12542951-set-up-the-microsoft-365-connector) in the help center. The [Microsoft 365 connector security guide](https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide) covers the permission model.
5663 
57### Example queries
64### Connect your account
5865 
59* "Find the Q4 strategic planning document in SharePoint"
60* "Summarize email conversations about the product launch"
61* "What discussions happened in Teams about the marketing campaign?"
62* "Review meeting notes from last week's leadership sync"
63* "Draft a reply to the latest email about the vendor contract"
64* "Schedule a 30-minute sync with the design team next week"
66Once the connector is available to you, connect your own Microsoft 365 account.
6567 
66## What you can access
68<Steps>
69 <Step title="Open your connectors">
70 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) in claude.ai. **Customize** is the page that holds your connectors, skills, and plugins.
71 </Step>
6772 
68| Service | Capabilities |
69| ----------------------- | ---------------------------------------------------------------------------------------------------------- |
70| **SharePoint/OneDrive** | Search and analyze documents; create and update files in SharePoint |
71| **Outlook** | Search email threads and archived emails; send and manage mail; create, update, and delete calendar events |
72| **Teams Calendar** | Review meeting summaries and attendance |
73| **Teams Chat** | Access channel and chat discussions; send chat and channel messages |
73 <Step title="Connect Microsoft 365">
74 Find **Microsoft 365** and select **Connect**.
75 </Step>
7476 
77 <Step title="Sign in to Microsoft">
78 Sign in with your work or school Microsoft credentials.
79 </Step>
80</Steps>
81 
82When the connection succeeds, the **Connect** button on the Microsoft 365 connector changes to **Disconnect**. For the member walkthrough, see [Connect to Microsoft 365](https://support.claude.com/en/articles/15183774-connect-to-microsoft-365) in the help center.
83 
84## Try the connector
85 
86In a conversation, select **+** at the lower left of the message box, select **Connectors**, and turn on **Microsoft 365**. Then ask a question that needs Microsoft 365 data, or ask Claude to take an action such as sending an email or updating a file. Claude detects which tools it needs and uses them. For example, ask Claude:
87 
88* Find the Q4 strategic planning document in SharePoint
89* Summarize email conversations about the product launch
90* What discussions happened in Teams about the marketing campaign?
91* Draft a reply to the latest email about the vendor contract
92* Schedule a 30-minute sync with the design team next week
93 
94Claude's answer draws on the documents, email, and Teams content it found. Requests that change something, such as the last two examples, work only when write actions are turned on for you; otherwise Claude can still read and search.
95 
7596## Write actions
7697 
77Claude can take actions in Outlook, SharePoint, and Teams. In Outlook, Claude sends mail and manages drafts, organizes mail with labels, filters, and trash, sets automatic replies, and creates, updates, and deletes calendar events. In SharePoint, Claude creates and updates files. In Teams, Claude sends chat and channel messages. Read and search tools work the same whether or not write actions are enabled.
98Claude can take actions in Outlook, SharePoint, and Teams, as listed in the write column of [Review what Claude can do](#review-what-claude-can-do). Read and search tools work the same whether or not write actions are enabled. Claude can't attach files to the drafts it creates.
7899 
79Write actions are controlled by your organization's administrators in two places:
100Your organization's administrators control write actions in two places: the connector's permissions in Microsoft Entra, and the Microsoft 365 connector configuration under **Organization settings > Connectors**.
80101 
811. **Approve the write permissions.** If your tenant approved the connector before a write permission (mail, calendar, mailbox settings, file writes, or Teams messages) was added, a Microsoft Entra Global Administrator or Application Administrator approves the added permissions once for the tenant. Reconnecting doesn't add them. See [Approve permissions added to the connector](#approve-permissions-added-to-the-connector).
822. **Turn on write actions.** If write actions are off for your organization, administrators turn them on for all users in the Microsoft 365 connector configuration, or enable them for specific users with role-based access control (beta). Administrators also check the restriction on each tool that sends Teams messages. Open the Microsoft 365 connector under **Organization settings > Connectors**, find **Tool permission restrictions**, and set each Teams messaging tool so that users can choose it. A per-tool restriction overrides the **Default restriction** row, so a tool that is blocked for all users stays unavailable until an administrator changes its restriction.
102### Approve the write permissions
83103 
84Claude cannot attach files to the drafts it creates.
104If your tenant approved the connector before a write permission (mail, calendar, mailbox settings, file writes, or Teams messages) was added, a Microsoft Entra Global Administrator or Application Administrator approves the added permissions once for the tenant. Reconnecting doesn't add them. See [Approve permissions added to the connector](#approve-permissions-added-to-the-connector).
85105 
86For setup steps, see [Connect to Microsoft 365](https://support.claude.com/en/articles/15183774-connect-to-microsoft-365) and [Set up the Microsoft 365 connector](https://support.claude.com/en/articles/12542951-set-up-the-microsoft-365-connector) in the help center. The [Microsoft 365 connector security guide](https://support.claude.com/en/articles/12684923-microsoft-365-connector-security-guide) covers the permission model.
106### Turn on write actions
87107 
108If write actions are off for your organization, administrators turn them on for all users in the Microsoft 365 connector configuration, or enable them for specific users with role-based access control (beta). Administrators also check the restriction on each tool that sends Teams messages. A per-tool restriction overrides the **Default restriction** row, so a tool that is blocked for all users stays unavailable until an administrator changes its restriction. To let users choose those tools:
109 
110<Steps>
111 <Step title="Open the connector's configuration">
112 Open the Microsoft 365 connector under **Organization settings > Connectors**.
113 </Step>
114 
115 <Step title="Find Tool permission restrictions">
116 Find **Tool permission restrictions**.
117 </Step>
118 
119 <Step title="Allow each Teams messaging tool">
120 Set each Teams messaging tool so that users can choose it.
121 </Step>
122</Steps>
123 
88124## Permissions
89125 
90<Note>
91 All permissions are delegated: Claude acts on behalf of users and can only access and change content that you already have permission to access and change in Microsoft 365. Write actions are available when your administrators enable them (see [Write actions](#write-actions)).
92</Note>
126All permissions are delegated: Claude acts on behalf of users and can only access and change content that you already have permission to access and change in Microsoft 365. Write actions are available when your administrators enable them, as described in [Write actions](#write-actions).
93127 
94128### Approve permissions added to the connector
95129 
96130If your tenant approved the connector before Anthropic added a permission to it, the Claude feature that needs the permission fails with a permission error until a Microsoft Entra administrator approves it. For example, listing your teams fails until your tenant approves `Team.ReadBasic.All`. Disconnecting and reconnecting the connector in claude.ai doesn't add the permission, because Microsoft [doesn't show a consent screen again once the tenant has approved the connector](https://learn.microsoft.com/en-us/entra/identity-platform/scopes-oidc#the-default-scope). The connector's **Permissions** page in the Entra admin center (under **Enterprise applications**, listed as **M365 MCP Server for Claude**) shows only the permissions your tenant has already approved, so a missing permission doesn't appear there.
97131 
98A Global Administrator or Application Administrator approves the added permissions for the whole tenant in three steps.
132A Global Administrator or Application Administrator approves the added permissions for the whole tenant by opening the admin consent link and accepting the list it shows.
99133 
100134<Steps>
101135 <Step title="Open the admin consent link">
from line 149
115149 </Step>
116150</Steps>
117151 
118Selecting **Grant admin consent for \{your organization}** on that **Permissions** page approves the same list.
152Selecting **Grant admin consent for \{your organization}** on the connector's **Permissions** page in the Entra admin center approves the same list as the admin consent link.
119153 
120This link is for the connector used from claude.ai. If the Application ID on the enterprise application's **Overview** page differs from the one in the link (for example in a government deployment), use that ID instead. The Claude Desktop local connector and a self-hosted server use their own app registrations.
154The admin consent link is for the connector used from claude.ai. If the Application ID on the enterprise application's **Overview** page differs from the one in the link (for example in a government deployment), use that ID instead. The Claude Desktop local connector and a self-hosted server use their own app registrations.
121155 
122156## Troubleshooting
123157 
158If something isn't working, start with the case that matches what you see.
159 
124160<AccordionGroup>
125161 <Accordion title="Authentication failures">
126 * Verify correct Microsoft 365 credentials
127 * Check active license status
128 * Review organizational third-party app policies
129 * Try a different browser
130 * Clear cookies and cache
162 If sign-in fails, work through these checks:
163 
164 * Confirm you're signing in with your work or school Microsoft 365 credentials, not a personal account
165 * Check that your Microsoft 365 license is active
166 * Review your organization's third-party app policies
167 * Try a different browser, or clear cookies and cache and sign in again
131168 </Accordion>
132169 
133170 <Accordion title="Documents not found">
134 * Verify direct access to the document in Microsoft 365
135 * Ensure document is in SharePoint/OneDrive (not local)
136 * Recently uploaded documents may need time to index
137 * Use specific SharePoint site names
138 * Search by exact filename
171 If Claude can't find a document you know exists:
172 
173 * Confirm you can open the document directly in Microsoft 365
174 * Make sure the document is stored in SharePoint or OneDrive, not only on your computer
175 * Wait and retry for recently uploaded documents, which can take time to index
176 * Name the specific SharePoint site, or search by the exact filename
139177 </Accordion>
140178 
141179 <Accordion title="Incomplete search results">
142 * Be more specific about requirements
180 If results are partial or miss what you expected:
181 
182 * Be more specific about what you need
143183 * Specify locations and date ranges
144 * Use exact phrases
145 * Break complex queries into simpler questions
184 * Use exact phrases from the content
185 * Break a complex request into simpler questions
146186 </Accordion>
147187</AccordionGroup>
188 
189## Next steps
190 
191* [Get started with connectors](/docs/connectors/getting-started): set up another connector and use it in conversations
192* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
148193 

connectors/overview Page removed · 92 lines, page removed

# Connectors overview ## How connectors work ## Types of connectors ### Prebuilt integrations ### Remote MCP servers ### MCP Apps ### MCP Bundles ### Self-serve local MCP ## Ways to connect ### Connectors directory ### Third-party connectors ## Related concepts ### Plugins ## Platform availability ## Next steps

The page is gone upstream. What it last said is kept here.

connectors/slack/index Changed · +86 / -55 lines

## Use the earlier Claude in Slack app ### Install the app ## Search Slack with the connector ### Enable the connector ### Try the connector ## Manage your connections ## Privacy and data ## Next steps ## Claude in Slack (earlier app) ### Ways to interact with Claude ## Installation ### For Slack admins ### For individual users ## Slack connector ### Enabling the connector ## Managing connections ### Viewing connection status ### Disconnecting ## Privacy & data ## Troubleshooting

from line 1
11# Slack integration
22 
3> Use Claude directly in Slack and connect your workspace
3> Use Claude directly in your Slack workspace with the Claude in Slack app, and let Claude search Slack with the Slack connector
44 
5Integrate Claude and Slack in two ways: add Claude directly to your Slack workspace, or enable the Slack connector for your Claude apps.
5You can use Claude with Slack in two ways. The Claude in Slack app puts Claude inside your Slack workspace so you can message it there, and the Slack connector lets Claude in claude.ai search your workspace's channels, direct messages, and files for context. The app is available to paid Slack plans once a Slack admin approves it; the connector is available on Team and Enterprise plans and requires the app to be installed first.
66 
7By the end of this page you have installed the app, connected your account, and, if your plan includes it, turned on the connector and asked Claude a question that draws on Slack.
8 
79<Note>
810 This page covers the earlier per-user Claude in Slack app. The current product is [Claude Tag](/docs/claude-tag/overview), which gives your team one Claude identity set up by an admin. If your organization used the earlier app, see [Migrate from the earlier Claude in Slack](/docs/claude-tag/admins/migrate-from-earlier).
911</Note>
1012 
11## Claude in Slack (earlier app)
13## Use the earlier Claude in Slack app
1214 
13Claude is available to paid Slack plan users. Slack admins must approve the app before individual users can access it.
15Claude in Slack is available to users on paid Slack plans. A Slack admin must approve the app for your workspace before individual users can connect to it. Once it's installed, you can reach Claude in three places:
1416 
15### Ways to interact with Claude
17* **Direct messages**: start a private conversation with @Claude
18* **AI assistant panel**: select Claude's icon in Slack's AI assistant header
19* **Threads**: mention @Claude in any thread to bring it into the discussion
1620 
171. **Direct messaging**: Start private conversations with @Claude
182. **AI assistant panel**: Click Claude's icon in Slack's AI assistant header
193. **Thread participation**: Mention @Claude in any thread for assistance
21Direct messages, the AI assistant panel, and threads all support the same Claude capabilities you've enabled, including web search and tool integrations. On Team and Enterprise plans, users with Claude Code access can also route coding tasks to Claude Code by mentioning @Claude.
2022 
21All surfaces support the same Claude capabilities you've enabled, including web search and tool integrations.
23### Install the app
2224 
23<Note>
24 Team and Enterprise plan users with Claude Code access can route coding tasks directly to Claude Code by mentioning @Claude.
25</Note>
25A Slack admin adds the app to the workspace first, and then each person connects their own Claude account.
2626 
27## Installation
27<Tabs>
28 <Tab title="Slack admins">
29 <Steps>
30 <Step title="Find the app">
31 Open the Claude app's listing in the Slack App Marketplace.
32 </Step>
2833 
29### For Slack admins
34 <Step title="Add the app to Slack">
35 Select **Add to Slack**, then review and approve the app for your organization.
36 </Step>
3037 
311. Navigate to the Claude app in Slack's App Marketplace
322. Click "Add to Slack"
333. Review and approve for your organization
344. Deploy org-wide or to specific workspaces
38 <Step title="Choose where to deploy">
39 Deploy the app org-wide or to specific workspaces.
40 </Step>
41 </Steps>
3542 
36**For multi-workspace deployment:**
43 To add the app to more workspaces later, open your Slack management workspace, go to **Integrations > Installed apps > Add to more workspaces**, and turn on each workspace that should have it.
44 </Tab>
3745 
38* Access your Slack management workspace
39* Navigate to **Integrations → Installed apps → Add to more workspaces**
40* Toggle through relevant workspaces
46 <Tab title="Individual users">
47 <Steps>
48 <Step title="Find Claude">
49 Find **Claude** in your Slack apps list or in the Slack App Marketplace.
50 </Step>
4151 
42### For individual users
52 <Step title="Connect your account">
53 Select **Connect Account**, select your Claude organization, and then select **Authorize** to grant access.
54 </Step>
4355 
441. Find Claude in your apps list or the Slack App Marketplace
452. Click "Connect Account"
463. Select your organization
474. Click "Authorize" to grant access
485. Return to Slack and click "+ New Chat" or @mention Claude
56 <Step title="Start a conversation">
57 Return to Slack and select **+ New Chat**, or mention @Claude in a channel or thread.
58 </Step>
59 </Steps>
4960 
50**Tip**: Add Claude to your Slack header by clicking the three dots and selecting "Add this app to header."
61 If your company's Slack requires admin approval and you aren't an admin, you see a **Request to install** prompt instead. Ask a Slack admin to approve the app, then connect.
5162 
52## Slack connector
63 To pin Claude to your Slack header, open the app's three-dot menu in Slack and select **Add this app to header**.
64 </Tab>
65</Tabs>
5366 
54Available for Team and Enterprise plans, the Slack connector allows Claude to search your workspace's channels, direct messages, and files for relevant context.
67## Search Slack with the connector
5568 
56<Warning>
57 You must install Claude in Slack before enabling and using the Slack connector.
58</Warning>
69The Slack connector is available on Team and Enterprise plans. With it turned on, Claude in claude.ai can search your workspace's channels, direct messages, and files to answer your questions. Install the Claude in Slack app before you enable the connector.
5970 
60### Enabling the connector
71### Enable the connector
6172 
62**For Owners**: Navigate to **Organization settings > Connectors** and enable the Slack connector.
73An Owner enables the connector for the organization once, and then each member connects their own account.
6374 
64**For Individual Users**: Go to **Customize > Connectors**, find Slack, and click "Connect."
75<Steps>
76 <Step title="Enable the connector for your organization">
77 An Owner goes to [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors) in claude.ai and enables the Slack connector.
78 </Step>
6579 
66## Managing connections
80 <Step title="Open your connectors">
81 Go to [**Customize > Connectors**](https://claude.ai/customize/connectors) in claude.ai. **Customize** is the page that holds your connectors, skills, and plugins.
82 </Step>
6783 
68### Viewing connection status
84 <Step title="Connect Slack">
85 Find **Slack** and select **Connect**.
86 </Step>
87</Steps>
6988 
701. Click Claude in your Slack sidebar
712. Go to the "Home" tab
723. View your connection details
89When the connection succeeds, the **Connect** button on the Slack connector changes to **Disconnect**.
7390 
74### Disconnecting
91### Try the connector
7592 
76**Claude app**: Go to Claude's Home tab and click the red "Disconnect" button.
93In a conversation, select **+** at the lower left of the message box, select **Connectors**, and turn on **Slack**. Then ask a question about something discussed in your workspace. For example, ask Claude:
7794 
78**Slack connector**: Go to [claude.ai/customize/connectors](https://claude.ai/customize/connectors), find Slack, and select "Disconnect."
95* What did the team decide about the launch date in #product-planning last week?
96* Find the thread about the vendor contract renewal and summarize it
7997 
98Claude searches your workspace's channels, direct messages, and files and answers from what it finds.
99 
100## Manage your connections
101 
102You can check the app's connection from inside Slack, and disconnect either the app or the connector separately.
103 
104To view your connection status, select **Claude** in your Slack sidebar and open the **Home** tab, which shows your connection details.
105 
106To disconnect, use the surface that matches what you want to remove:
107 
108* **Claude in Slack app**: on the app's **Home** tab in Slack, select **Disconnect**
109* **Slack connector**: go to [**Customize > Connectors**](https://claude.ai/customize/connectors), find **Slack**, and select **Disconnect**
110 
80111<Note>
81112 Disconnecting removes your account connection and deletes past conversations within 30 days.
82113</Note>
83114 
84## Privacy & data
115## Privacy and data
85116 
86* Slack conversations remain separate from your Claude web history
87* Conversations initiated in Slack don't appear in your Claude chat history
88* Each platform maintains separate conversation histories
89* Conversations auto-delete within 30 days if you disconnect
90* Slack retention policies apply to your workspace messages
117Conversations with Claude in Slack are kept apart from your claude.ai history:
91118 
92## Troubleshooting
119* Conversations you start in Slack don't appear in your claude.ai chat history. Each platform keeps its own conversation history
120* If you disconnect, your Slack conversations with Claude are deleted within 30 days
121* Your workspace's Slack retention policies apply to the messages in Slack
93122 
94<Accordion title="Can't install Claude in Slack">
95 If your company Slack requires admin approval and you lack admin access, you'll see a "Request to install" prompt. Contact your Slack Admin to approve the app.
96</Accordion>
123## Next steps
124 
125* [Claude Tag](/docs/claude-tag/overview): the current product, which gives your team one Claude identity set up by an admin
126* [Get started with connectors](/docs/connectors/getting-started): set up another connector and use it in conversations
127* [Connectors directory](/docs/connectors/directory): browse verified and community integrations
97128 

connectors/verification Changed · +36 / -24 lines

## Connector labels ### Verified ### Community ### Custom ## Directory listing versus custom connectors ## Stay safe with third-party connectors ## Related resources ## Verified ## Community ## Custom ## The directory is optional ## Advice for all third-party connectors

from line 1
11# Connector verification
22 
3> How Anthropic reviews connectors, and what Verified, Community, and Custom mean
3> How Anthropic reviews connectors in the directory, what the Verified, Community, and Custom labels mean, and how to stay safe with third-party connectors.
44 
5The [Connectors Directory](/docs/connectors/directory) includes connectors built by Anthropic and by third-party developers. Each connector shows how much Anthropic has reviewed it, so you can decide what to connect to.
5The [Connectors Directory](/docs/connectors/directory) lists connectors from Anthropic and from third-party developers, and each one shows how much Anthropic has reviewed it. Use this page to understand what those labels mean before you connect one.
66 
7## Verified
7<Note>
8 If you build connectors and want yours listed, see [List your own connector](#list-your-own-connector).
9</Note>
810 
9Anthropic has tested this connector's tools for quality and compatibility and it has met our [Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy) requirements at the time of review. Verified connectors show a checkmark next to their name. Verification means Anthropic has reviewed the connector more closely than a Community connector, but it is not a security audit or a guarantee of how the connector will perform. The developer operates the connector and controls its tools, which can change after review.
11## Connector labels
1012 
11## Community
13A connector's label reflects the level of review it received. The label affects how the connector is displayed and discovered in the directory, not how the connector itself functions: once connected, a Community connector has the same capabilities and access as any connector you grant.
1214 
13A third-party developer built this connector. Anthropic screens community connectors before listing, but has not reviewed this connector in depth. We do not control the tools the Community developer makes available and cannot guarantee they will work as intended or will not change, so only connect developers you trust.
15### Verified
1416 
15Community connectors show a "Community" label in the directory and in [Customize > Connectors](https://claude.ai/customize/connectors). Before you connect one, Claude shows a reminder that it has not been reviewed in depth.
17Anthropic has tested a Verified connector's tools for quality and compatibility, and it met the [Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy) requirements at the time of review. Verified connectors show a checkmark next to their name.
1618 
17The label reflects the level of review each connector received. It affects how the connector is displayed and discovered in the directory, not how the connector itself functions: once connected, a community connector has the same capabilities and access as any connector you grant.
19Verification means Anthropic has reviewed the connector more closely than a Community connector. It isn't a security audit or a guarantee of how the connector will perform. The developer operates the connector and controls its tools, which can change after review.
1820 
19## Custom
21### Community
2022 
21You added this connector yourself. Anthropic has not reviewed it.
23A third-party developer built a Community connector. Anthropic screens Community connectors before listing them but hasn't reviewed them in depth. Anthropic doesn't control the tools a Community developer makes available and can't guarantee they will work as intended or won't change, so only connect to developers you trust.
2224 
23See [custom connectors](/docs/connectors/custom/remote-mcp) to learn how to add one.
25Community connectors show a **Community** label in the directory and in [**Customize > Connectors**](https://claude.ai/customize/connectors). Before you connect one, Claude shows a reminder that it hasn't been reviewed in depth.
2426 
25## The directory is optional
27### Custom
2628 
27The directory is a catalog, not a separate kind of connector. Connectors in the directory and custom connectors you add yourself use the same technology.
29You added a Custom connector yourself, and Anthropic hasn't reviewed it. [Custom connectors](/docs/connectors/custom/add-unlisted#add-a-connector-by-url) explains how to add one.
2830 
29If you have a connector's URL, it can be added as a custom connector. A connector does not need to be in the directory for you to use it.
31## Directory listing versus custom connectors
3032 
31Listing a connector in the directory makes it discoverable by other people and gives it a review label (a checkmark if Anthropic has verified it, or "Community" if Anthropic has screened but not reviewed it in depth). It does not change the tools the connector exposes. See [directory vs custom](/docs/connectors/building/directory-vs-custom) for a detailed comparison.
33The directory is a catalog of connectors, and listing is optional. Connectors in the directory and custom connectors you add yourself use the same technology, so if you have a connector's URL, you can add it as a custom connector whether or not it's in the directory.
3234 
33## Advice for all third-party connectors
35Listing a connector in the directory makes it discoverable by other people and gives it a review label: a checkmark if Anthropic has verified it, or **Community** if Anthropic has screened it but not reviewed it in depth. Listing doesn't change the tools the connector exposes. [Directory vs custom](/docs/connectors/building/directory-vs-custom) has a detailed comparison.
3436 
37## Stay safe with third-party connectors
38 
3539Whatever the label, this advice applies to any connector built by someone other than Anthropic:
3640 
37* Only connect to servers from developers and organizations you trust.
38* A connector's developer controls which tools it exposes and can change them at any time.
39* Anthropic does not run a third-party connector's servers and does not control how it handles your data.
40* Carefully review requested permission scopes during authentication.
41* Be aware of prompt injection risks; Claude has built-in protections.
42* Monitor for unexpected changes in tool behavior.
41* Only connect to servers from developers and organizations you trust
42* A connector's developer controls which tools it exposes and can change them at any time
43* Anthropic doesn't run a third-party connector's servers and doesn't control how it handles your data
44* Carefully review requested permission scopes during authentication
45* Stay aware of prompt injection risks, even though Claude has built-in protections
46* Monitor for unexpected changes in tool behavior
4347 
44For more, see [security and privacy](/docs/connectors/custom/remote-mcp#security-and-privacy).
48For more, see [security and privacy](/docs/connectors/custom/add-unlisted#security-and-privacy) for custom connectors.
4549 
4650## List your own connector
4751 
48If you build connectors and want yours in the directory, start with the [review criteria](/docs/connectors/building/review-criteria) and the [submission guidelines](/docs/connectors/building/submission).
52If you build connectors and want yours in the directory, start with the [connector pre-submission checklist](/docs/connectors/building/review-criteria) and then [submit your connector](/docs/connectors/building/submission).
53 
54When you submit a server, Anthropic scans it automatically for policy compliance and, by default, lists it in the directory as a Community connector. Anthropic may then escalate listings flagged as highly useful to Claude users to Verified review, which is higher touch and slower, and in which reviewers run a functional test of each tool. That escalation is assessed automatically. There's no separate application for the **Verified** label, and you don't need to take any action.
55 
56## Related resources
57 
58* [Connectors Directory](/docs/connectors/directory): browse and connect Verified and Community connectors
59* [Custom connectors](/docs/connectors/custom/add-unlisted#add-a-connector-by-url): add a connector by URL, and the security and privacy guidance that applies
60* [Publish to the directory](/docs/directory/publish): the developer's overview of submitting a connector or plugin
4961 

cowork/guide/plugins Changed · +22 / -17 lines

## Next steps ## Related

from line 2
22 
33> Add packaged skills, connectors, and agents to Cowork from the plugin marketplace or a file.
44 
5A plugin is a package that extends what Claude can do in Cowork. Installing one can add skills, MCP connectors, subagents, slash commands, or hooks in a single step. Plugins come from the marketplace, from your organization, or from a file you upload.
5A plugin is a package that extends what Claude can do in Cowork. Installing one can add skills, MCP connectors, subagents, commands, or hooks in a single step. Plugins come from the marketplace, from your organization, or from a file you upload.
66 
7Plugins are available in Cowork and Code. They aren't used in Chat.
7A plugin you install is saved to your account, so its skills and connectors are also available in chat and in Claude Code. [Plugins](/docs/plugins/overview) covers what each surface loads; this page covers the Cowork side.
88 
9To get started, [install a plugin](#install-a-plugin) from **Customize**, or [add a Git repository as a marketplace](#use-a-git-repository-as-a-marketplace) to share plugins without publishing them.
10 
911## What a plugin can contain
1012 
11A plugin's manifest declares any combination of the following.
13A plugin can contain any combination of the following components.
1214 
1315| Component | What it adds |
1416| ---------- | ---------------------------------------------------------- |
from line 23
2123 
2224## Install a plugin
2325 
24Open **Customize** in the sidebar, then **Plugins**.
26You browse, install, and upload plugins from the **Plugins** page. Open **Customize** in the sidebar, then select **Plugins**.
2527 
2628<Steps>
2729 <Step title="Browse the marketplace">
28 Select **Browse plugins** to see available plugins. The default marketplace
30 Select **Discover** to see available plugins. The default marketplace
2931 is Anthropic's official catalog; you can add other marketplaces by URL.
3032 </Step>
3133 
3234 <Step title="Install">
33 Select a plugin and click **Install**. If the plugin includes a connector
34 that needs authentication, you're prompted to sign in.
35 Select a plugin and click **Install**. Installing doesn't add or sign you in
36 to any connector. If the plugin includes connectors, open its **Connectors**
37 tab afterward to add or connect each one.
3538 </Step>
3639 
3740 <Step title="Review components">
3841 Open the installed plugin to see its skills, connectors, agents, and hooks.
39 Enable or disable individual components as needed.
42 Select **Disable plugin** to turn the whole plugin off, and connect or
43 disconnect each connector on its own from the **Connectors** tab.
4044 </Step>
4145</Steps>
4246 
from line 48
4448 
4549## Use a Git repository as a marketplace
4650 
47A Git repository that contains plugin packages can serve as a marketplace. This is the typical way teams distribute their own plugins without publishing to the public catalog. Repositories on GitHub (including GitHub Enterprise) are supported; public repositories on GitLab and Bitbucket also work.
51A Git repository that contains plugin packages can serve as a marketplace, which lets you share plugins without publishing to the public catalog. For a marketplace you add yourself, repositories on GitHub, including GitHub Enterprise, are supported, and public repositories on GitLab and Bitbucket also work. To distribute plugins to everyone in a Team or Enterprise organization, an Owner syncs the repository from organization settings instead, as [Manage plugins for your organization](/docs/plugins/admin#add-your-own-plugins) describes.
4852 
4953<Steps>
5054 <Step title="Add the repository">
from line 63
5963 </Step>
6064</Steps>
6165 
62Click **Update** on a marketplace to pull the latest plugins from its repository.
66Select **Check for updates** on a marketplace to pull the latest plugins from its repository, or turn on **Sync automatically**.
6367 
64For administrator-managed marketplaces, see [MCP, plugins, skills, and hooks](/docs/cowork/3p/extensions) in the deployment guide.
68For marketplaces your organization manages, see [Manage plugins for your organization](/docs/plugins/admin), or [MCP, plugins, skills, and hooks](/docs/cowork/3p/extensions) if your organization deploys Claude Desktop with its own model provider.
6569 
6670## Limits
6771 
from line 85
8185 
8286On Team and Enterprise plans, administrators can require certain plugins for everyone in the organization. Required plugins install automatically and show **This plugin is required by your organization**; you can't remove them.
8387 
84For how administrators provision plugins, see [MCP, plugins, skills, and hooks](/docs/cowork/3p/extensions) in the deployment guide.
88For how administrators provision plugins, see [Manage plugins for your organization](/docs/plugins/admin).
8589 
8690## Update and remove plugins
8791 
8892Cowork checks for plugin updates from the marketplace they came from. If you've edited a plugin's files locally, Cowork detects the change and warns you before an update would overwrite it.
8993 
90To remove a plugin you installed, open it under **Customize → Plugins** and click **Uninstall**. Organization-managed plugins can only be removed by an administrator.
94To remove a plugin you installed, open it under **Customize > Plugins** and select **Remove**. You can't remove a plugin marked **This plugin is required by your organization**.
9195 
92## Related
96## Next steps
9397 
94* [Plugins overview](/docs/plugins/overview) for how plugins work across Claude products
95* [Submit a plugin](/docs/plugins/submit) to publish your own to the marketplace
96* [MCP, plugins, skills, and hooks](/docs/cowork/3p/extensions) for administrator provisioning
98* [Plugins](/docs/plugins/overview): how plugins work across Claude products
99* [Manage plugins for your organization](/docs/plugins/admin): administrator provisioning on Team and Enterprise plans
100* [Submit a plugin](/docs/plugins/submit): publish your own to the marketplace
101* [MCP, plugins, skills, and hooks](/docs/third-party/claude-desktop/extensions): for organizations that deploy Claude Desktop with their own model provider
97102 

directory/publish New page · 115 lines, new page

# Publish to the directory ## Before you submit to the directory ### Submit your plugin, and your MCP server as a connector ### What a listing gets you ### Confirm you can submit to the directory ### Move an earlier submission to the developer portal ### Prepare for review ## Start a submission in the developer portal ## Next steps

A whole new page. There's nothing to diff it against, so here is what it says.

# Publish to the directory

> Submit a plugin or MCP connector to Anthropic's directory: the two submission kinds, who can submit, what review involves, and where to start.

The directory is Anthropic's catalog of plugins and connectors that people browse inside Claude, on the [**Customize**](https://claude.ai/customize) page in claude.ai and the desktop app. A listing reaches people in claude.ai on the web, the desktop and mobile apps, and Cowork, and a plugin they add is also available in their Claude Code sessions.

This page is for developers who have built a plugin, or the MCP server behind one, and want it listed. Anyone on a paid Claude plan can submit, there's no partner program to apply to first, and Anthropic checks each submission before it's listed.

<Note>
  * If you're still deciding what goes in your plugin, see [Decide what to include in your plugin](/docs/connectors/building/what-to-build)
  * If you want to build a small example plugin and submit it, see [Build your first plugin](/docs/plugins/quickstart)
  * If you want to share a plugin without a public listing, use [your own marketplace](https://code.claude.com/docs/en/plugins/publish) for Claude Code or [roll it out to your whole organization](/docs/plugins/org-rollout)
  * If you came here from [Claude Marketplace](https://claude.com/marketplace), the website where you browse plugins, connectors, partner products, and service partners, you're in the right place: there's no separate Claude Marketplace submission, and you submit to the directory instead
</Note>

If you're ready to submit, open the [developer portal](https://claude.ai/directory/manage) or jump to [Start a submission in the developer portal](#start-a-submission-in-the-developer-portal).

## Before you submit to the directory

A directory listing is either a plugin bundle or an MCP connector.

### Submit your plugin, and your MCP server as a connector

A plugin bundle is the main thing you submit: one listing that packages whatever the plugin contains, whether that's skills, an MCP connector reference, commands, agents, or any combination. If you also run the remote MCP server that plugin points at, you submit the server as its own MCP connector too. When you start a submission, the developer portal asks which kind you're submitting:

|                     | Plugin bundle                                                                   | MCP connector                                                       |
| :------------------ | :------------------------------------------------------------------------------ | :------------------------------------------------------------------ |
| What it is          | A plugin folder with skills, commands, agents, hooks, and MCP server references | One remote MCP server that people connect to reach your app or data |
| Where it comes from | A GitHub repository, which must be public before the listing goes live          | The server's URL, with no repository needed                         |
| How it's listed     | As a plugin with all of its components                                          | As a connector people connect to from the directory                 |

If you have a remote MCP server, always submit it as an MCP connector, even when a plugin you're submitting already references it. Submitting the server as a connector gives your organization the connector's listing, its dashboard, and the option to pair it with your plugin:

* **The connector's listing**: you edit its details and its authentication configuration
* **The connector's dashboard**: it shows the server's health and usage by tool, which a plugin's **Usage** tab doesn't break out
* **Pairing with your plugin**: when the connector and a plugin bundle that references it are submitted from the same organization, you can pair the two listings

For your own product, make two submissions: the server as an MCP connector, then the plugin bundle whose skills teach Claude how to use it. Point the bundle's MCP server configuration at the same URL, so people who have both see one set of tools rather than two.

Desktop extension listings in the directory are deprecated, and the directory no longer accepts local MCP servers packaged as desktop extensions (MCPB). To distribute a local MCP server through the directory, include it in a plugin bundle. [Compare component support by app](/docs/plugins/platform-support#compare-component-support-by-app) shows where a plugin's local servers run.

Skills aren't a submission type on their own. Put them in a bundle.

### What a listing gets you

A directory listing gives you:

* **One listing across Claude's apps**: people find it in claude.ai on the web, the desktop and mobile apps, and Cowork, and a plugin they add is also available in their Claude Code sessions
* **One developer portal for the whole life of a listing**: at [claude.ai/directory/manage](https://claude.ai/directory/manage) you submit, follow each submission's status, publish new versions, see usage, and change or delist the listing. [Track your directory submission](/docs/directory/submission-status) explains each status
* **Updates that reach the people who have your plugin**: when you push a new version, the directory scans it and, once it's published, serves it to them. [Update a published plugin](/docs/plugins/submit#update-a-published-plugin) covers the steps
* **Usage figures**: a published plugin's **Usage** tab shows installs, versions, how often each skill and MCP server runs, and error rates. A listed connector has a dashboard with server health and usage by tool. [Track published plugin usage](/docs/connectors/building/after-publishing#track-published-plugin-usage) and [Manage your directory listing](/docs/connectors/building/managing-your-listing) cover each

### Confirm you can submit to the directory

You submit from a claude.ai account, and the listing belongs to the organization you submit from. Before you start, confirm each of these:

* **Plan**: Pro, Max, Team, or Enterprise. Free accounts can't submit
* **Role**: on Pro and Max, you submit from your own account and there's no role to check. On Team and Enterprise, an Owner can submit. On Enterprise, an Owner can also grant the **Directory** permission to other members through a custom role under [**Organization settings > Roles**](https://claude.ai/admin-settings/roles). If you don't have one of those roles, ask an Owner
* **Which organization**: for a plugin bundle, the first organization to submit a given repository folder holds that listing, and the portal refuses a second organization's submission of the same one. Submit from the organization that should own the listing long term

### Move an earlier submission to the developer portal

A listing you submitted before the developer portal existed stays as it is. Move it to the portal to get what the portal adds:

* New versions that the directory scans and, once they're published, serves to the people who have your plugin
* A status for each submission
* Usage figures for a published plugin

The earlier Claude Console form for plugin submissions is no longer supported. To move a submission you made through it, submit it again at [claude.ai/directory/manage](https://claude.ai/directory/manage) from a claude.ai account.

### Prepare for review

Anthropic checks every submission before it's listed, and checks a plugin bundle again with each new version.

* **Plugin bundles**: every version gets automated validation and a security scan, and a person reviews a new listing before it goes live. The [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist) lists what validation checks
* **MCP connectors**: every submission is scanned automatically for policy compliance and, by default, listed as a Community connector. Anthropic may escalate a listing to Verified review, in which a reviewer tests each tool against the [connector pre-submission checklist](/docs/connectors/building/review-criteria)

Every listing is subject to the [Anthropic Software Directory Terms](https://support.claude.com/en/articles/13145338-anthropic-software-directory-terms) and [Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy).

There's no separate application for the **Verified** label or for where in the directory a listing is placed. Anthropic decides both during review, and [Connector verification](/docs/connectors/verification#list-your-own-connector) explains how a listing becomes Verified and what each label means to people installing it.

Review time isn't fixed. Your submission's current state shows in the portal, and [Track your directory submission](/docs/directory/submission-status) explains what each status in the portal means and who acts next.

## Start a submission in the developer portal

You submit and maintain listings in the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage).

To start a submission:

<Steps>
  <Step title="Select Submit new">
    In the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage), select **Submit new**.
  </Step>

  <Step title="Choose the submission type">
    Under **What would you like to submit?**, choose **Plugin bundle** or **MCP connector**.
  </Step>

  <Step title="Follow the checklist and submit pages">
    Work through the checklist and submit pages for that kind:

    * [Plugin pre-submission checklist](/docs/plugins/pre-submission-checklist), then [Submit a plugin](/docs/plugins/submit): for a plugin bundle
    * [Connector pre-submission checklist](/docs/connectors/building/review-criteria), then [Submit a connector](/docs/connectors/building/submission): for an MCP connector
  </Step>
</Steps>

## Next steps

These pages cover building and submitting a first plugin and, once a listing is published, maintaining it from the same portal:

* [Build your first plugin](/docs/plugins/quickstart): build a small example plugin and submit it to the directory
* [Track your submission](/docs/directory/submission-status): check what your submission's status means and who acts next
* [After publishing](/docs/connectors/building/after-publishing): update your server or plugin, and delist
* [Track published plugin usage](/docs/connectors/building/after-publishing#track-published-plugin-usage): see installs, versions, runs, and error rates on the plugin's **Usage** tab
* [Manage your directory listing](/docs/connectors/building/managing-your-listing): for an MCP connector, check health and usage metrics and edit the listing

directory/submission-status New page · 69 lines, new page

# Track your directory submission ## Plugin bundle statuses ## MCP connector statuses ## Contact Anthropic about a submission ## After your listing is published ## Next steps

A whole new page. There's nothing to diff it against, so here is what it says.

# Track your directory submission

> Look up the status the developer portal shows for a plugin bundle or MCP connector submission: what it means, who acts next, and who to contact.

After you submit to the directory, the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage) shows one status for each submission. The status tells you whether Anthropic is working on the submission, whether it's waiting on you, or whether it's live.

This page is for anyone with a submission in the portal. Review time isn't fixed.

<Note>
  If you haven't submitted yet, see [Publish to the directory](/docs/directory/publish).
</Note>

Find your status in the table for your submission's kind: [plugin bundle](#plugin-bundle-statuses) or [MCP connector](#mcp-connector-statuses). If nothing is waiting on you and you still need an answer, see [Contact Anthropic about a submission](#contact-anthropic-about-a-submission).

## Plugin bundle statuses

Open the plugin from **Submissions** in the developer portal. The status appears next to the plugin's name, and the card under it says what happens next.

| Status            | What it means                                                                                                                                                                                                                           | Who acts next                                                                                                                 |
| :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |
| **Draft**         | Nothing has been sent to Anthropic yet                                                                                                                                                                                                  | You. Select **Continue submission**.                                                                                          |
| **Scanning**      | You submitted, and the security scan is waiting to start or running. If a scan attempt fails on Anthropic's side or GitHub's, the directory retries it.                                                                                 | Anthropic. There's nothing to do on your side.                                                                                |
| **Needs changes** | The newest version didn't pass, or the scanner couldn't fetch or accept the plugin. The plugin's page names what to change.                                                                                                             | You. [Fix a failed version](/docs/plugins/submit#fix-a-failed-version) covers pushing a fix and resubmitting.                      |
| **In review**     | An Anthropic reviewer is checking the listing. When the version was held, the card names the category it's held for. The reviewer's decision appears on the plugin's page.                                                              | Anthropic                                                                                                                     |
| **Approved**      | The version passed, and it isn't live yet. The card says who publishes it: an Anthropic reviewer, you, or the directory by itself.                                                                                                      | Whoever the card names. [Publish a passing version](/docs/plugins/submit#publish-a-passing-version) explains the publish settings. |
| **Published**     | A version is live in the directory. The card also says what is happening with any newer version, such as being scanned, waiting with a reviewer, or not passing. A newer version that doesn't pass leaves the published one unaffected. | Nobody, unless the card names a newer version that needs changes                                                              |
| **Not live yet**  | The submission is marked published, and nothing is listed yet. The directory team has to list it.                                                                                                                                       | Anthropic                                                                                                                     |
| **Delisted**      | The plugin isn't visible in the directory. Select **Relist plugin** to ask for it back.                                                                                                                                                 | You, if you want it listed again                                                                                              |
| **Withdrawn**     | Nothing is under review or listed                                                                                                                                                                                                       | Nobody                                                                                                                        |

**Approved** doesn't mean people can install the plugin. A plugin is installable only once its status is **Published**.

## MCP connector statuses

Open the connector from the developer portal's list of submissions. A card at the top of the connector's page shows the status, one sentence about it, and the next step when there is one.

A submission doesn't pass through every status in the table. Anthropic scans each connector submission automatically and, by default, lists it as a Community connector with no action from you. Some submissions also get a review from a person, and the statuses that mention a reviewer apply to those. [How Anthropic reviews directory submissions](/docs/directory/publish#prepare-for-review) describes both.

| Status                | What it means                                                                                                                                                                                                                | Who acts next            |
| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------- |
| **Draft**             | Nothing has been sent to Anthropic yet. A draft can have a reviewer's note if it was sent back and saved again.                                                                                                              | You                      |
| **In review**         | A reviewer is checking the listing. Anthropic emails your primary contact if it needs anything.                                                                                                                              | Anthropic                |
| **Changes requested** | The reviewer left a note. Select **View feedback** on the card to read it, then address it and resubmit.                                                                                                                     | You                      |
| **Not approved**      | The reviewer's notes say why. Select **View feedback** to read them. You can edit the listing and resubmit.                                                                                                                  | You                      |
| **Approved**          | The review team cleared the listing, and it isn't in the directory yet. It goes live when someone who can edit the listing publishes it. If you edit the listing before you publish, it returns to draft for another review. | You. Select **Publish**. |
| **Published**         | The connector is live in the directory. If you submitted an edit, the card says whether that edit is in review, and the live listing stays until the edit is approved.                                                       | Nobody                   |

[Manage your directory listing](/docs/connectors/building/managing-your-listing) covers reviewer feedback, listing edits, and the health and usage metrics for a published connector.

## Contact Anthropic about a submission

Check the status first. **Scanning** and **In review** mean Anthropic acts next and nothing is waiting on you. When you need to reach Anthropic, use the channel for your submission's kind:

* **Plugin bundle**: open the plugin in the developer portal, open its menu, and select **Get help** or **Contact Anthropic**. A plugin that wasn't approved shows **Appeal this decision** on its page. You can also email `[email protected]`, where replies can be delayed
* **MCP connector**: email `[email protected]`

Include the listing's name, the organization you submitted from, and the status the portal shows.

## After your listing is published

A published listing appears in the directory that claude.ai, the Claude desktop and mobile apps, and Cowork share. [Plugin feature support across platforms](/docs/plugins/platform-support) lists which of a plugin's components load on each surface.

A published connector is listed with the **Community** label by default. There's no application for the **Verified** label. [Connector verification](/docs/connectors/verification#list-your-own-connector) explains how a listing becomes Verified and what each label means to people installing it.

## Next steps

* [After publishing](/docs/connectors/building/after-publishing): update your server or plugin, and delist
* [Submit your plugin](/docs/plugins/submit#after-you-submit-a-plugin): follow each new plugin version through the scan, review, and publishing
* [Manage your directory listing](/docs/connectors/building/managing-your-listing): for a connector, read reviewer feedback, edit the listing, and check its metrics

extend/overview New page · 61 lines, new page

# Connectors, skills, and plugins ## Choose plugins, connectors, or skills ## Compare connectors, skills, and plugins ## Where your connectors, skills, and plugins are available ## Next steps

A whole new page. There's nothing to diff it against, so here is what it says.

# Connectors, skills, and plugins

> Choose how to customize Claude: MCP connectors give it access to your tools, skills teach it how you do a task, and plugins package both as one install.

You can customize Claude with [MCP connectors](/docs/connectors/getting-started), [skills](/docs/skills/overview), and [plugins](/docs/plugins/overview). MCP connectors give Claude access to a tool or data source, and skills teach it how to do a task the way you or your team does it. Plugins package skills, MCP connectors, commands, and agents into one unit that you can install once and share with others.

You add all three from the [**Customize**](https://claude.ai/customize) page in claude.ai or the Claude desktop app. [Plugin feature support across platforms](/docs/plugins/platform-support) lists which parts of a plugin work in chat, Cowork, and Claude Code.

<Note>
  If you want to make a connector or plugin for other people to install, see [Build for Claude](/docs/build/overview). Anyone on a paid Claude plan can submit one to Anthropic's directory for review without applying to a partner program first; on Team and Enterprise, an Owner submits it.
</Note>

## Choose plugins, connectors, or skills

Each card below leads to the setup page for one of the three. The last card is for Owners who manage plugins for a Team or Enterprise organization.

<CardGroup cols={2}>
  <Card title="Plugins" icon="box" href="/docs/plugins/overview" arrow>
    Add a set of connectors, skills, and commands with one install, such as everything for one tool, or your team's standard setup.
  </Card>

  <Card title="MCP connectors" icon="plug" href="/docs/connectors/getting-started" arrow>
    Give Claude access to a tool or data source, such as your files, calendar, issue tracker, or an internal API.
  </Card>

  <Card title="Skills" icon="book-open" href="/docs/skills/how-to" arrow>
    Have Claude do a task a particular way, such as your release-note format, your contract checklist, or your weekly report.
  </Card>

  <Card title="Plugins for your organization" icon="building" href="/docs/plugins/admin" arrow>
    If you're an Owner on a Team or Enterprise plan, choose which plugins members can add, install some for everyone, and add your organization's own.
  </Card>
</CardGroup>

## Compare connectors, skills, and plugins

* **[MCP connectors](/docs/connectors/getting-started)** connect Claude to an external service, such as your files, calendar, issue tracker, or an internal API, so Claude can read from it and act in it. Each one is a connection to an MCP server, which the service runs so Claude can reach it. In Claude's settings, connectors appear under **Connectors**
* **[Skills](/docs/skills/overview)** are written instructions, optionally with scripts and reference files, that Claude loads when the task you give it calls for them. Use a skill when you want Claude to follow your process for a task
* **[Plugins](/docs/plugins/overview)** are installable packages. One plugin can hold skills, MCP connectors, commands you run by name, and agents Claude delegates parts of a task to. You can add a skill or a connector on its own. Use a plugin when you want several of them installed and shared as one unit

When a plugin exists for a product you use, it bundles that product's connector with the skills that use it. After you add the plugin, you sign in to its connector from the plugin's page.

The diagram shows where each of the three acts when you send one request.

<img className="block dark:hidden" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/how-connectors-skills-plugins-fit.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=372738e15abde6a69704ebf43b5472f0" alt="Diagram read left to right. You ask in chat, Cowork, or Claude Code, and the request goes to Claude. A skill, written instructions with your steps, format, or checklist, feeds into Claude, which reads it when your request needs it. Claude calls a connector, a connection to the service's MCP server, which reads and acts in a service you use: your tools and data, such as files, calendar, chat, an issue tracker, internal APIs, and more. A dashed wrapper labeled plugin, optional, encloses the skill and the connector, captioned one package for both." width="1000" height="400" data-path="images/extend/how-connectors-skills-plugins-fit.svg" />

<img className="hidden dark:block" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/how-connectors-skills-plugins-fit-dark.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=add95697fad07587c1eda583c3023c5a" alt="Diagram read left to right. You ask in chat, Cowork, or Claude Code, and the request goes to Claude. A skill, written instructions with your steps, format, or checklist, feeds into Claude, which reads it when your request needs it. Claude calls a connector, a connection to the service's MCP server, which reads and acts in a service you use: your tools and data, such as files, calendar, chat, an issue tracker, internal APIs, and more. A dashed wrapper labeled plugin, optional, encloses the skill and the connector, captioned one package for both." width="1000" height="400" data-path="images/extend/how-connectors-skills-plugins-fit-dark.svg" />

## Where your connectors, skills, and plugins are available

Connectors, skills, and plugins you add in claude.ai or the desktop app are saved to your account, so you have them in chat on the web, desktop, and mobile wherever you sign in. Claude Code picks them up when you sign in there with the same account. A plugin on your account also loads in your Cowork tasks. Things you add from the Claude Code command line stay on that machine.

In chat, you can use a plugin's skills, commands, and connectors. Cowork and Claude Code also run its agents. [Plugin feature support across platforms](/docs/plugins/platform-support) lists each component by app.

## Next steps

* [Add your first connector](/docs/connectors/getting-started): connect one from the directory and use it in a conversation
* [Skills overview](/docs/skills/overview): turn on a skill Anthropic provides or add one of your own
* [Plugins](/docs/plugins/overview): find a plugin and add it to your account
* [Plugin feature support across platforms](/docs/plugins/platform-support): check whether a plugin's parts work where you use Claude
* [Build for Claude](/docs/build/overview): build a plugin or MCP server for other people and list it in Anthropic's directory

index Changed · +34 / -16 lines

from line 9
99 <h1 className="hl-hero-title">What do you want to do with Claude?</h1>
1010 
1111 <div className="hl-chips">
12 <a className="hl-chip" href="/docs/connectors/overview"><span className="hl-chip-task">Connect my apps and data</span> <span className="hl-chip-name" translate="no">Connectors</span></a>
12 <a className="hl-chip" href="/docs/connectors/getting-started"><span className="hl-chip-task">Connect my apps and data</span> <span className="hl-chip-name" translate="no">Connectors</span></a>
1313 <a className="hl-chip" href="/docs/skills/overview"><span className="hl-chip-task">Teach Claude to do tasks my way</span> <span className="hl-chip-name" translate="no">Skills</span></a>
1414 <a className="hl-chip" href="/docs/cowork/overview"><span className="hl-chip-task">Give Claude a goal and check back</span> <span className="hl-chip-name" translate="no">Cowork</span></a>
1515 <a className="hl-chip" href="/docs/claude-tag/overview"><span className="hl-chip-task">Put Claude to work in my Slack</span> <span className="hl-chip-name" translate="no">Claude Tag</span></a>
from line 27
2727 <h2 className="hl-sr-only">All products</h2>
2828 
2929 <div className="hl-grid">
30 <a className="hl-card" href="/docs/connectors/overview">
30 <a className="hl-card" href="/docs/connectors/getting-started">
3131 <svg className="hl-card-icon" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
3232 <path d="M12 22v-5" />
3333 
from line 64
6464 <path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 19.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68L2.707 13.707a2.414 2.414 0 0 1 0-3.414Z" />
6565 </svg>
6666 
67 <span className="hl-card-body"><span className="hl-card-title" translate="no">Plugins</span><span className="hl-card-desc">Bundle skills, connectors, and more into shareable packages for Cowork and Claude Code.</span></span>
67 <span className="hl-card-body"><span className="hl-card-title" translate="no">Plugins</span><span className="hl-card-desc">Bundle skills, connectors, and more into shareable packages for chat, Cowork, and Claude Code.</span></span>
6868 <span className="hl-card-cta">Explore plugins <svg className="hl-arrow" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg></span>
6969 </a>
7070 
from line 157
157157 <p className="hl-lede">Start from what you're trying to do:</p>
158158 
159159 <div className="hl-rows">
160 <a className="hl-row" href="/docs/connectors/overview">
160 <a className="hl-row" href="/docs/connectors/getting-started">
161161 <span className="hl-row-q">“I want Claude to see my files, Slack messages, calendar, or codebase”</span>
162162 
163163 <svg className="hl-row-arrow" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
from line 214
214214 <path d="m12 5 7 7-7 7" />
215215 </svg>
216216 
217 <span className="hl-row-a"><span className="hl-row-name" translate="no">Plugins</span><span className="hl-row-note">bundled skills and connectors for Cowork and Claude Code</span></span>
217 <span className="hl-row-a"><span className="hl-row-name" translate="no">Plugins</span><span className="hl-row-note">bundled skills and connectors for chat, Cowork, and Claude Code</span></span>
218218 </a>
219219 
220220 <a className="hl-row" href="/docs/claude-tag/overview">
from line 241
241241 <span className="hl-row-a"><span className="hl-row-name">Claude on third-party platforms</span><span className="hl-row-note">Claude Desktop through your cloud provider</span></span>
242242 </a>
243243 
244 <a className="hl-row" href="/docs/connectors/building/mcp">
245 <span className="hl-row-q">“I want to build or publish a connector”</span>
244 <a className="hl-row" href="/docs/build/overview">
245 <span className="hl-row-q">“I want to build a plugin or connector for other people”</span>
246246 
247247 <svg className="hl-row-arrow" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
248248 <path d="M5 12h14" />
from line 250
250250 <path d="m12 5 7 7-7 7" />
251251 </svg>
252252 
253 <span className="hl-row-a"><span className="hl-row-name" translate="no">MCP</span><span className="hl-row-note">build on the open protocol and submit to the directory</span></span>
253 <span className="hl-row-a"><span className="hl-row-name">Build for Claude</span><span className="hl-row-note">build a plugin and list it in Anthropic’s directory</span></span>
254254 </a>
255255 
256256 <a className="hl-row" href="https://code.claude.com/docs" target="_blank" rel="noopener noreferrer">
from line 287
287287 </svg>
288288 
289289 <div className="hl-tip-text">
290 <p>All plans have access to the <a href="/docs/connectors/directory">Connectors Directory</a>. Free plans can also add one <a href="/docs/connectors/custom/remote-mcp">custom connector</a>. Compare <a href="https://claude.com/pricing" target="_blank" rel="noopener noreferrer">Claude plans and pricing<span className="hl-sr-only"> (opens in a new tab)</span></a>.</p>
290 <p>All plans have access to the <a href="/docs/connectors/directory">Connectors Directory</a>. Free plans can also add one <a href="/docs/connectors/custom/add-unlisted#add-a-connector-by-url">custom connector</a>. Compare <a href="https://claude.com/pricing" target="_blank" rel="noopener noreferrer">Claude plans and pricing<span className="hl-sr-only"> (opens in a new tab)</span></a>.</p>
291291 <p>Claude for Government access is set up by your agency's administrators, so you don't need to create an account. See the <a href="/docs/government/overview">Claude for Government guide</a>.</p>
292292 </div>
293293 </div>
from line 297
297297 <h2 className="hl-h2">Building with Claude</h2>
298298 
299299 <div className="hl-dev-list">
300 <a className="hl-dev-card" href="/docs/build/overview">
301 <svg className="hl-dev-icon" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
302 <path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" />
303 
304 <path d="m3.3 7 8.7 5 8.7-5" />
305 
306 <path d="M12 22V12" />
307 </svg>
308 
309 <span className="hl-dev-body"><span className="hl-dev-title">Build for Claude</span><span className="hl-dev-desc">Build a plugin people use inside Claude and list it in Anthropic’s directory.</span></span>
310 
311 <svg className="hl-upright" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
312 <path d="M5 12h14" />
313 
314 <path d="m12 5 7 7-7 7" />
315 </svg>
316 </a>
317 
300318 <a className="hl-dev-card" href="https://platform.claude.com" target="_blank" rel="noopener noreferrer">
301319 <svg className="hl-dev-icon" aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
302320 <path d="M4 21L4 14" />

plugins/admin New page · 355 lines, new page

# Manage plugins for your organization ## Find your organization's plugin settings ### Inventory ### Marketplaces ### Organization skills ### Requests ### Policy ## Review your organization's inventory ### Open an item's page ### Roll back to an earlier version ## Control which plugins members get ### Set availability ### Add your own plugins ### Manage synced marketplaces #### Remove one of Anthropic's sources ### Control what members add themselves ### Turn plugins and skills off for everyone ### Let members share plugins with each other ### Stop sharing by a member who left ### Review plugins that members publish #### Set the publishing policy #### Review a request ### Limit to user groups on Enterprise ## Track usage in your organization ## Related organization controls

A whole new page. There's nothing to diff it against, so here is what it says.

# Manage plugins for your organization

> Control which plugins members of your Team or Enterprise organization can use in claude.ai and Cowork: see what you have, add your own, and set availability.

Owners of a Team or Enterprise organization decide which plugins members can use in claude.ai and Cowork from [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills). You set each plugin's availability: hidden, available for members to install, installed for everyone, or required. You can also add your organization's own plugins from a GitHub or GitLab repository or a zip file.

This page is for Owners, and for Enterprise members whose role includes managing the organization's plugins.

<Note>
  * If you set plugin policy for the Claude Code command line, see [managed settings](https://code.claude.com/docs/en/plugins/org) in the Claude Code docs
  * If you want one plugin to reach members in claude.ai and Cowork and developers in the Claude Code command line, and need to decide between this page and managed settings, or use the two together, see [Roll out a plugin to your whole organization](/docs/plugins/org-rollout)
  * If you run Claude Desktop on your own model provider, see [MCP, plugins, skills, and hooks](/docs/third-party/claude-desktop/extensions)
</Note>

To start, go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). From there you can [review what your organization has](#review-your-organization%E2%80%99s-inventory), [set each plugin's availability](#set-availability), or [add your organization's own plugins](#add-your-own-plugins).

## Find your organization's plugin settings

[**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) is available on Team and Enterprise plans to Owners and Primary Owners. On Enterprise, it's also available to members whose custom role includes viewing or managing the organization's libraries. That permission is the **Libraries** row in the roles editor at **Organization settings > Roles**. The role labeled **Admin** in your members list doesn't include this page. With a role that only views libraries, you see the page without the **Add** menu and without the availability settings.

The **Plugins & skills** page has these tabs: **Inventory**, **Marketplaces**, **Organization skills**, **Requests**, and **Policy**.

### Inventory

The [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab lists every plugin and skill in your organization and who can use each one. This is where you [review what you have](#review-your-organization%E2%80%99s-inventory), [set availability](#set-availability), and [add your own plugins](#add-your-own-plugins).

### Marketplaces

The [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab lists the repositories and catalogs your organization's plugins come from, with the sync status of each one. This is where you [re-sync a marketplace, turn on automatic sync, or remove a source](#manage-synced-marketplaces).

### Organization skills

The **Organization skills** tab holds skills your organization uploaded that haven't moved into the **Inventory** tab yet. It appears only while your organization has some.

### Requests

The [**Requests**](https://claude.ai/admin-settings/skills?tab=requests) tab lists plugins and skills that members have asked to publish to your organization. This is where you [approve or deny them](#review-plugins-that-members-publish).

### Policy

The [**Policy**](https://claude.ai/admin-settings/skills?tab=policy) tab holds the switches for what members can do themselves: [create and add their own](#control-what-members-add-themselves), [share with each other](#let-members-share-plugins-with-each-other), and [publish to the organization](#review-plugins-that-members-publish). It also holds the **Skills and plugins scanning** switch, which turns on the security scan whose result the **Inventory** tab shows, and the switch that [turns plugins and skills off for everyone](#turn-plugins-and-skills-off-for-everyone).

## Review your organization's inventory

The [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab lists every skill and plugin your organization governs in one table. The table includes what your organization uploaded or syncs from a marketplace, plugins from Anthropic's catalogs, which are Anthropic's default marketplaces, and what members created for themselves or shared.

Each row has these columns. Read across a row to see where an item came from and who has it:

* **Name**: the item's name, marked **Skill** or **Plugin**
* **Source**: the marketplace or repository the item comes from, or **Member** for an item a member created
* **Security scan**: the result of the item's security scan. You see this column when **Skills and plugins scanning** is on in the [**Policy**](https://claude.ai/admin-settings/skills?tab=policy) tab. Otherwise the column is **Version**
* **Capabilities**: the connectors and tools the item uses
* **Audience**: who can use the item, such as everyone or specific groups
* **Users (30d)**: how many people in your organization used the item in the last 30 days

Use the controls above the table to narrow it to the items you're looking for:

* **Search by name**: find an item by its name
* **Source**: show items from your organization's marketplaces, from Anthropic, or from members
* **Audience**: show items by who can use them
* **Add filter**: filter by **Type** to show only skills or only plugins, or by **Author** to show one person's items
* **Sort**: order the table by **Newest**, **Name A–Z**, or **Most users**

### Open an item's page

Select a row to open the item's page. For an item your organization uploaded or syncs, the page has these sections:

* **Distribution**: the item's availability and any group settings. These are the settings that [Set availability](#set-availability) and [Limit to user groups on Enterprise](#limit-to-user-groups-on-enterprise) describe
* **Connectors & tools**: what the item connects to
* **Version history**: each version with its date, who added it, and how it arrived, such as a GitHub push or an upload. To see what changed, open a version's menu and select **Compare with current**

When the item's security scan warns, fails, or couldn't run, a notice on the page gives the result and the reason. To run the scan again, open the menu on the item's page and select **Retry scan**.

To add a version of an item your organization uploaded, open the item's menu and select **Upload new version**. To remove an item your organization owns, use the delete option in the same menu.

For an item a member created for themselves, the page shows who created it, who they've shared it with, any request to publish it, and its scan status. It doesn't show the item's version history.

### Roll back to an earlier version

For an item your organization uploads, you can make any earlier version the one members get:

<Steps>
  <Step title="Open the item's page">
    On the [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab, select the item's row to open its page.
  </Step>

  <Step title="Go to Version history">
    Go to **Version history**. The version members get now is marked **Current**.
  </Step>

  <Step title="Compare the earlier version">
    To see what an earlier version changes, open that version's menu and select **Compare with current**.
  </Step>

  <Step title="Revert to the version">
    Open the menu of the version you want, select **Revert to this version**, and confirm.
  </Step>
</Steps>

Members then get that version, and **Current** moves to it. Reverting deletes nothing, so every version stays in the list. To go forward again, open a newer version's menu and select **Make this the current version**.

Reverting isn't available for an item synced from a repository. Fix the plugin in the repository and push to the default branch. Then select **Re-sync** on the marketplace in the [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab, as [Update through organization settings](/docs/plugins/org-rollout#update-through-organization-settings) describes.

While the repository is being fixed, you can [set the plugin's availability](#set-availability) to **Not available**. Members stop seeing the plugin and Claude stops loading it for them, including members who had it installed. On Enterprise, a group's own **Group access…** setting replaces the organization-wide one for that group's members, as [Limit to user groups on Enterprise](#limit-to-user-groups-on-enterprise) explains. Set any group that has one for this plugin to **Not available** as well. Set the availability back when the fix has synced. Don't use **Delete source** on the marketplace for this, because it permanently deletes every plugin in that marketplace for every member.

## Control which plugins members get

You set a plugin's availability, add your own plugins, manage synced marketplaces, decide what members can add, share, and publish, and set availability for user groups, all from the tabs of **Plugins & skills**.

### Set availability

A plugin's availability decides whether members can see the plugin, install it if they want it, get it installed automatically, or must keep it on. In the plugin's row menu, this setting is labeled **Default access**. To set it:

<Steps>
  <Step title="Open the Inventory tab">
    Go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) and stay on the **Inventory** tab.
  </Step>

  <Step title="Open the plugin's menu">
    Open the menu at the end of the plugin's row.
  </Step>

  <Step title="Select Default access">
    Select **Default access**.
  </Step>

  <Step title="Choose a value">
    Choose **Not available**, **Available to install**, **Installed by default**, or **Required**.
  </Step>
</Steps>

The product shows the availability setting under other labels too: **Distribution** on the item's page, **Audience** in the table, and **Group access…** for a user group.

Each availability value decides what members see and whether they can remove the plugin:

| Setting                  | What members see                                                                               | Can members remove it                      |
| :----------------------- | :--------------------------------------------------------------------------------------------- | :----------------------------------------- |
| **Not available**        | Nothing; the plugin is hidden from **Customize > Plugins** and can't be installed              | Not applicable                             |
| **Available to install** | The plugin appears under **Discover** and members install it if they want it                   | Yes                                        |
| **Installed by default** | The plugin is already installed for every member                                               | Members can turn it off                    |
| **Required**             | The plugin is installed and always on, marked **This plugin is required by your organization** | No; members can't turn it off or remove it |

Availability doesn't add a plugin's bundled connectors. If a plugin you install by default or require includes a connector, an Owner also adds that connector in [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors), and members then connect it with their own account.

You can set availability for plugins your organization owns and for plugins from Anthropic's catalogs. An item a member created for themselves has no availability setting.

In Claude Code sessions that sync the member's account plugins, a required plugin stays on as well. [Choose a rollout route](/docs/plugins/org-rollout#choose-a-rollout-route) says which sessions sync, and [Control which synced plugins load](https://code.claude.com/docs/en/plugins/loading#control-which-synced-plugins-load) in the Claude Code docs covers what the member sees there.

### Add your own plugins

Adding a plugin or skill of your own puts it on the **Inventory** tab, private to your organization, where you then [set its availability](#set-availability) for members. To add one:

<Steps>
  <Step title="Open Plugins & skills">
    Go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory).
  </Step>

  <Step title="Select Add and choose the source">
    Select **Add**, then choose where the plugin or skill comes from. The menu groups these items under **Skills** and **Plugins**:

    * **Upload a skill** or **Create a skill**: one skill for your organization
    * **Upload a plugin**: a plugin zip
    * **Create a plugin**: a plugin you write in the browser
    * **Sync from GitHub** or **Sync from GitLab**: a [plugin marketplace](https://code.claude.com/docs/en/plugins/create-marketplace) repository that contains your plugins
    * **Add marketplace**: another source of plugins, such as one of Anthropic's catalogs
  </Step>
</Steps>

A marketplace you add appears on the **Marketplaces** tab, and its plugins appear on the **Inventory** tab. Adding plugins here doesn't publish them anywhere.

[Sync your organization's plugins from a repository](/docs/plugins/org-sync) covers the repository requirements for syncing, the GitLab setup, and how members receive the plugins without needing access to the repository themselves.

### Manage synced marketplaces

The [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab lists each marketplace your organization's plugins come from, with its sync status and its number of items. Select a marketplace to open its page, where these controls decide when it syncs and what availability its plugins start with:

* **Re-sync**: sync the marketplace now. A marketplace syncs when you select **Re-sync** or, with **Sync automatically** on, when someone pushes to the repository's default branch. Nothing syncs on a schedule. **Re-sync** is also in the marketplace's row menu on the **Marketplaces** tab
* **Sync automatically**: start a sync when someone pushes to the repository's default branch. It's in the **Sync** section, and it requires a webhook on the repository
* **Default access**: the availability for every plugin from this marketplace that doesn't have its own setting, including plugins added to it later. It's in the **Default settings** section. For Anthropic's directory, the choices are **Not available** and **Available to install** only

If a sync fails, the marketplace's page shows the date and the reason, with a **View affected items** link.

#### Remove one of Anthropic's sources

You can remove a catalog source, such as Anthropic's directory or a partner catalog, so that members no longer see plugins from it:

<Steps>
  <Step title="Open the Marketplaces tab">
    Open the [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab.
  </Step>

  <Step title="Find the catalog's row">
    Find the row that shows **Catalog** under its name. Its **Sync** column reads **Managed by Anthropic**, or **Managed by** the partner's name for a partner catalog.
  </Step>

  <Step title="Remove it from the organization">
    Open the menu at the end of the row and select **Remove from organization**.
  </Step>

  <Step title="Confirm">
    In **Remove source**, select **Remove**.
  </Step>
</Steps>

To add the source back, select **Add**, then **Add marketplace**, then **Browse Anthropic sources**, and select **Add** next to the source.

### Control what members add themselves

Members can add plugins of their own from **Customize > Plugins > Add**: a marketplace by URL, an uploaded file, **Create a plugin**, or **Create with Claude**. The setting that lets members create skills also controls those options.

Go to [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy) and turn **User-created skills** on or off. When **User-created skills** is off, members can't upload or create skills, and the plugin options don't appear in their **Add** menu.

For the Claude Code command line, the counterpart is managed settings. [Restrict what users can install](https://code.claude.com/docs/en/plugins/org#restrict-what-users-can-install) in the Claude Code docs covers those keys.

### Turn plugins and skills off for everyone

You can turn plugins and skills off for your whole organization. This also stops Claude Code from loading the plugins it syncs from members' claude.ai accounts.

<Steps>
  <Step title="Open the Policy tab">
    Go to [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy).
  </Step>

  <Step title="Turn off Skills">
    Turn off **Skills**.
  </Step>
</Steps>

Members then see **Skills must be enabled in order to use plugins.** on **Customize > Plugins**, and they can't add or use plugins there. The organization's own skills are off as well.

To stop the sync into Claude Code and leave plugins on in claude.ai and Cowork, set `syncClaudeAiPlugins` to `false` in Claude Code managed settings instead. [Control which synced plugins load](https://code.claude.com/docs/en/plugins/loading#control-which-synced-plugins-load) in the Claude Code docs covers that setting.

### Let members share plugins with each other

Members can share a plugin they made with specific people without involving you. In [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy), **Skill sharing** controls whether members can share skills and plugins they made with specific people in your organization. On Enterprise, **Share with groups** lets them share with user groups as well. [Share a plugin with specific people](/docs/plugins/share#share-a-plugin-with-specific-people) covers what members and recipients see.

### Stop sharing by a member who left

When someone leaves your organization, the items they shared keep working for the people they shared them with. The **Inventory** tab shows a notice with the number of former members who still share items. To end that sharing:

<Steps>
  <Step title="Open the review">
    On the [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab, select **Review** in the notice.
  </Step>

  <Step title="Stop sharing">
    Select **Stop sharing** for an item, or stop sharing all of one former member's items at once.
  </Step>

  <Step title="Confirm">
    Confirm. Everyone the item is shared with loses access right away.
  </Step>
</Steps>

You can also open a former member's item from the table. Its page has an **Owner has left** section with **Stop sharing** and **Delete**.

### Review plugins that members publish

Members on Team and Enterprise plans can publish a plugin they made to your organization's library with **Publish to org** on the plugin's page. You decide whether that's allowed and whether each request waits for your approval. [Publish a plugin to your organization](/docs/plugins/share#publish-a-plugin-to-your-organization) covers the member's side.

#### Set the publishing policy

The **Publishing** setting decides whether members can publish to your organization and whether each request waits for review. Set it in [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy). Owners and Primary Owners can change it. The same setting covers skills and plugins, and it has these values:

| Publishing          | What members can do                                                                                                                          |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- |
| **Requires review** | Submit a plugin for review. Nothing reaches other members until a reviewer approves the request.                                             |
| **Open**            | Publish without review. Where your organization scans what members publish, the plugin goes live after the security scan passes.             |
| **Off**             | Nothing. **Publish to org** doesn't appear for members, and requests that were already waiting are hidden until you turn publishing back on. |

If nobody in your organization has chosen a **Publishing** value, your plan's default applies:

* **Team**: **Open**
* **Enterprise**: **Off**. On October 2, 2026, the Enterprise default becomes **Requires review**. To keep a different value, choose it before then

#### Review a request

Under **Requires review**, nothing reaches other members until a reviewer approves the request. To approve or deny a request, you need to be an Owner or Primary Owner. On Enterprise, a member whose custom role includes managing the organization's libraries can review requests too.

Requests to publish wait in [**Organization settings > Plugins & skills > Requests**](https://claude.ai/admin-settings/skills?tab=requests). You can't review a request you submitted yourself. A pending request that looks similar to other items in your organization is tagged **Possible duplicate**, and its review page lists up to three similar items, each with a **Compare** link.

To review a request:

<Steps>
  <Step title="Open the request">
    Open the request to see what the member submitted.
  </Step>

  <Step title="Approve or deny">
    Select **Approve** or **Deny**.
  </Step>

  <Step title="Set availability or give a reason">
    If you approve, choose the plugin's availability, as [Set availability](#set-availability) describes.

    If you deny, enter a reason, which the member receives by email and sees on their plugin's page. A denial closes that request, and the member can revise the plugin and submit a new one.
  </Step>
</Steps>

A plugin that a member published appears on the **Inventory** tab with your organization's other plugins. You [set its availability](#set-availability) there, and you can delete it from its menu.

Cut at 300 lines. The page has the rest.

plugins/build New page · 642 lines, new page

# Plugin structure and testing ## Lay out the plugin folder ### Folder layout ### Check what each app loads ### Start from an example ## Write the plugin ### Write the manifest ### Bundle an MCP connector with its skill ## Test the plugin on each surface ## Add Claude Code-only components ## Next steps

A whole new page. There's nothing to diff it against, so here is what it says.

# Plugin structure and testing

> Reference for the plugin folder: what each file is, the manifest fields every app reads, bundling an MCP connector with its skill, and testing on each app.

export const Piece = ({id, children}) => <div className="pe-piece" data-piece={id}>{children}</div>;

export const PluginExplorer = ({children, variant}) => {
  const SKILL_PIECES = [{
    id: 'skillmd',
    required: 'Required',
    name: 'SKILL.md',
    path: 'brand-guidelines/SKILL.md',
    lines: [{
      depth: 0,
      kind: 'file',
      text: 'SKILL.md'
    }],
    href: '/skills/how-to#create-a-skillmd-file',
    linkText: 'Go to Create a SKILL.md file'
  }, {
    id: 'references',
    name: 'Reference file',
    path: 'brand-guidelines/references/voice-and-tone.md',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: 'references/'
    }, {
      depth: 1,
      kind: 'file',
      text: 'voice-and-tone.md'
    }],
    href: '/skills/how-to#add-resources',
    linkText: 'Go to Add resources'
  }, {
    id: 'assets',
    name: 'Asset',
    path: 'brand-guidelines/assets/slide-template.md',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: 'assets/'
    }, {
      depth: 1,
      kind: 'file',
      text: 'slide-template.md'
    }],
    href: '/skills/how-to#add-resources',
    linkText: 'Go to Add resources'
  }, {
    id: 'scripts',
    name: 'Script',
    path: 'brand-guidelines/scripts/check_contrast.py',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: 'scripts/'
    }, {
      depth: 1,
      kind: 'file',
      text: 'check_contrast.py'
    }],
    href: '/skills/how-to#add-scripts',
    linkText: 'Go to Add scripts'
  }];
  const PLUGIN_PIECES = [{
    id: 'manifest',
    required: 'Required',
    name: 'Manifest',
    path: '.claude-plugin/plugin.json',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: '.claude-plugin/'
    }, {
      depth: 1,
      kind: 'file',
      text: 'plugin.json'
    }],
    href: '/plugins/build#write-the-manifest',
    linkText: 'Go to Write the manifest'
  }, {
    id: 'skills',
    name: 'Skill',
    path: 'skills/file-expense/SKILL.md',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: 'skills/'
    }, {
      depth: 1,
      kind: 'folder',
      text: 'file-expense/'
    }, {
      depth: 2,
      kind: 'file',
      text: 'SKILL.md'
    }],
    href: '/skills/how-to',
    linkText: 'Go to Create custom skills'
  }, {
    id: 'references',
    name: 'Skill reference file',
    path: 'skills/file-expense/references/categories.md',
    lines: [{
      depth: 2,
      kind: 'folder',
      text: 'references/'
    }, {
      depth: 3,
      kind: 'file',
      text: 'categories.md'
    }],
    href: '/skills/how-to#add-resources',
    linkText: 'Go to Add resources'
  }, {
    id: 'scripts',
    name: 'Skill script',
    path: 'skills/file-expense/scripts/total.py',
    lines: [{
      depth: 2,
      kind: 'folder',
      text: 'scripts/'
    }, {
      depth: 3,
      kind: 'file',
      text: 'total.py'
    }],
    href: '/skills/how-to#add-scripts',
    linkText: 'Go to Add scripts'
  }, {
    id: 'commands',
    name: 'Command',
    path: 'commands/summarize.md',
    lines: [{
      depth: 0,
      kind: 'folder',
      text: 'commands/'
    }, {
      depth: 1,
      kind: 'file',
      text: 'summarize.md'
    }],
    href: '/plugins/platform-support#compare-component-support-by-app',
    linkText: 'Go to component support by app'
  }, {
    id: 'mcp',
    name: 'MCP connector',
    path: '.mcp.json',
    lines: [{
      depth: 0,
      kind: 'file',
      text: '.mcp.json'
    }],
    href: '/plugins/build#bundle-an-mcp-connector-with-its-skill',
    linkText: 'Go to Bundle an MCP connector with its skill'
  }, {
    id: 'readme',
    required: 'Required to publish',
    name: 'README',
    path: 'README.md',
    lines: [{
      depth: 0,
      kind: 'file',
      text: 'README.md'
    }],
    href: '/plugins/pre-submission-checklist#readme-and-license',
    linkText: 'Go to README and license checks'
  }, {
    id: 'license',
    required: 'Required to publish',
    name: 'License',
    path: 'LICENSE',
    lines: [{
      depth: 0,
      kind: 'file',
      text: 'LICENSE'
    }],
    href: '/plugins/pre-submission-checklist#readme-and-license',
    linkText: 'Go to README and license checks'
  }];
  const isSkill = variant === 'skill';
  const PIECES = isSkill ? SKILL_PIECES : PLUGIN_PIECES;
  const rootLabel = isSkill ? 'brand-guidelines/' : 'expense-reports/';
  const title = isSkill ? 'What goes in the skill folder' : 'What goes in the plugin folder';
  const treeCaption = isSkill ? 'Skill folder' : 'Plugin folder';
  const [selectedId, setSelectedId] = useState(isSkill ? 'skillmd' : 'manifest');
  const [isFullscreen, setIsFullscreen] = useState(false);
  const rootRef = useRef(null);
  useEffect(() => {
    const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);
    document.addEventListener('fullscreenchange', onFsChange);
    return () => document.removeEventListener('fullscreenchange', onFsChange);
  }, []);
  const toggleFullscreen = () => {
    if (!rootRef.current) return;
    if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});
  };
  const selected = PIECES.find(p => p.id === selectedId) || PIECES[0];
  const onTreeKeyDown = e => {
    const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];
    if (keys.indexOf(e.key) === -1) return;
    const i = PIECES.findIndex(p => p.id === selectedId);
    let next = i;
    if (e.key === 'ArrowDown') next = Math.min(PIECES.length - 1, i + 1);
    if (e.key === 'ArrowUp') next = Math.max(0, i - 1);
    if (e.key === 'Home') next = 0;
    if (e.key === 'End') next = PIECES.length - 1;
    e.preventDefault();
    if (next === i) return;
    const id = PIECES[next].id;
    setSelectedId(id);
    const el = document.getElementById('pe-node-' + id);
    if (el) el.focus();
  };
  const FolderIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
      <path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />
    </svg>;
  const FileIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
      <path d="M4 1.5h5.5L13 5v9.5H4z" />
      <path d="M9.5 1.5V5H13" />
    </svg>;
  return <div ref={rootRef} className={isFullscreen ? 'pe-root pe-fullscreen not-prose' : 'pe-root not-prose'} data-selected={selected.id}>
      <style>{`
        .pe-root {
          --pe-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
          --pe-accent: #D97757;
          --pe-accent-text: #A8502F;
          --pe-accent-bg: rgba(217,119,87,0.10);
          --pe-bg: #FFFFFF;
          --pe-surface: #FAFAF7;
          --pe-hover: #F0EEE6;
          --pe-border: #E8E6DC;
          --pe-text: #141413;
          --pe-text-2: #3D3D3A;
          --pe-text-3: #5E5D59;
          font-family: inherit;
          background: var(--pe-bg);
          color: var(--pe-text);
          border: 1px solid var(--pe-border);
          border-radius: 12px;
          margin: 1.5rem 0;
          overflow: hidden;
          box-sizing: border-box;
        }
        .dark .pe-root {
          --pe-accent-text: #EBA98F;
          --pe-accent-bg: rgba(217,119,87,0.18);
          --pe-bg: #1A1918;
          --pe-surface: #232221;
          --pe-hover: #2E2D2B;
          --pe-border: #3A3936;
          --pe-text: #F1EFE9;
          --pe-text-2: #D6D4CA;
          --pe-text-3: #B8B5AD;
        }
        .pe-root *, .pe-root *::before, .pe-root *::after { box-sizing: border-box; }
        .pe-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 24px 16px; border-bottom: 1px solid var(--pe-border); }
        .pe-head-text { flex: 1; min-width: 0; }
        .pe-fs-btn { flex-shrink: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pe-border); border-radius: 6px; background: var(--pe-surface); color: var(--pe-text-2); font-size: 15px; line-height: 1; cursor: pointer; }
        .pe-fs-btn:hover { background: var(--pe-hover); }
        .pe-fs-btn:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }
        .pe-fullscreen { border-radius: 0; height: 100vh; display: flex; flex-direction: column; overflow: auto; }
        .pe-fullscreen .pe-body { flex: 1; }
        .pe-title { font-size: 19px; font-weight: 600; line-height: 1.3; color: var(--pe-text); margin: 0; }
        .pe-sub { font-size: 15px; line-height: 1.5; color: var(--pe-text-3); margin: 4px 0 0; }
        .pe-sub code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }
        .pe-body { display: flex; align-items: stretch; }
        .pe-tree-pane { width: 270px; flex-shrink: 0; background: var(--pe-surface); border-right: 1px solid var(--pe-border); padding: 16px 0 12px; }
        .pe-panel { flex: 1; min-width: 0; padding: 16px 24px 24px; }
        .pe-caption { font-size: 13px; font-weight: 600; color: var(--pe-text-3); margin: 0 0 10px; }
        .pe-tree-pane .pe-caption { padding: 0 16px; }
        .pe-rootline { display: flex; align-items: center; gap: 7px; padding: 3px 16px; font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-text-3); }
        .pe-node {
          display: block; width: 100%; margin: 0; padding: 3px 16px 3px 30px; text-align: left; cursor: pointer;
          background: transparent; color: var(--pe-text-2);
          border: none; border-left: 3px solid transparent;
          font-family: var(--pe-mono); font-size: 13.5px; line-height: 1.4;
        }
        .pe-node:hover { background: var(--pe-hover); }
        .pe-node:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: -2px; }
        .pe-node[aria-pressed="true"] { background: var(--pe-accent-bg); border-left-color: var(--pe-accent); color: var(--pe-accent-text); font-weight: 600; }
        .pe-line { display: flex; align-items: center; gap: 7px; padding: 2px 0; }
        .pe-line span { overflow-wrap: anywhere; }
        .pe-line > span:not(.pe-req) { white-space: nowrap; flex-shrink: 0; }
        .pe-req { flex-shrink: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; margin-left: 8px; padding: 0 6px; border-radius: 999px; font-size: 11px; line-height: 18px; font-family: var(--pe-sans, inherit); letter-spacing: .02em; color: var(--pe-accent-text); border: 1px solid var(--pe-border); background: var(--pe-surface); white-space: nowrap; }
        .pe-piece { display: none; font-size: 16px; line-height: 1.6; color: var(--pe-text-2); }
        ${PIECES.map(p => '.pe-root[data-selected="' + p.id + '"] .pe-piece[data-piece="' + p.id + '"]').join(',\n        ')} { display: block; }
        .pe-piece p { margin: 0 0 10px; }
        .pe-piece p:last-child { margin-bottom: 0; }
        .pe-piece ul { list-style: disc; padding-left: 1.25em; margin: 0 0 10px; }
        .pe-piece li { margin: 2px 0; }
        .pe-piece code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }
        .pe-piece .code-block { margin: 12px 0 0; }
        .pe-piece pre code { padding: 0; border: none; background: none; }
        .pe-piece a { color: var(--pe-accent-text); }
        .pe-line-compact { display: none; }
        .pe-icon { flex-shrink: 0; }
        .pe-name { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -0.2px; color: var(--pe-text); margin: 0; }
        .pe-path { font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-accent-text); margin: 4px 0 0; overflow-wrap: anywhere; }

Cut at 300 lines. The page has the rest.

Feedback