Skip to content

■ GUIDES // PRACTICAL GUIDE

Claude Code Plugins System

Extend Claude Code with plugins for custom tools, MCP servers, and workflows

[!] ON THIS PAGE

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:

  • Tools - New capabilities Claude can invoke
  • MCP Servers - External services and APIs
  • Skills - Reusable prompts and workflows
  • Resources - Data sources Claude can access

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:

  • Database connectors (Postgres, MongoDB, Redis)
  • API integrations (GitHub, Linear, Notion)
  • Development tools (linting, testing, deployment)
  • Knowledge bases (documentation, wikis)

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

  • Scope narrowly - One plugin, one purpose
  • Handle errors - Return clear messages when things fail
  • Document inputs - Describe each parameter
  • Version carefully - Breaking changes need major bumps
  • Test thoroughly - Use claude plugins test before shipping

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