Skip to main content
Glama

cc-plugin-mcp

MCP (Model Context Protocol) server for accessing Claude Code plugins.

Overview

This MCP server provides an interface to Claude Code's plugin system via the Model Context Protocol, enabling you to retrieve plugin lists and detailed information. It can be used from MCP clients such as Claude Desktop, Cursor, etc.

Related MCP server: claudecode-mcp

Key Features

  • MCP Protocol Support: Compliant with Model Context Protocol

  • Plugin Management: Retrieve plugin lists and load elements from Claude Code plugins

  • Security: Path traversal protection, input validation, error handling

  • Performance: LRU cache for fast access

  • Operability: Comprehensive logging, 29 test cases

MCP Tools

  • list_plugins - Get a list of available plugins

  • load_elements - Load elements (skills, agents, commands) from specified plugins

Configuration

Add the following to your MCP client configuration file (e.g., claude_desktop_config.json for Claude Desktop):

{
  "mcpServers": {
    "cc-plugin-mcp": {
      "command": "uvx",
      "args": ["cc-plugin-mcp"]
    }
  }
}

Installation

# Run directly with uvx (recommended)
uvx cc-plugin-mcp

# Or install from PyPI
pip install cc-plugin-mcp

# For development
git clone https://github.com/ppspps824/cc-plugin-mcp.git
cd cc-plugin-mcp
uv sync --all-extras

Usage

This runs as an MCP server and is called directly by MCP clients. For manual testing:

# Start MCP server with uvx (recommended)
uvx cc-plugin-mcp

# Or for development
uv run python -m cc_plugin_mcp.main

MCP Integration with AI Tools

For optimal use of this MCP server with AI tools like Cursor, Claude Desktop, or other MCP-compatible clients:

With Cursor

  1. Add the MCP server to your Cursor settings (.cursor/settings.json or similar)

  2. Include the configuration shown in the Configuration section above

  3. Important: Make sure to load the MCP server tools in your system prompt or initial message. Tell the AI to use the available MCP tools by instructing it to first call the MCP tools list to discover what's available.

With Claude Desktop

  1. Add the configuration to claude_desktop_config.json as shown in the Configuration section

  2. Restart Claude Desktop to enable the MCP server

  3. The MCP tools will be automatically available for Claude to use

Best Practices for Using MCP Tools

  • Load the tools first: Always instruct the AI to first call the available MCP tools to discover what's available

  • Check the system prompt: Ensure your system prompt or initial instructions include guidance to use MCP tools

  • Discover capabilities: Use the tools to explore available plugins and their elements before requesting specific functionality

Testing

# Run tests
uv run pytest

# With coverage
uv run pytest --cov=cc_plugin_mcp

Troubleshooting

Plugins not found

  1. Check if ~/.claude/plugins/ directory exists

  2. Verify marketplace.json exists in ~/.claude/plugins/marketplaces/

MCP client doesn't recognize the server

  1. Verify MCP client configuration file is set up correctly

  2. Check if uvx command is available (uvx --version)

  3. Check MCP client logs for error messages

Tests failing

uv sync --all-extras --refresh
uv run pytest -v

License

MIT

Repository

https://github.com/ppspps824/cc-plugin-mcp

Available Tools

2 tools
list_pluginsA

Get list of all available plugins from marketplaces.

Returns: List of plugins with name, description, and categorized elements (agents, commands, skills).

Raises: HTTPException: If plugins cannot be read.

Responses:

  • 200 (Success): Successful Response

    • Content-Type: application/json

    • Example:

[
  "unknown_type"
]
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions raising HTTPException on failure, but lacks details on authentication, rate limits, idempotency, or potential side effects, leaving significant gaps for a safe operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise with structured sections for returns and raises. However, the example response includes an odd value 'unknown_type' which may cause confusion, slightly reducing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description adequately covers return values. It could mention potential pagination or filtering, but for a simple list tool it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the baseline is 4. The description does not need to add parameter meaning beyond the schema, and it correctly notes no parameters are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets a list of all available plugins from marketplaces, with a specific verb and resource. It mentions the return structure (name, description, categorized elements), distinguishing it from the sibling tool 'load_elements' which likely deals with loading elements rather than listing plugins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites or exclusions provided. The description does not help an agent decide between this and the sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_elementsC

Load plugin elements (skills, agents, commands) with their content.

Args: plugin_name: Name of the plugin. request: Request body with elements to load.

Returns: Response with loaded element contents.

Raises: HTTPException: If plugin is not found or elements cannot be read.

Path Parameters:

  • plugin_name (Required): No description.

Responses:

  • 200 (Success): Successful Response

    • Content-Type: application/json

    • Response Properties:

      • plugin_name: プラグイン名

      • elements: 読み込まれた要素のリスト

    • Example:

{
  "plugin_name": "string",
  "elements": [
    "unknown_type"
  ]
}
  • 422: Validation Error

    • Content-Type: application/json

    • Response Properties:

    • Example:

{
  "detail": [
    "unknown_type"
  ]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
plugin_nameYes
elementsYes読み込む要素のリスト

Output Schema

ParametersJSON Schema
NameRequiredDescription
plugin_nameYesプラグイン名
elementsYes読み込まれた要素のリスト

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry full burden. It mentions possible HTTP exceptions (plugin not found, elements cannot be read) but does not disclose side effects, permissions, or whether the operation is destructive. The response example is vague and doesn't clarify the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is structured into sections (Args, Returns, Raises, Path Parameters, Responses) which aids readability. However, it is somewhat verbose and includes redundant information (e.g., 'Path Parameters' repeats plugin_name already in input schema). The use of Japanese in descriptions may reduce clarity for English-speaking agents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (2 parameters, no annotations), the description is incomplete. It does not clarify whether the tool is read-only or mutating, nor does it explain the relationship between path parameters and request body. The sibling tool list_plugins provides minimal context. The response example is vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (plugin_name lacks description in schema). The description adds minimal: it mentions 'request: Request body with elements to load' but does not elaborate on plugin_name's role. The elements parameter is described in the schema (in Japanese) and the description adds little beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it loads plugin elements (skills, agents, commands) with their content, which is specific. It differentiates from the sibling tool list_plugins which likely only lists plugins. However, 'load' is somewhat ambiguous (could mean retrieve content or load into memory).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The sibling tool list_plugins is mentioned but no comparison. The description does not state prerequisites or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.5
    • First observedlist_plugins
    • First observedload_elements

TDQS

B3.2/5.0
Disambiguation5/5

list_plugins and load_elements have clearly distinct purposes: one for browsing all plugins, the other for retrieving detailed elements of a specific plugin. No overlap or confusion possible.

Naming Consistency5/5

Both tool names follow the consistent verb_noun pattern in snake_case (list_plugins, load_elements), making them predictable and readable.

Tool Count3/5

With only 2 tools, the server feels thin for a plugin management system. However, the tools are well-scoped to listing and loading, so it is borderline acceptable.

Completeness2/5

The tool set covers only read operations (list and load). Missing create, update, delete, or search functionality, which are significant gaps for managing plugins.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ppspps824/cc-plugin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server