diff --git a/.github/release-notes-template.md b/.github/release-notes-template.md new file mode 100644 index 0000000..8d27503 --- /dev/null +++ b/.github/release-notes-template.md @@ -0,0 +1,24 @@ +# Bindery {{VERSION}} + +## Highlights + +- Standardized release packaging across all supported surfaces. +- See attached assets below for install-ready downloads. + +## Release Assets + +- bindery-{{VERSION}}.mcpb (Claude Desktop / Cowork MCP package) +- bindery-mcp-server-{{VERSION}}.zip (Standalone MCP package for clients that support command + args + env configuration, such as ChatGPT Work and LM Studio) +- bindery-{{VERSION}}.vsix (VS Code extension) +- bindery-obsidian-bundled-{{VERSION}}.zip (Obsidian plugin bundle) +- obsidian-plugin/dist/main.js and obsidian-plugin/dist/manifest.json (raw Obsidian artifacts for obsidian automated scanning) + +## Installation + +- VS Code extension and MCP setup overview: https://github.com/evdboom/Bindery/blob/main/README.md +- MCP package details and manual install: https://github.com/evdboom/Bindery/blob/main/mcpb/README.md +- Standalone MCP zip quick install: included README.md inside bindery-mcp-server-{{VERSION}}.zip + +## Notes + +- Release notes below this section are auto-generated from merged pull requests and commits. \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7696243..520234e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,9 +25,9 @@ jobs: fi echo "release_version=$VERSION" >> "$GITHUB_OUTPUT" - # ── Job 1: Build .mcpb for Claude Desktop ─────────────────────────────────── + # ── Job 1: Build .mcpb for Claude Desktop + standalone MCP zip ───────────── build-mcpb: - name: Build .mcpb + name: Build MCP Packages needs: validate-release-version runs-on: ubuntu-latest permissions: @@ -76,15 +76,38 @@ jobs: mv "$f" "bindery-${VERSION}.mcpb" 2>/dev/null || true done + - name: Package standalone MCP server zip + run: | + VERSION="$RELEASE_VERSION" + mkdir -p mcpb/standalone-mcp/server + cp mcpb/server/index.js mcpb/standalone-mcp/server/index.js + cp mcpb/standalone-mcp-README.md mcpb/standalone-mcp/README.md + cd mcpb/standalone-mcp + zip "../../bindery-mcp-server-${VERSION}.zip" README.md server/index.js + + - name: Render standardized release notes + run: | + VERSION="$RELEASE_VERSION" + sed "s/{{VERSION}}/${VERSION}/g" .github/release-notes-template.md > .github/release-notes.generated.md + - name: Attest .mcpb build provenance uses: actions/attest-build-provenance@v4 with: subject-path: mcpb/*.mcpb + - name: Attest standalone MCP zip provenance + uses: actions/attest-build-provenance@v4 + with: + subject-path: bindery-mcp-server-*.zip + - name: Upload .mcpb to release uses: softprops/action-gh-release@v3 with: - files: mcpb/*.mcpb + files: | + mcpb/*.mcpb + bindery-mcp-server-*.zip + body_path: .github/release-notes.generated.md + generate_release_notes: true fail_on_unmatched_files: true # ── Job 2: Package VS Code extension + attach VSIX to release ─────────────── diff --git a/README.md b/README.md index 043e413..3693219 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,10 @@ Then in Obsidian: Settings → Community plugins (if not restricted) → Install ### [mcpb/](mcpb/) — Claude Desktop Extension -Packages the MCP server as a `.mcpb` file for one-click installation in Claude Desktop or Cowork. +Release assets now include two MCP package formats: + +- `bindery-.mcpb` for Claude Desktop / Cowork +- `bindery-mcp-server-.zip` as a standalone MCP package for clients that support command + args + env setup (for example ChatGPT Work or LM Studio) **Download the latest release** from [Releases](../../releases) — no build step needed. @@ -110,6 +113,21 @@ Packages the MCP server as a `.mcpb` file for one-click installation in Claude D - **Note:** full embedding can be a heavy operation, depending on your hardware, when running a local Ollama instance. 6. Tools are now available — the agent calls `list_books` to discover book names +### Standalone MCP Clients (ChatGPT Work, LM Studio, etc.) + +1. Download `bindery-mcp-server-*.zip` from the [latest release](../../releases/latest) +2. Unzip it to a stable folder +3. In your MCP client, add an MCP server with: + - eg. in ChatGPT Work -> **Settings** -> **Plug-ins** -> **MCP's** tab + - Command: `node` + - Args: absolute path to `server/index.js` from the unzipped folder +4. Set environment variables: + - `BINDERY_BOOKS` (required): semicolon-separated `Name=path` pairs + - `BINDERY_OLLAMA_URL` (optional): Ollama endpoint for semantic features + - `BINDERY_ENABLE_SEMANTIC_INDEX` (optional): `true` to enable full semantic index builds + - `BINDERY_DEFAULT_SEARCH_MODE` (optional): `lexical`, `semantic_rerank`, or `full_semantic` +5. Save and reconnect the MCP server + ## Architecture Overview The following flow shows how Bindery's writing environments connect to agents, MCP, and skills at a high level. diff --git a/mcpb/README.md b/mcpb/README.md index cc00cd7..dc31f0c 100644 --- a/mcpb/README.md +++ b/mcpb/README.md @@ -1,4 +1,4 @@ -# Bindery MCP — Desktop Extension (.mcpb) +# Bindery MCP — Desktop Packages Book authoring tools for Claude Desktop: chapter navigation, full-text search, translation management, session memory, typography formatting, and version snapshots. @@ -20,7 +20,7 @@ Works with any Markdown book project structured with the Bindery VS Code extensi - **Version snapshots** — git-based save points after writing sessions - **Review diffs** — structured git diff of uncommitted changes -## Manual Installation +## Manual Installation (Claude Desktop) To install manually without using published Claude Connectors @@ -29,6 +29,21 @@ To install manually without using published Claude Connectors 3. Click **Install from file** (or drag-drop the `.mcpb` file) 4. Fill in the **Books** field (see Configuration below) +## Manual Installation (Standalone MCP clients) + +1. Download the `bindery-mcp-server-*.zip` file from the latest release +2. Unzip it to a stable folder +3. In your MCP client, add a new MCP server. + - eg. in ChatGPT Work -> **Settings** -> **Plug-ins** -> **MCP's** tab +4. With: + - Command: `node` + - Args: absolute path to `server/index.js` from the unzipped folder +5. Add environment variables: + - `BINDERY_BOOKS` (required): semicolon-separated `Name=path` pairs + - `BINDERY_OLLAMA_URL` (optional): Ollama endpoint for semantic features + - `BINDERY_ENABLE_SEMANTIC_INDEX` (optional): `true` to enable full semantic index builds + - `BINDERY_DEFAULT_SEARCH_MODE` (optional): `lexical`, `semantic_rerank`, or `full_semantic` + ## Configuration | Setting | Required | Description | @@ -165,7 +180,7 @@ table with issue type, location, and the reference that contradicts it. | `identify_book` | Match a working directory to a book name | | `health` | Server status: settings, index, embedding backend | | `init_workspace` | Create or update `.bindery/settings.json`, `translations.json`, generated `.bindery/README.md`, and the opinionated Arc / Notes / Characters / SESSION / PREFERENCES / memory / status scaffold | -| `setup_ai_files` | Generate AI instruction files (CLAUDE.md, copilot-instructions.md, .cursor/rules, AGENTS.md), Claude skill templates, skill zips, and refresh generated `.bindery/README.md` | +| `setup_ai_files` | Generate AI instruction files (CLAUDE.md, copilot-instructions.md, .cursor/rules, AGENTS.md), Claude skill templates, and refresh generated `.bindery/README.md` | | `index_build` | Build or rebuild the lexical index and, when enabled, the semantic embedding index | | `index_status` | Show lexical and semantic index status, build times, and stale hints | | `get_text` | Read any file by relative path, with optional line range | @@ -230,6 +245,8 @@ mcpb pack This produces `bindery-mcp-.mcpb`. +For standalone MCP clients, release CI also produces `bindery-mcp-server-.zip` containing `server/index.js` and setup instructions. + ## Files - `manifest.json` — Extension metadata, tool declarations, user config schema diff --git a/mcpb/standalone-mcp-README.md b/mcpb/standalone-mcp-README.md new file mode 100644 index 0000000..211e597 --- /dev/null +++ b/mcpb/standalone-mcp-README.md @@ -0,0 +1,38 @@ +# Bindery Standalone MCP Server Package + +This package contains: + +- `server/index.js` (the bundled Bindery MCP server) +- `README.md` (this file) + +## Install in any MCP client + +1. Unzip this archive to a stable folder on your machine. +2. In your MCP client, add a new MCP server. + - eg. in ChatGPT Work -> **Settings** -> **Plug-ins** -> **MCP's** tab +3. Use the following values: + - Command: `node` + - Args: absolute path to `server/index.js` in the folder you unzipped +4. Configure environment variables (at minimum `BINDERY_BOOKS`). + +## Environment variables + +- `BINDERY_BOOKS` (required) + - Semicolon-separated `Name=path` pairs. + - Example: `MyBook=C:\Users\Me\MyBook;MyNovel=D:\Writing\MyNovel` +- `BINDERY_OLLAMA_URL` (optional) + - Ollama endpoint for semantic reranking/full semantic search. + - Example: `http://localhost:11434` +- `BINDERY_ENABLE_SEMANTIC_INDEX` (optional) + - `true` to enable full semantic index builds via `index_build`. + - Default: `false` +- `BINDERY_DEFAULT_SEARCH_MODE` (optional) + - One of `lexical`, `semantic_rerank`, `full_semantic`. + - Default: `lexical` + +## Notes + +- Keep the unzipped folder in place after configuring the MCP server. +- If Node is not on PATH, use the absolute path to the Node executable as Command. +- If Node is not installed at all you can get it from *https://nodejs.org/* +- This package is suitable for any MCP client that supports executable command + arguments + environment variables (for example ChatGPT Work or LM Studio).