Orchestra MCP Marketplace plugin — Extension discovery and installation system with a centralized registry, event-driven architecture, and MCP tools for browsing, searching, and managing extensions.
- Extension Registry — Centralized registry of available and installed extensions with metadata (name, version, author, category, ratings, reviews)
- Search & Browse — Search extensions by name, description, or tags; browse by category
- Installation Management — Install, uninstall, and update extensions with version control
-
3 Events —
ExtensionInstalled,ExtensionUninstalled,ExtensionUpdated -
Plugin Integration — Plugins implement
Marketableto expose marketplace metadata - 5 MCP Tools — Browse, search, install, uninstall, and get extension info
- 4 Artisan Commands — Status, search, install, and uninstall via CLI
composer require orchestra-mcp/marketplaceThe service provider is auto-discovered. Then publish the marketplace config:
php artisan vendor:publish --tag=orchestra-marketplace-configuse OrchestraMcp\Marketplace\Data\ExtensionDefinition;
use OrchestraMcp\Marketplace\Facades\Marketplace;
Marketplace::register(new ExtensionDefinition(
id: 'my-extension',
name: 'My Extension',
description: 'A powerful extension for Orchestra',
version: '1.0.0',
author: 'John Doe',
category: 'Productivity',
));// Browse all extensions
$all = Marketplace::browse();
// Browse by category
$themes = Marketplace::browse('Themes');$results = Marketplace::search('theme');
foreach ($results as $extension) {
echo "{$extension->name} - {$extension->description}\n";
}// Install latest version
Marketplace::install('dracula-theme');
// Install specific version
Marketplace::install('code-snippets', '1.5.0');Marketplace::uninstall('dracula-theme');if (Marketplace::isInstalled('dracula-theme')) {
$version = Marketplace::installedVersion('dracula-theme');
echo "Installed version: {$version}";
}| Tool | Annotation | Description |
|---|---|---|
marketplace-browse |
#[IsReadOnly] |
Browse available extensions, optionally filtered by category |
marketplace-search |
#[IsReadOnly] |
Search for extensions by name, description, or tags |
marketplace-install |
#[IsIdempotent] |
Install an extension from the marketplace |
marketplace-uninstall |
#[IsIdempotent] |
Uninstall an installed extension |
marketplace-info |
#[IsReadOnly] |
Get detailed information about an extension |
| Command | Description |
|---|---|
marketplace:status |
Show service status, API URL, available/installed extension counts |
marketplace:search {query} |
Search for extensions by name, description, or tags |
marketplace:install {extension} [--version=] |
Install an extension (optionally specify version) |
marketplace:uninstall {extension} |
Uninstall an installed extension |
Publish the config:
php artisan vendor:publish --tag=orchestra-marketplace-config| Key | Default | Env Variable | Description |
|---|---|---|---|
enabled |
true |
ORCHESTRA_MARKETPLACE_ENABLED |
Enable/disable marketplace plugin |
api_url |
'https://marketplace.orchestra.dev/api' |
ORCHESTRA_MARKETPLACE_API_URL |
Marketplace API base URL |
extensions_path |
'packages/orchestra-mcp' |
ORCHESTRA_MARKETPLACE_EXTENSIONS_PATH |
Extensions installation directory |
auto_update |
false |
ORCHESTRA_MARKETPLACE_AUTO_UPDATE |
Auto-update installed extensions |
cache_ttl |
3600 |
ORCHESTRA_MARKETPLACE_CACHE_TTL |
API response cache TTL (seconds) |
marketplace |
false |
— | Marketplace visibility (system setting) |
Full documentation is available in the docs/ directory:
- Getting Started — Installation, configuration
- Architecture — Service design, registry, plugin integration
- Data — ExtensionDefinition, ExtensionVersion, ExtensionReview DTOs
- Events — Event reference
- Tools — MCP tool reference
- Commands — Artisan command reference
- Configuration — Full config key reference
- API Reference — Facades, services, registry
# Install dependencies
composer install
# Run tests
composer test
# Format code
composer format
# Static analysis
composer check
# Lint
composer lintMIT



