Getting More Out of Claude Code (2) — Plugins, MCP, and IDE Integration

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:

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

ApproachSkill nameBest for
Standalone config (.claude/ dir)/helloPersonal workflow, per-project customization
Plugin (.claude-plugin/plugin.json)/plugin-name:helloTeam 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). /plugins may work in some environments, but the documented form is /plugin.

Choose an install scope:

ScopeDescription
Install for youUse across all projects (user)
Install for this projectThis project only, shared with team (project)
Install locallyThis 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

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

ServerTransportInstall command
GitHubHTTPclaude mcp add --transport http github https://api.githubcopilot.com/mcp/
SentryHTTPclaude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Context7stdioclaude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcp
StripeHTTPclaude mcp add --transport http stripe https://mcp.stripe.com

Databases

ServerTransportInstall command
SupabaseHTTPclaude mcp add --transport http supabase https://mcp.supabase.com/mcp
DBHubstdioclaude 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

ServerTransportInstall command
NotionHTTPclaude mcp add --transport http notion https://mcp.notion.com/mcp
LinearHTTPclaude mcp add --transport http linear https://mcp.linear.app/mcp
AtlassianHTTPclaude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp
AsanaSSEclaude mcp add --transport sse asana https://mcp.asana.com/sse
SlackHTTPclaude 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

# 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

ScopeStorageUse for
local (default)~/.claude.jsonThis project, just you
project.mcp.jsonShared with team (Git)
user~/.claude.jsonAll 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 local scope 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. auto is an opt-in that re-enables the old threshold mode. You can mark specific servers alwaysLoad to 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+.

  1. Cmd+Shift+X to search extensions
  2. Search “Claude Code” and Install
  3. 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+K inserts a @file.ts#5-10 reference.
  • @-mention: @auth.js explain this file's auth logic. Fuzzy matching, no full path needed. Use @terminal to 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 errors for browser automation.

Shortcuts

CommandShortcut (Mac)Description
Focus InputCmd+EscToggle editor ↔ Claude
New TabCmd+Shift+EscNew conversation tab
Reopen TabCmd+Shift+TReopen a closed session tab
@-MentionOption+KInsert a reference to the current file/selection

Caution (macOS Tahoe and later): Cmd+Esc may 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

  1. Install the Claude Code plugin from the JetBrains Marketplace (currently Beta)
  2. 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

FeatureDescription
Diff viewerShow code changes in the IDE’s diff viewer
Selection contextSelected code is auto-shared with Claude
File referenceCmd+Option+K (Mac) / Alt+Ctrl+K inserts @File#L1-99
Diagnostics sharingIDE lint/syntax errors are auto-forwarded
Quick launchCmd+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:

FeatureCore
PluginsBundle skills/agents/hooks/MCP to share with the team
MCPConnect external tools like GitHub/Sentry/DB (HTTP/stdio)
Tool SearchLoad tools on demand to save context (on by default)
IDE integrationVS 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

TermDescription
PluginA distribution unit bundling skills/agents/hooks/MCP (.claude-plugin/plugin.json)
MarketplaceA repository to discover/install plugins (GitHub/URL/local)
MCPModel Context Protocol. The standard for connecting external tools
HTTP transportConnection style for remote cloud MCP servers (recommended)
stdio transportConnection style for a local MCP process on your machine
SSE transportThe older remote connection style (deprecated, prefer HTTP)
Tool SearchSearching/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

C. References

Shop on Amazon

As an Amazon Associate, I earn from qualifying purchases.