Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions .claude/commands/commit.md

This file was deleted.

26 changes: 26 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
build-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: pnpm/action-setup@v4

- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm

- run: pnpm install --frozen-lockfile

- run: pnpm run build

- run: pnpm test
8 changes: 8 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"claude-plugins": {
"command": "node",
"args": ["dist/index.js"]
}
}
}
85 changes: 81 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ Other commands:

```bash
pnpm run build # Compile TypeScript (only needed if modifying src/)
pnpm run start # Run the compiled MCP server
pnpm run start # Run the compiled MCP server (stdio)
pnpm run serve # Start HTTP server on port 3000
```

If you are only adding or editing plugins (not modifying the MCP server source in `src/`), you do not need to run `pnpm run build`.
Expand All @@ -60,10 +61,9 @@ If you are only adding or editing plugins (not modifying the MCP server source i

These slash commands are available when working in this repo with Claude Code:

| Command | Purpose |
|---------|---------|
| Command | Purpose |
|------------------|--------------------------------------------------------------------------|
| `/update-readme` | Regenerate the Current Plugins table in the README from plugin manifests |
| `/commit` | Stage changes and create a commit with a conventional commit message |

## Current Plugins

Expand All @@ -73,6 +73,83 @@ These slash commands are available when working in this repo with Claude Code:
| `kotlin-expert` | Agent | Kotlin 2.0+, coroutines, Spring Boot, domain modeling |
| `react-expert` | Agent | React 19+, concurrent rendering, Tailwind, accessibility |

## MCP Server Integration

This repository doubles as an MCP server for plugin discovery. Any agentic tooling that supports the [Model Context Protocol](https://modelcontextprotocol.io) can connect to it and programmatically list, search, and retrieve plugins — including their full markdown content.

### Available Tools

| Tool | Description | Parameters |
|------------------|--------------------------------------------------------------|------------------------------------------------------------|
| `list_plugins` | List all plugins with optional filters | `type?` (`skill`, `agent`, `prompt`), `tag?` (string) |
| `get_plugin` | Get a plugin's full details or a single component's markdown | `name` (string), `component?` (`skill`, `agent`, `prompt`) |
| `search_plugins` | Full-text search across name, description, and tags | `query` (string), `type?` (`skill`, `agent`, `prompt`) |

### Connect from Claude Code Locally

Add the server to your project's `.mcp.json` (or `~/.claude/claude_mcp_settings.json` for global access):

```json
{
"mcpServers": {
"claude-plugins": {
"command": "node",
"args": ["/path/to/claude-plugins/dist/index.js"]
}
}
}
```

Then in any Claude Code session the three tools above become available automatically.

### Connect from other MCP clients

The server supports both **stdio** and **HTTP** transports.

**stdio** (default) — for local MCP clients:

```bash
node /path/to/claude-plugins/dist/index.js
```

Or in dev mode (no build step required):

```bash
npx tsx /path/to/claude-plugins/src/index.ts
```

**HTTP** — for remote access (defaults to port 3000):

```bash
pnpm run serve # port 3000 (all platforms)

# Custom port:
# macOS/Linux (bash, zsh, etc.):
PORT=8080 pnpm run serve

# Windows PowerShell:
$env:PORT=8080; pnpm run serve

# Windows cmd.exe:
set PORT=8080&& pnpm run serve
```

This starts an HTTP server with the MCP Streamable HTTP transport at `POST /mcp`. Clients can connect using any MCP-compatible HTTP client:

```bash
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'
```

### Example workflow

A typical agentic integration pattern:

1. Call `list_plugins` or `search_plugins` to discover relevant plugins
2. Call `get_plugin` with `component: "agent"` to retrieve the full markdown prompt
3. Use the returned markdown as a system prompt, agent instruction, or context injection

## Contributing

### Adding a Plugin
Expand Down
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
{
"name": "claude-plugins",
"packageManager": "pnpm@10.6.2",
"version": "1.0.0",
"type": "module",
"main": "dist/index.js",
"scripts": {
"build": "tsc",
"start": "node dist/index.js",
"dev": "tsx src/index.ts"
"dev": "tsx src/index.ts",
"serve": "PORT=3000 node dist/index.js",
"test": "vitest run"
Comment thread
Mgrdich marked this conversation as resolved.
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.12.1",
Expand All @@ -16,6 +19,7 @@
"devDependencies": {
"@types/node": "^25.2.3",
"tsx": "^4.19.3",
"typescript": "^5.7.3"
"typescript": "^5.7.3",
"vitest": "^4.0.18"
}
}
Loading