Claude Code Plugins System

Table of content

Plugins extend Claude Code beyond its default capabilities. Add new tools, connect MCP servers, create custom skills, and share configurations with your team.

What Are Plugins?

Plugins are packages that add functionality to Claude Code:

Each plugin runs in its own context. Install what you need, disable what you don’t.

Finding Plugins

Marketplace: Browse community plugins directly in Claude Code.

claude plugins search "github"
claude plugins browse --category mcp

GitHub: Many plugins live in public repositories. Search for claude-code-plugin topics.

Team sharing: Export your plugin configurations and share them across your organization.

Popular categories:

Installing Plugins

Install from marketplace:

claude plugins install @anthropic/github
claude plugins install @community/postgres-mcp

Install from GitHub:

claude plugins install github:username/repo-name

Install from local path (useful for development):

claude plugins install ./my-local-plugin

List installed plugins:

claude plugins list

Configuration

Plugins live in your Claude Code settings. Configure them in ~/.claude/settings.json:

{
  "plugins": {
    "@anthropic/github": {
      "enabled": true,
      "config": {
        "token": "${GITHUB_TOKEN}",
        "defaultOrg": "my-company"
      }
    },
    "@community/postgres-mcp": {
      "enabled": true,
      "config": {
        "connectionString": "${DATABASE_URL}"
      }
    }
  }
}

Use environment variables for secrets. Never commit tokens to config files.

Project-specific plugins go in .claude/plugins.json at your repo root:

{
  "plugins": ["@anthropic/github", "./tools/custom-deploy"]
}

Creating Your Own

A minimal plugin needs a manifest and an entry point.

manifest.json:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "Custom deployment tool",
  "type": "mcp",
  "entry": "./server.js"
}

server.js (MCP server example):

import { McpServer } from "@anthropic/mcp-sdk";

const server = new McpServer({
  name: "my-plugin",
  version: "1.0.0"
});

server.tool("deploy", "Deploy to production", {
  environment: { type: "string", enum: ["staging", "production"] }
}, async ({ environment }) => {
  // Your deployment logic
  return { success: true, environment };
});

server.start();

Test locally before publishing:

claude plugins install ./my-plugin
claude plugins test my-plugin

Plugin Types

TypeUse Case
MCP ServerExternal APIs, databases, services
SkillReusable prompts, workflows
ToolSingle-purpose capabilities
ResourceStatic data, documentation

Best Practices

Troubleshooting

Check plugin logs:

claude plugins logs @anthropic/github

Verify configuration:

claude plugins config @anthropic/github

Reset a misbehaving plugin:

claude plugins reset @anthropic/github

Next: Building Custom MCP Servers

Topics: claude-code mcp architecture