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
37 changes: 37 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "ableton-mind",
"owner": {
"name": "Pantani"
},
"description": "Claude Code plugin marketplace for Ableton Mind.",
"version": "0.1.1",
"plugins": [
{
"name": "ableton-mind",
"displayName": "Ableton Mind",
"source": "./plugins/ableton-mind",
"description": "Control Ableton Live from Claude Code through the Ableton Mind MCP server.",
"version": "0.1.1",
"author": {
"name": "Pantani"
},
"homepage": "https://pantani.github.io/ableton-mind/",
"repository": "https://github.com/Pantani/ableton-mind",
"license": "MIT",
"keywords": [
"mcp",
"ableton",
"ableton-live",
"music",
"claude-code"
],
"category": "creative-tools",
"tags": [
"mcp",
"ableton",
"music-production",
"claude-code"
]
}
]
}
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ All notable changes go here. Format: [Keep a Changelog](https://keepachangelog.c
- Harness extension for the local-copilot track plus `_workspace/tdmcp-compatible-features.md`, mapping portable `tdmcp` features to Ableton Mind priorities.
- Phase 8 slice 1: read-only `device_inspect_patcher`, `device_inspect_plugin`, and `session_link_status` MCP tools backed by `device.inspect_patcher`, `device.inspect_plugin`, and `session.link_status` bridge methods.
- Compact Phase 8 discovery metadata (`src/knowledge/discovery.json`) for plug-in formats, M4L capability labels, and Link status fields.
- Claude Code plugin marketplace catalog plus an `ableton-mind` plugin wrapper that starts the published npm MCP server through `npx`.

### Changed

- Clarified status docs for Phase 8: slice 1 is read-only Max for Live/plug-in introspection and Link/remote status discovery only; broader M4L/VST3/remote DAW/mobile work remains pending.
- Clarified Glama distribution docs: a Glama listing is not a Glama release, and the hosted release requires the Glama admin Deploy -> Make Release flow.
- Extended the version-sync release helper to keep Claude Code marketplace/plugin manifests pinned to the package version.

## [0.1.1] — 2026-06-10 — Release closure

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ Checks Node version, Remote Script install, bridge port, knowledge base integrit
## Distribution

- **npm:** `npm install -g ableton-mind`.
- **Claude Code plugin marketplace:** `claude plugin marketplace add Pantani/ableton-mind`, then `claude plugin install ableton-mind@ableton-mind`.
- **Claude Desktop one-click:** download `ableton-mind-0.1.1.mcpb` from the [v0.1.1 GitHub Release](https://github.com/Pantani/ableton-mind/releases/tag/v0.1.1).
- **MCP Registry:** `io.github.Pantani/ableton-mind` is active in the official registry.
- **Glama:** listed at [glama.ai/mcp/servers/Pantani/ableton-mind](https://glama.ai/mcp/servers/Pantani/ableton-mind); hosted release is separate from the GitHub Release and still requires the Glama admin deploy + Make Release flow.
Expand Down
23 changes: 23 additions & 0 deletions docs/distribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,29 @@ The bundle installs and runs the Node MCP server. It also includes the Remote Sc

Live -> Preferences -> Link/Tempo/MIDI -> Control Surface -> AbletonMind.

## Claude Code plugin marketplace

The Claude Code marketplace catalog lives at `.claude-plugin/marketplace.json`.
It lists a lightweight `ableton-mind` plugin in `plugins/ableton-mind/` that
starts the published npm MCP server with `npx -y ableton-mind@0.1.1`.

Validate the catalog before sharing:

```bash
claude plugin validate .
```

Add the GitHub-hosted marketplace and install the plugin:

```bash
claude plugin marketplace add Pantani/ableton-mind
claude plugin install ableton-mind@ableton-mind
```

The plugin starts the Node MCP server only. Users still need to install the
Remote Script and activate `AbletonMind` in Live preferences before the MCP
tools can control Ableton Live.

## MCP Registry

`server.json` is the MCP Registry manifest. It uses `mcpName`/server name:
Expand Down
17 changes: 13 additions & 4 deletions docs/guide/installation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation

The fastest install paths are now **npm global** or the GitHub Release `.mcpb`. Use source install when developing the repo or testing local changes.
The fastest install paths are now **npm global**, the GitHub Release `.mcpb`, or the Claude Code plugin marketplace. Use source install when developing the repo or testing local changes.

## 1. Source install

Expand Down Expand Up @@ -45,7 +45,16 @@ npm run build:dxt

Drag the generated `.mcpb` into Claude Desktop.

## 4. npm global
## 4. Claude Code plugin marketplace

```bash
claude plugin marketplace add Pantani/ableton-mind
claude plugin install ableton-mind@ableton-mind
```

The plugin starts `npx -y ableton-mind@0.1.1`. Install and activate the Remote Script in Live before using the MCP tools.

## 5. npm global

```bash
npm install -g ableton-mind
Expand All @@ -55,7 +64,7 @@ ableton-mind-doctor

Current registry status: `ableton-mind@0.1.1` is published on npm.

## 5. Docker
## 6. Docker

Build locally:

Expand All @@ -72,7 +81,7 @@ docker run --rm -it \
ableton-mind
```

## 6. Smithery
## 7. Smithery

`smithery.yaml` is present for the listing path. Hosted Smithery indexing can lag the repository metadata.

Expand Down
23 changes: 23 additions & 0 deletions docs/pt/distribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,29 @@ O bundle instala e roda o MCP server Node. Ele tambem inclui os arquivos do Remo

Live -> Preferences -> Link/Tempo/MIDI -> Control Surface -> AbletonMind.

## Claude Code plugin marketplace

O catalogo do marketplace do Claude Code fica em `.claude-plugin/marketplace.json`.
Ele lista um plugin leve `ableton-mind` em `plugins/ableton-mind/`, que inicia
o MCP server publicado no npm com `npx -y ableton-mind@0.1.1`.

Valide o catalogo antes de compartilhar:

```bash
claude plugin validate .
```

Adicione o marketplace hospedado no GitHub e instale o plugin:

```bash
claude plugin marketplace add Pantani/ableton-mind
claude plugin install ableton-mind@ableton-mind
```

O plugin inicia apenas o MCP server Node. O usuario ainda precisa instalar o
Remote Script e ativar `AbletonMind` nas preferencias do Live antes das tools
MCP conseguirem controlar o Ableton Live.

## MCP Registry

`server.json` e o manifesto do MCP Registry. Ele usa o nome:
Expand Down
17 changes: 13 additions & 4 deletions docs/pt/guide/installation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Instalação

Os caminhos mais rapidos agora sao **npm global** ou o `.mcpb` da GitHub Release. Use instalacao via source para desenvolver o repo ou testar mudancas locais.
Os caminhos mais rapidos agora sao **npm global**, o `.mcpb` da GitHub Release ou o marketplace de plugin do Claude Code. Use instalacao via source para desenvolver o repo ou testar mudancas locais.

## 1. Instalacao via source

Expand Down Expand Up @@ -45,7 +45,16 @@ npm run build:dxt

Arraste o `.mcpb` gerado para o Claude Desktop.

## 4. npm global
## 4. Claude Code plugin marketplace

```bash
claude plugin marketplace add Pantani/ableton-mind
claude plugin install ableton-mind@ableton-mind
```

O plugin inicia `npx -y ableton-mind@0.1.1`. Instale e ative o Remote Script no Live antes de usar as tools MCP.

## 5. npm global

```bash
npm install -g ableton-mind
Expand All @@ -55,7 +64,7 @@ ableton-mind-doctor

Estado atual do registry: `ableton-mind@0.1.1` esta publicado no npm.

## 5. Docker
## 6. Docker

Build local:

Expand All @@ -74,7 +83,7 @@ docker run --rm -it \

Util para CI e sandboxes; para uso interativo no desktop, source ou `.mcpb` tendem a ser mais simples.

## 6. Smithery
## 7. Smithery

`smithery.yaml` existe para o caminho de listagem. A indexacao hospedada da Smithery pode atrasar em relacao ao metadata do repo.

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs",
"version": "node scripts/sync-manifest-version.mjs && git add dxt/manifest.json server.json safeskill.manifest.json",
"version": "node scripts/sync-manifest-version.mjs && git add dxt/manifest.json server.json safeskill.manifest.json .claude-plugin/marketplace.json plugins/ableton-mind/.claude-plugin/plugin.json",
"prepublishOnly": "npm run typecheck && npm run lint && npm run test && npm run test:bridge && npm run docs:build && npm run build && npm run build:dxt:check && npm audit --omit=dev"
},
"dependencies": {
Expand Down
28 changes: 28 additions & 0 deletions plugins/ableton-mind/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "ableton-mind",
"displayName": "Ableton Mind",
"version": "0.1.1",
"description": "Control Ableton Live from Claude Code through the Ableton Mind MCP server.",
"author": {
"name": "Pantani"
},
"homepage": "https://pantani.github.io/ableton-mind/",
"repository": "https://github.com/Pantani/ableton-mind",
"license": "MIT",
"keywords": [
"mcp",
"ableton",
"ableton-live",
"music",
"claude-code"
],
"mcpServers": {
"ableton-mind": {
"command": "npx",
"args": [
"-y",
"ableton-mind@0.1.1"
]
}
}
}
17 changes: 17 additions & 0 deletions plugins/ableton-mind/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Ableton Mind Claude Code plugin

This plugin installs the Ableton Mind MCP server into Claude Code through the
Ableton Mind marketplace.

It starts the published npm package with:

```bash
npx -y ableton-mind@0.1.1
```

The npm server defaults to `127.0.0.1:9876` and `info` logging. Set
`ABLETON_MIND_HOST`, `ABLETON_MIND_PORT`, or `ABLETON_MIND_LOG_LEVEL` in the
Claude Code environment only when you need to override those defaults.

The Ableton Live Remote Script still needs to be installed and enabled in Live.
See the main repository README and distribution docs for setup details.
23 changes: 23 additions & 0 deletions scripts/sync-manifest-version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
// - dxt/manifest.json
// - server.json (top-level + packages[].version)
// - safeskill.manifest.json
// - .claude-plugin/marketplace.json
// - plugins/ableton-mind/.claude-plugin/plugin.json
//
// Invoked by the npm `version` lifecycle (see package.json), so `npm version
// patch` rewrites the satellite manifests before tagging.
Expand Down Expand Up @@ -41,3 +43,24 @@ patch("server.json", (m) => {
patch("safeskill.manifest.json", (m) => {
m.version = version;
});
patch(".claude-plugin/marketplace.json", (m) => {
m.version = version;
if (Array.isArray(m.plugins)) {
for (const plugin of m.plugins) {
if (plugin?.name === "ableton-mind") {
plugin.version = version;
}
}
}
});
patch("plugins/ableton-mind/.claude-plugin/plugin.json", (m) => {
m.version = version;
const server = m.mcpServers?.["ableton-mind"];
if (server && Array.isArray(server.args)) {
server.args = server.args.map((arg) =>
typeof arg === "string" && arg.startsWith("ableton-mind@")
? `ableton-mind@${version}`
: arg,
);
}
});
37 changes: 37 additions & 0 deletions tests/distribution-validation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,43 @@ describe("Dockerfile + smithery.yaml + .npmignore", () => {
});
});

describe("Claude Code plugin marketplace", () => {
it("has a marketplace catalog pointing to the bundled plugin wrapper", () => {
const marketplace = JSON.parse(read(".claude-plugin/marketplace.json")) as {
name: string;
owner?: { name?: string };
plugins?: Array<{ name: string; source: string; version?: string }>;
version?: string;
};
const pkg = JSON.parse(read("package.json")) as { version: string };
const plugin = marketplace.plugins?.find((entry) => entry.name === "ableton-mind");

expect(marketplace.name).toBe("ableton-mind");
expect(marketplace.owner?.name).toBe("Pantani");
expect(marketplace.version).toBe(pkg.version);
expect(plugin?.source).toBe("./plugins/ableton-mind");
expect(plugin?.version).toBe(pkg.version);
expect(existsSync(join(REPO_ROOT, "plugins/ableton-mind/.claude-plugin/plugin.json"))).toBe(
true,
);
});

it("starts the published npm MCP server without install-time userConfig prompts", () => {
const plugin = JSON.parse(read("plugins/ableton-mind/.claude-plugin/plugin.json")) as {
version?: string;
userConfig?: unknown;
mcpServers?: Record<string, { command?: string; args?: string[] }>;
};
const pkg = JSON.parse(read("package.json")) as { version: string };
const server = plugin.mcpServers?.["ableton-mind"];

expect(plugin.version).toBe(pkg.version);
expect(plugin.userConfig).toBeUndefined();
expect(server?.command).toBe("npx");
expect(server?.args).toEqual(["-y", `ableton-mind@${pkg.version}`]);
});
});

describe("hosted catalog release docs", () => {
it("documents Glama release as separate from GitHub release", () => {
const readme = read("README.md");
Expand Down
Loading