Skip to content
Status

MCP Gateway / Plugins

Plugins

Bundle MCP servers and skills into plugins, assign them to roles, and publish to agent marketplaces via GitHub.

The Plugins page creates distributable bundles that package MCP servers and skills together, assigns them to roles, and publishes them to Claude Code, Cursor, and Codex marketplaces via GitHub. Open it from MCP Gateway > Plugins in the project sidebar.

For an end-to-end walkthrough, from granting a role access to verifying tool calls in each client, see Roll out MCP servers to a team with plugins.

For a role-based rollout, see Automatic MCP distribution. Creating a role sets up its plugin; assigning the role on a server’s Team Access tab adds the server to matching plugins in the same project and requests publication through that project’s connected marketplace.

Viewing this page requires the project:read scope. Installing, updating, or configuring plugins requires the project:write scope, and adding or distributing a skill via a plugin requires the skill:write scope. Renaming the marketplace, enabling or disabling the observability plugin, and downloading an observability package require the org:admin scope. Viewing is included in both the default Admin and Member roles; the Member role can view plugins, but mutations are Admin-only.

Plugins publish through a GitHub-backed marketplace: a repository the platform creates and fully manages on the project’s behalf, overwriting its contents on every publish. The Your project marketplace card at the top of the page shows the repository, its sync state (Not published, Needs syncing, or Up to date), and the actions Open, Manage collaborators, and Rename. Sync changes appears when the published repository is behind the project.

Set the marketplace up once with Publish now, which opens the Marketplace settings dialog to ask for a Marketplace name and then opens the Publish Plugins dialog. The marketplace name is the identifier a developer types after the plugin slug (<plugin>@<marketplace>) when installing from a supported agent marketplace, and it applies to every plugin in the project. Lowercase letters, digits, and hyphens are allowed. See Anthropic.

Use the marketplace name, not the repository name

In Claude Code settings, the extraKnownMarketplaces key and the @ suffix in enabledPlugins must both be the marketplace name shown in the dashboard, not the GitHub repository name. A mismatch fails silently: Claude Code reports no error and the plugin never installs or updates.

The Publish Plugins dialog accepts GitHub Usernames to add as collaborators on the repository. At least one member of the organization must be a collaborator before the repository can be connected to Claude, Cursor, or another marketplace, and GitHub emails each collaborator an invitation that must be accepted. Collaborators are added as repository admins, because platform marketplaces such as Cursor gate parts of their setup (for example, serving the marketplace from Cursor) on admin access. Adding someone who already has access upgrades them to admin, which is how a marketplace published before this behavior is brought up to date. Existing collaborators are viewed or removed on GitHub.

A default plugin automatically includes newly created MCP servers. Members receive those configurations when their client updates the installed plugin; server authorization still determines which tools they can call. Every MCP server’s overview page shows whether it is published to a plugin and offers Publish or Update to change its plugin membership in place.

Create a plugin with Create plugin, which opens the Create Plugin dialog with a Name and optional Description. Each plugin card shows its server and skill counts, a Needs syncing badge when it has unpublished changes, and an Install menu. Filter the list by the servers a plugin contains, or search by name or slug.

A plugin’s detail page is split into sections in the left-hand menu:

  • Overview shows stat tiles for MCP servers, skills, and (for organizations running the device agent) assignments and installs, alongside the current published version and sync status. Sync or Sync changes republishes the marketplace, and Install offers GitHub installation (preferred), Download as zip for Claude, Cursor, and Codex, and Download Agent Plugins ZIP for plugins that are Agent Plugin standard compatible.
  • MCP Servers lists the servers bundled in the plugin, each marked Published or Unpublished (added since the marketplace was last published). Add Server picks any MCP server in the project. Everyone who installs the plugin gets these servers.
  • Skills lists the skills distributed through the plugin with a Latest or Pinned version badge. Add Skill distributes project skills to the bundle. Skills ship inside the plugin package and reach everyone who installs it.
  • Assignments manages which roles, members, or directory audiences receive the plugin. See Assignments below.
  • Settings holds the plugin details (name, slug, and description, changed with Edit details) and the Danger zone, where Delete removes the plugin from all assigned users on the next publish. Editing details republishes the plugin on the next sync.

GitHub installation (preferred) opens the Install instructions sheet with per-client steps and copy buttons for Claude Code, Claude Cowork, Cursor, OpenAI Codex, opencode, OpenClaw, GitHub Copilot CLI, and Pi, covering per-user marketplace registration, org-wide managed settings, and team marketplace registration. Per-platform setup differs enough to warrant its own page for some agents. See Anthropic for Claude Code and Claude Cowork, OpenAI for ChatGPT and Codex, and Cursor for Cursor team marketplaces. Neither OpenCode nor OpenClaw has a marketplace; both install the observability plugin as a downloadable package instead.

OpenCode and OpenClaw don't receive servers from plugins

The dashboard’s install paths for OpenCode and OpenClaw deliver only the observability plugin. Connect MCP servers to OpenCode through its own mcp configuration block, as described in OpenCode. OpenClaw has no plugin path for MCP servers.

Keep install URLs and settings private

Install snippets can contain credentials. The Claude Code marketplace URL carries an access token, and a private server without OAuth is published with an embedded API key. Share snippets only through an approved private channel, never in a public repository, ticket, or chat.

A plugin card also shows whether the plugin is Agent Plugin standard compatible. A compatible plugin is additionally published as a portable Agent Plugins 1.0 package, which clients such as GitHub Copilot install; a plugin that needs a platform credential, environment-backed headers, or a non-HTTPS URL is not portable and works only in the natively supported clients.

Authentication in the generated package depends on the server. A private server without OAuth can receive an embedded consumer API key. A server with a user session issuer, including every private tunneled server, omits the Authorization header so each installer signs in through that issuer. For tunneled servers, this lets the backend identify the person from the signed X-Speakeasy-Identity assertion. See Signed caller identity.

The Platform Plugins section at the bottom of the page provides plugins the platform ships rather than ones created in the project.

The Observability plugin forwards tool events from the team’s coding agent installs to the project dashboard and is the component that feeds the Observability section’s data. It ships first in the marketplace, marked required. Its Install menu offers GitHub installation (preferred) plus Download as zip for Claude, Cursor, Codex, OpenCode, OpenClaw, and Pi; each download mints a fresh hooks-scoped API key and embeds it in the package. Organization administrators can switch the plugin off for a project with the toggle on the card, which removes it from the marketplace and stops the device agent from installing it.

The Platform MCP card, shown to organization administrators, installs the Platform MCP from the public Speakeasy marketplace so MCP servers, risk policies, and logs can be managed from an agent. Organization members who connect to the Platform MCP see only the published plugins assigned to them and can retrieve their own install instructions without administrative access.

Where assignment controls are available, open Assignments from the left-hand menu of a plugin’s detail page to manage its audience. Manage assignments picks from Everyone, Roles, Directory groups, and Directory attributes, and individual members or email addresses can be assigned as well. Roles come from Roles and Permissions; directory audiences come from the identity provider connected under Organization settings > Team. Manually created plugins are assigned to everyone by default; narrow delivery from the same sheet. Automatically provisioned role plugins are assigned to their role. Assignments apply on each device’s next sync.

Role assignments also determine which servers automatic MCP distribution adds to a plugin, based on which servers the role can connect to. This controls bundle contents, not who can install the bundle.

Assignments gate device delivery only

Assignments gate delivery through the device agent. They do not restrict Claude Code, Claude Cowork, Cursor, or Codex marketplace installations. A published plugin is available to anyone with access to the marketplace; server authorization still controls tool calls.

The Assignments section and the assignment and install stat tiles appear only for administrators in organizations enrolled in the device agent program or with devices that have synced. Other projects show a notice about marketplace-wide availability instead of manual assignment controls. Automatically provisioned role plugins can still have role assignments when those controls are hidden.

Automatic role-plugin setup uses the organization’s oldest active project. To distribute servers from another project, create a plugin in that project and assign the role to it. Each plugin receives servers from its own project.

Open MCP Gateway > Plugins in the additional project and select Create plugin. In the new plugin’s Assignments section, open Manage assignments, select the intended role under Roles, and select Save assignments. Review existing audiences, including Everyone. Assigning the role adds servers in that project that the role already has access to.

Configure that project’s marketplace and confirm it is Up to date. Manual assignment controls have the availability requirements described under Assignments. If those controls are hidden, contact Speakeasy support before setting up distribution in the additional project.