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:
- 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
| Type | Use Case |
|---|---|
| MCP Server | External APIs, databases, services |
| Skill | Reusable prompts, workflows |
| Tool | Single-purpose capabilities |
| Resource | Static 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 testbefore 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
Next: Building Custom MCP Servers
Get updates
New guides, workflows, and AI patterns. No spam.
Thank you! You're on the list.