# Developing plugins

> Source: https://docs.strapi.io/cms/plugins-development/developing-plugins

Strapi plugins extend core functionality using Admin Panel API, Server API, or MCP server tools. Plugins can be local or published to the Marketplace, and are created using the Plugin SDK.

Strapi allows the development of plugins that work exactly like the built-in plugins or 3rd-party plugins available from the [Marketplace](https://market.strapi.io). Once created, your plugin can be:

- used as a local plugin, working only with a specific Strapi project,
- or [submitted to the Marketplace](https://market.strapi.io/submit-plugin) to be shared with the community.

👉 To start developing a Strapi plugin:

1. [Create a plugin](/cms/plugins-development/create-a-plugin) using the Plugin SDK.
2. Learn more about the [structure of a plugin](/cms/plugins-development/plugin-structure).
3. Get an overview of the [plugin APIs](#plugin-apis) to add features to your plugin.
4. Read some advanced [guides](#guides) based on your use case(s).

:::note
Ensure you release your Strapi 5 plugin as a different major version number to distinguish it from the v4 compatible version.
:::

## Plugin APIs

Strapi provides the following programmatic APIs for plugins to hook into some of Strapi's features:

- [Admin Panel API](/cms/plugins-development/admin-panel-api): Use the Admin Panel API to have your plugin interact with the admin panel of Strapi.
- [Server API](/cms/plugins-development/server-api): Use the Server API to have your plugin interact with the backend server of Strapi.
- [Extending the MCP server](/cms/plugins-development/extend-mcp-server): Use the strapi.ai.mcp service to register custom MCP tools so AI clients can trigger plugin-specific actions.

:::strapi Custom fields plugins
Plugins can also be used to add [custom fields](/cms/features/custom-fields) to Strapi.
:::

## Guides

- [How to store and access data from a Strapi plugin](/cms/plugins-development/guides/store-and-access-data)
- [How to pass data from the backend server to the admin panel with a plugin](/cms/plugins-development/guides/pass-data-from-server-to-admin)
- [How to create admin permissions for plugins](/cms/plugins-development/guides/admin-permissions-for-plugins)
- [How to create components for plugins](/cms/plugins-development/guides/create-components-for-plugins)

<br />

:::strapi Additional resources
The [contributors documentation](https://contributor.strapi.io/) can also include additional information useful while developing a Strapi plugin.
:::
