From 559f70eef01d370be285d836e794276339cc9987 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 10 Jun 2026 00:24:06 -0400 Subject: [PATCH] fix(plugin): inline mcpServers in plugin.json so the MCP server actually loads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /reload-plugins reported '0 plugin MCP servers'. Root cause: plugin.json had "mcpServers": "./.mcp.json" — a string path, which is neither a valid inline object nor a recognized reference (per docs, plugin MCP servers are a root .mcp.json OR an inline object in plugin.json), so it parsed to zero servers. Inline the mcpServers object directly in plugin.json and remove the separate .mcp.json. The user_config substitution syntax was already correct (plugins-reference: values substitute as ${user_config.KEY} in MCP configs). Co-Authored-By: Claude Opus 4.8 (1M context) --- plugin/.claude-plugin/plugin.json | 8 +++++++- plugin/README.md | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugin/.claude-plugin/plugin.json b/plugin/.claude-plugin/plugin.json index f5afc61..9615574 100644 --- a/plugin/.claude-plugin/plugin.json +++ b/plugin/.claude-plugin/plugin.json @@ -3,7 +3,13 @@ "description": "Scribe second brain for Claude Code: MCP tools over your notes/tasks/projects/rules, a session-start push channel that surfaces your always-on rules + active-project context, and a set of universal process-skills (brainstorm, debug, TDD, plan, verify). Replaces superpowers + file-memory with one app-backed plugin.", "version": "0.1.0", "author": { "name": "Bryan Van Deusen" }, - "mcpServers": "./.mcp.json", + "mcpServers": { + "scribe": { + "type": "http", + "url": "${user_config.api_endpoint}/mcp", + "headers": { "Authorization": "Bearer ${user_config.api_token}" } + } + }, "userConfig": { "api_endpoint": { "type": "string", diff --git a/plugin/README.md b/plugin/README.md index 77d6104..8b3ed7c 100644 --- a/plugin/README.md +++ b/plugin/README.md @@ -33,7 +33,7 @@ On install you'll be asked for: ## What gets wired -- `.mcp.json` → the `scribe` MCP server at `/mcp` (Bearer auth). +- `plugin.json` `mcpServers` → the `scribe` MCP server at `/mcp` (Bearer auth). - `hooks/hooks.json` → SessionStart hook (`hooks/scribe_session_context.sh`), **fail-open**: if Scribe is unreachable it injects nothing and never blocks the session.