Getting More Out of Claude Code (2) — Plugins, MCP, and IDE Integration
Introduction
In Part 1, we covered memory, skills, and hooks — ways to make Claude remember you and automate repetitive work.
In Part 2, we expand Claude Code’s reach outward:
- Part 1 — Memory + Skills + Hooks
- Part 2 — Plugins + MCP + IDE integration (this post)
- Part 3 — Sub-agents + Agent Teams
- Part 4 — Workflows + Ultrareview + Remote Agents
What we’ll cover:
- Plugins: bundle skills, agents, hooks, and MCP servers into shareable packages
- MCP: connect external tools like GitHub, Sentry, and databases to Claude
- IDE integration: use Claude Code natively inside VS Code and JetBrains
Note: This post was checked against the latest version as of June 2026. Commands, flags, and MCP server endpoints change often, so always confirm install commands against each service’s official docs or
claude mcp --help.
TL;DR
- Plugins are feature bundles. Package skills, agents, hooks, and external-tool config into one unit to share with your team or community. For solo use, just drop things in
.claude/. - MCP connects external tools. Attach hundreds of tools — GitHub, Sentry, databases, Slack — via a standard protocol. Most install in one command.
- There are two connection styles. Cloud services connect remotely (HTTP); local tools run as a process on your machine. Remote servers usually authenticate via browser login (OAuth).
- When tools pile up, they’re loaded on demand. Instead of loading every tool definition upfront, Claude searches and loads them as needed — on by default — to save context.
- Use it right inside your editor. VS Code has a dedicated side panel; JetBrains integrates via a plugin. There’s also a cloud version that runs in the browser with no install.
1. Plugins — Bundle and Share Functionality
A plugin packages skills, agents, hooks, and MCP servers into a single unit. You can build your own, or install one someone else made from a marketplace.
1.1 Plugins vs Standalone Config
| Approach | Skill name | Best for |
|---|---|---|
Standalone config (.claude/ dir) | /hello | Personal workflow, per-project customization |
Plugin (.claude-plugin/plugin.json) | /plugin-name:hello | Team sharing, community distribution, versioning |
For solo use, put things directly in
.claude/; to share with a team or community, make a plugin.
1.2 Building a Plugin
Directory structure
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Manifest (required)
├── commands/ # Slash commands
├── skills/ # Agent skills
│ └── code-review/
│ └── SKILL.md
├── agents/ # Custom agents
├── hooks/
│ └── hooks.json # Hook config
├── .mcp.json # MCP server config
└── settings.json # Default settings
Writing plugin.json
{
"name": "my-plugin",
"description": "Code review automation plugin",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
Only name is required; version is optional (if omitted, the git commit SHA is used). author is an object holding name/email/url, not a string. The name becomes the skill namespace, so this plugin’s skill is called as /my-plugin:code-review.
Adding a skill
skills/code-review/SKILL.md:
---
name: code-review
description: Check code quality and security
---
When reviewing code, check:
1. Code structure and readability
2. Error handling
3. Security vulnerabilities
4. Test coverage
Local testing
Before publishing to a marketplace, point at a local directory (or .zip) to test:
# Start Claude Code loading ./my-plugin as a temporary plugin
claude --plugin-dir ./my-plugin
# Test multiple plugins at once
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two
# Load from a remote .zip URL for this session only
claude --plugin-url https://example.com/my-plugin.zip
This starts a fresh Claude Code recognizing that folder as a plugin. It’s valid only for that session and disappears when it ends.
Things to test:
- The skill appears in the
/command list (/my-plugin:code-review) - Agents show up in
/agents - Hooks trigger on events
- MCP servers connect in
/mcp
While developing, edit a file and apply it without restarting via /reload-plugins.
1.3 Installing Plugins & Marketplaces
# Inside Claude Code
/plugin # Open the plugin manager (Discover / Installed / Marketplaces / Errors tabs)
Note: The canonical command is
/plugin(singular)./pluginsmay work in some environments, but the documented form is/plugin.
Choose an install scope:
| Scope | Description |
|---|---|
| Install for you | Use across all projects (user) |
| Install for this project | This project only, shared with team (project) |
| Install locally | This project only, just you (local) |
Marketplaces can be added from a GitHub repo (owner/repo), a Git URL, a local path, or a marketplace.json URL. There’s an official marketplace, and you can also build a team-only one.
1.4 Converting Existing Config to a Plugin
If you already have skills or hooks in .claude/, move them into the plugin structure:
mkdir -p my-plugin/.claude-plugin
# After creating plugin.json
cp -r .claude/commands my-plugin/
cp -r .claude/skills my-plugin/
cp -r .claude/agents my-plugin/
2. MCP — Connecting External Tools
MCP (Model Context Protocol) is an open standard protocol for connecting Claude Code to external tools. You can connect hundreds of tools: GitHub, Sentry, databases, Slack, and more.
flowchart LR
cc["Claude Code"]
subgraph servers["MCP servers"]
gh["GitHub"]
sentry["Sentry"]
db["DB (DBHub)"]
end
ext["External service APIs"]
cc <-->|MCP protocol| servers
servers <-->|each service API| ext
2.1 What You Can Do with MCP
With an MCP server connected, you can do things like:
Implement the feature described in JIRA ENG-4521 and open a GitHub PR
Check Sentry errors from the last 24 hours and analyze which deploy started them
Query this month's revenue data from PostgreSQL
2.2 Recommended MCP Servers
Useful MCP servers by category. Most install in one command. Endpoints can change, so verify against each service’s official docs before installing.
Development & code management
| Server | Transport | Install command |
|---|---|---|
| GitHub | HTTP | claude mcp add --transport http github https://api.githubcopilot.com/mcp/ |
| Sentry | HTTP | claude mcp add --transport http sentry https://mcp.sentry.dev/mcp |
| Context7 | stdio | claude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcp |
| Stripe | HTTP | claude mcp add --transport http stripe https://mcp.stripe.com |
Databases
| Server | Transport | Install command |
|---|---|---|
| Supabase | HTTP | claude mcp add --transport http supabase https://mcp.supabase.com/mcp |
| DBHub | stdio | claude mcp add --transport stdio db -- npx -y @bytebase/dbhub --dsn "connection-string" |
DBHub connects PostgreSQL, MySQL, MariaDB, SQL Server, and SQLite with a single DSN string. Use a read-only account.
DSN examples:
- PostgreSQL:
postgresql://user:pass@host:5432/db- MySQL:
mysql://user:pass@host:3306/db- SQL Server:
sqlserver://user:pass@host:1433/db- SQLite:
sqlite:///path/to/db.sqlite
Project management & communication
| Server | Transport | Install command |
|---|---|---|
| Notion | HTTP | claude mcp add --transport http notion https://mcp.notion.com/mcp |
| Linear | HTTP | claude mcp add --transport http linear https://mcp.linear.app/mcp |
| Atlassian | HTTP | claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp |
| Asana | SSE | claude mcp add --transport sse asana https://mcp.asana.com/sse |
| Slack | HTTP | claude mcp add --transport http slack https://mcp.slack.com/mcp |
Caution — transport: Asana currently uses an SSE endpoint. But SSE transport is deprecated, so prefer HTTP when a service offers it. Slack doesn’t support dynamic client registration and needs pre-issued OAuth credentials.
The full list is in the MCP server registry. Third-party MCP servers aren’t vetted by Anthropic, so install only trusted ones.
2.3 Installing MCP Servers
HTTP servers (recommended)
# Connect GitHub
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# With an auth header
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
stdio servers (local process)
# Connect PostgreSQL
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
--dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
# Connect Airtable (inject env var)
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
-- npx -y airtable-mcp-server
Managing servers
claude mcp list # List
claude mcp get github # Details
claude mcp remove github # Remove
/mcp # Status / auth inside Claude Code
2.4 MCP Install Scopes
| Scope | Storage | Use for |
|---|---|---|
| local (default) | ~/.claude.json | This project, just you |
| project | .mcp.json | Shared with team (Git) |
| user | ~/.claude.json | All projects |
# Install for team sharing
claude mcp add --transport http github --scope project \
https://api.githubcopilot.com/mcp/
Installing with --scope project creates a .mcp.json; commit it to Git and the whole team gets the same MCP servers. The default is local (just you, current project).
Note: MCP’s
localscope storage (~/.claude.json) and Claude Code’s general local settings file (.claude/settings.local.json) are different files. Don’t conflate them.
2.5 OAuth Authentication
Many cloud MCP servers require OAuth:
# Add the server
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# Authenticate inside Claude Code
/mcp
# Log in via the browser; it connects automatically
Tokens are stored securely and refreshed automatically.
2.6 Sharing Team Config via .mcp.json
Create .mcp.json at the project root and commit it to Git so the whole team shares the same MCP config. It supports env var substitution:
{
"mcpServers": {
"api-server": {
"type": "http",
"url": "${API_BASE_URL:-https://api.example.com}/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}
Use ${VAR:-default} for defaults, and keep sensitive values like API keys in environment variables.
2.7 Using Claude Code as an MCP Server
You can turn Claude Code itself into an MCP server:
claude mcp serve
Connect it to Claude Desktop to use Claude Code’s tools (file read, edit, etc.) from Claude Desktop:
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "claude",
"args": ["mcp", "serve"]
}
}
}
2.8 MCP Tool Search — Loading Tools On Demand
When you have many MCP servers, the tool definitions crowd the context window. Tool Search doesn’t load every tool upfront; it searches and loads them dynamically as needed, saving context and prompt cache.
On supported models (Sonnet 4+/Opus 4+), it’s on by default (all MCP tools loaded on demand). Tune behavior with the ENABLE_TOOL_SEARCH environment variable:
# Threshold mode: load upfront if tool descriptions fit within 10% of context, defer the overflow
ENABLE_TOOL_SEARCH=auto claude
# Set the threshold to 5%
ENABLE_TOOL_SEARCH=auto:5 claude
# Off (load all tools upfront)
ENABLE_TOOL_SEARCH=false claude
Caution — changed from before: It used to default to “auto-activate when tool descriptions exceed 10%,” but now the default is always-deferred.
autois an opt-in that re-enables the old threshold mode. You can mark specific serversalwaysLoadto always load them upfront.
3. IDE Integration — Working Inside Your Editor
Claude Code runs not only in the terminal but natively inside VS Code and JetBrains IDEs. You can talk to Claude without leaving your editor.
3.1 VS Code
Install
Requires VS Code 1.98.0+.
Cmd+Shift+Xto search extensions- Search “Claude Code” and Install
- Success when the Spark icon (✱) appears top-right in the editor
The dedicated panel (key change)
VS Code integration is no longer just a terminal launch — a dedicated graphical side panel is now the primary interface. Inside the panel:
- Session history: search/resume past conversations, and pick up claude.ai web sessions locally (Remote tab)
- Inline diff review: view changes side-by-side and accept/reject/request edits
- Plan mode: review the plan as a markdown document
- Checkpoint rewind: rewind / fork to a specific point
Core actions
- Select code → ask: select code and Claude recognizes it automatically.
Option+K(Mac) /Alt+Kinserts a@file.ts#5-10reference. - @-mention:
@auth.js explain this file's auth logic. Fuzzy matching, no full path needed. Use@terminalto reference terminal output. - Permission modes:
default(ask each time) /plan(after approval) /acceptEdits(auto-accept) /bypassPermissions. - Chrome integration: with the extension installed,
@browser go to localhost:3000 and check console errorsfor browser automation.
Shortcuts
| Command | Shortcut (Mac) | Description |
|---|---|---|
| Focus Input | Cmd+Esc | Toggle editor ↔ Claude |
| New Tab | Cmd+Shift+Esc | New conversation tab |
| Reopen Tab | Cmd+Shift+T | Reopen a closed session tab |
| @-Mention | Option+K | Insert a reference to the current file/selection |
Caution (macOS Tahoe and later):
Cmd+Escmay conflict with the system Game Overlay shortcut and not work. Disable it in System Settings → Keyboard → Game Controllers.
3.2 JetBrains IDEs
Works in most JetBrains IDEs: IntelliJ IDEA, PyCharm, WebStorm, GoLand, PhpStorm, Android Studio, etc.
Install
- Install the Claude Code plugin from the JetBrains Marketplace (currently Beta)
- Restart the IDE
Usage
# In the IDE's built-in terminal
claude # Auto-connects to the IDE
# In an external terminal
claude
/ide # Connect to the IDE
Key features
| Feature | Description |
|---|---|
| Diff viewer | Show code changes in the IDE’s diff viewer |
| Selection context | Selected code is auto-shared with Claude |
| File reference | Cmd+Option+K (Mac) / Alt+Ctrl+K inserts @File#L1-99 |
| Diagnostics sharing | IDE lint/syntax errors are auto-forwarded |
| Quick launch | Cmd+Esc (Mac) / Ctrl+Esc opens Claude Code |
Configure under Settings → Tools → Claude Code [Beta]. If ESC doesn’t interrupt, uncheck “Move focus to the editor with Escape” in Settings → Tools → Terminal.
3.3 Claude Code on the Web — No Install, In the Browser
With no install, connect a GitHub repo at claude.ai/code and spin up a Claude Code session right away (research preview; Pro/Max/Team/Enterprise). It runs on Anthropic-managed cloud infrastructure:
- Sessions keep running even when you close the browser
- Monitor progress from the Claude mobile app
- Includes automatic GitHub PR fixes
- Resume web sessions locally from the Remote tab in VS Code session history
Recap
If Part 1 strengthened Claude Code from the inside, Part 2 extends it outward:
| Feature | Core |
|---|---|
| Plugins | Bundle skills/agents/hooks/MCP to share with the team |
| MCP | Connect external tools like GitHub/Sentry/DB (HTTP/stdio) |
| Tool Search | Load tools on demand to save context (on by default) |
| IDE integration | VS Code panel, JetBrains plugin, web version |
Part 3 covers sub-agents and agent teams — how to split complex work across multiple agents and process it in parallel.
Appendix
A. Glossary
| Term | Description |
|---|---|
| Plugin | A distribution unit bundling skills/agents/hooks/MCP (.claude-plugin/plugin.json) |
| Marketplace | A repository to discover/install plugins (GitHub/URL/local) |
| MCP | Model Context Protocol. The standard for connecting external tools |
| HTTP transport | Connection style for remote cloud MCP servers (recommended) |
| stdio transport | Connection style for a local MCP process on your machine |
| SSE transport | The older remote connection style (deprecated, prefer HTTP) |
| Tool Search | Searching/loading MCP tools on demand instead of upfront |
B. Command cheat sheet
# Plugins
/plugin # Manager (Discover/Installed/Marketplaces/Errors)
claude --plugin-dir ./plugin # Test a local plugin
/reload-plugins # Hot-reload during development
# MCP
claude mcp add --transport http <name> <url> # Add an HTTP server
claude mcp add --transport stdio <name> -- <cmd> # Add a local server
claude mcp add ... --scope project # Team-shared (.mcp.json)
claude mcp list / get <name> / remove <name>
claude mcp serve # Claude Code as an MCP server
/mcp # Status / OAuth auth
# IDE
/ide # Connect to the IDE from an external terminal