layoutbridge-spm 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +171 -0
- package/LICENSE +26 -0
- package/README.de.md +318 -0
- package/README.md +304 -4
- package/THIRD-PARTY-NOTICES.md +2878 -0
- package/dist/src/mcp/config.js +125 -0
- package/dist/src/mcp/dispatch.js +123 -0
- package/dist/src/mcp/license/free-tools.js +16 -0
- package/dist/src/mcp/license/gate.js +209 -0
- package/dist/src/mcp/license/index.js +96 -0
- package/dist/src/mcp/license/instance-name.js +56 -0
- package/dist/src/mcp/license/key-source.js +58 -0
- package/dist/src/mcp/license/lemonsqueezy-verifier.js +207 -0
- package/dist/src/mcp/license/placeholder-verifier.js +10 -0
- package/dist/src/mcp/license/polar-ids.js +63 -0
- package/dist/src/mcp/license/polar-verifier.js +265 -0
- package/dist/src/mcp/license/product-ids.js +72 -0
- package/dist/src/mcp/license/state-store.js +91 -0
- package/dist/src/mcp/license/types.js +11 -0
- package/dist/src/mcp/logging.js +270 -0
- package/dist/src/mcp/product-info.js +48 -0
- package/dist/src/mcp/server.js +250 -0
- package/dist/src/mcp/setup.js +608 -0
- package/dist/src/mcp/start.cjs +95 -0
- package/dist/src/mcp/tool-definition.js +2 -0
- package/dist/src/mcp/tools.js +2004 -0
- package/dist/src/mcp/typography-rules.js +70 -0
- package/dist/src/transport/com.js +250 -0
- package/dist/src/transport/osascript.js +171 -0
- package/dist/src/transport/queue.js +19 -0
- package/dist/src/transport/script-bundle.js +92 -0
- package/dist/src/transport/transport.js +30 -0
- package/indesign/commands/10-app.js +6 -0
- package/indesign/commands/20-documents.js +513 -0
- package/indesign/commands/22-document-setup.js +118 -0
- package/indesign/commands/23-save-package.js +255 -0
- package/indesign/commands/25-export.js +379 -0
- package/indesign/commands/26-export-image.js +197 -0
- package/indesign/commands/27-textdefaults.js +151 -0
- package/indesign/commands/28-selection.js +174 -0
- package/indesign/commands/30-pages.js +1032 -0
- package/indesign/commands/31-view.js +210 -0
- package/indesign/commands/32-sections.js +203 -0
- package/indesign/commands/35-parents.js +428 -0
- package/indesign/commands/37-layout.js +760 -0
- package/indesign/commands/40-frames.js +836 -0
- package/indesign/commands/41-shapes.js +505 -0
- package/indesign/commands/42-groups.js +117 -0
- package/indesign/commands/43-layers.js +291 -0
- package/indesign/commands/44-effects.js +274 -0
- package/indesign/commands/45-frame-options.js +247 -0
- package/indesign/commands/47-anchored.js +287 -0
- package/indesign/commands/50-modify.js +781 -0
- package/indesign/commands/52-align.js +139 -0
- package/indesign/commands/55-fit.js +106 -0
- package/indesign/commands/60-images.js +771 -0
- package/indesign/commands/62-embed.js +120 -0
- package/indesign/commands/69-placeholders.js +127 -0
- package/indesign/commands/70-text.js +567 -0
- package/indesign/commands/71-outlines.js +92 -0
- package/indesign/commands/72-place-text.js +366 -0
- package/indesign/commands/74-stories.js +116 -0
- package/indesign/commands/75-tables.js +676 -0
- package/indesign/commands/76-text-variables.js +260 -0
- package/indesign/commands/77-story-options.js +86 -0
- package/indesign/commands/78-frame-lines.js +304 -0
- package/indesign/commands/79-check-typography.js +303 -0
- package/indesign/commands/80-styles.js +1620 -0
- package/indesign/commands/81-composition.js +355 -0
- package/indesign/commands/82-object-styles.js +263 -0
- package/indesign/commands/83-indents-tabs.js +237 -0
- package/indesign/commands/84-import-styles.js +142 -0
- package/indesign/commands/85-swatches.js +112 -0
- package/indesign/commands/86-gradients.js +185 -0
- package/indesign/commands/87-replace-swatch.js +180 -0
- package/indesign/commands/88-replace-font.js +217 -0
- package/indesign/interpreter.js +758 -0
- package/package.json +55 -6
- package/rules/typography-rules.json +31 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Changelog – LayoutBridge for Adobe InDesign® (package `layoutbridge-spm`)
|
|
2
|
+
|
|
3
|
+
All notable changes to the package are recorded in this file. Format based
|
|
4
|
+
on “Keep a Changelog” (https://keepachangelog.com/en/1.1.0/), version
|
|
5
|
+
numbers follow Semantic Versioning (https://semver.org/).
|
|
6
|
+
|
|
7
|
+
One release a month with a catalogue of new features; bug fixes are
|
|
8
|
+
implemented as quickly as possible, independently of that release cycle.
|
|
9
|
+
Tool names, parameters and return fields remain stable within a major
|
|
10
|
+
version; additions are additive (new tools, new optional parameters, new
|
|
11
|
+
fields). Renames and changed defaults belong in a new major version with
|
|
12
|
+
its own entry.
|
|
13
|
+
|
|
14
|
+
This file is part of the npm package and the MCPB bundle; the customer
|
|
15
|
+
version on the product page is derived from it.
|
|
16
|
+
|
|
17
|
+
Adobe and InDesign are either registered trademarks or trademarks of Adobe
|
|
18
|
+
in the United States and/or other countries.
|
|
19
|
+
|
|
20
|
+
## [Unreleased]
|
|
21
|
+
|
|
22
|
+
No changes yet.
|
|
23
|
+
|
|
24
|
+
## [1.0.0] - 2026-09-23
|
|
25
|
+
|
|
26
|
+
First release. State of the product:
|
|
27
|
+
|
|
28
|
+
- 110 tools for Adobe® InDesign® via MCP (stdio): documents and pages,
|
|
29
|
+
layout grid, baseline grid and guides, layers, frames, images and links,
|
|
30
|
+
text and styles, tables, swatches and gradients, design, text variables
|
|
31
|
+
and sections, taking over third-party documents, typography check,
|
|
32
|
+
preflight, packaging, PDF and image export.
|
|
33
|
+
- Platforms: macOS (Apple Events) and Windows 10/11 x64 (COM,
|
|
34
|
+
PowerShell 5.1); Node.js 20 or newer.
|
|
35
|
+
- Two ways to install: the installation package for Claude Desktop
|
|
36
|
+
(`layoutbridge-spm-1.0.0.mcpb`, runs with the Node.js built into Claude
|
|
37
|
+
Desktop) and the npm package `layoutbridge-spm` (`--setup`).
|
|
38
|
+
- Licence key per workstation with online check, 24-hour recheck, 14 days
|
|
39
|
+
of grace without network and release when changing computers
|
|
40
|
+
(`npx layoutbridge-spm --deactivate`).
|
|
41
|
+
- Log per call with data minimisation: no document text, no user names in
|
|
42
|
+
paths, random workstation identifier.
|
|
43
|
+
|
|
44
|
+
Changes made while preparing the first release, for reference:
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
|
|
48
|
+
- The server checks the Node.js version at start. If it is older than 20,
|
|
49
|
+
the start ends with a message in English and German that names the
|
|
50
|
+
version found and the version required and refers to the installation
|
|
51
|
+
guide (exit code 1). New entry point `dist/src/mcp/start.cjs` for
|
|
52
|
+
`npx layoutbridge-spm` and the MCPB bundle; starting
|
|
53
|
+
`dist/src/mcp/server.js` directly remains possible.
|
|
54
|
+
- Every message of the error kind `license` names the support address
|
|
55
|
+
kontakt@mcp-interfaces.com in plain text; `error.details` additionally
|
|
56
|
+
carries `support`, `license_terms` and `license_terms_de` (additive).
|
|
57
|
+
- The server's start line and the log's start line name the address of
|
|
58
|
+
the licence terms and the support address.
|
|
59
|
+
- `CHANGELOG.md` (this file), `THIRD-PARTY-NOTICES`, `server.json`
|
|
60
|
+
(MCP Registry) and `manifest.json` (MCPB bundle) in preparation for the
|
|
61
|
+
first release; README sections License terms, Privacy Policy, Support
|
|
62
|
+
and Third-party notices.
|
|
63
|
+
- Setup command `npx layoutbridge-spm --setup`: adds the server to the
|
|
64
|
+
Claude Desktop configuration (`mcpServers.layoutbridge-spm`, command
|
|
65
|
+
`npx -y layoutbridge-spm`) and stores the licence key in `license.key`
|
|
66
|
+
in the default location. Shows the file path and the new entry and asks
|
|
67
|
+
before writing; creates a backup of the configuration file first; leaves
|
|
68
|
+
all other entries byte-for-byte unchanged; stops on invalid JSON with
|
|
69
|
+
line and column; `--dry-run` writes nothing; stops without an
|
|
70
|
+
interactive terminal. No network, no administrator rights; not a tool
|
|
71
|
+
in the catalogue. Options `--license-key-file <path>` and `--client
|
|
72
|
+
claude-desktop`. Entering the configuration by hand remains documented.
|
|
73
|
+
- German README as `README.de.md` in the package and the bundle; the
|
|
74
|
+
English `README.md` is the version shown by npm and directories.
|
|
75
|
+
- New tool `position_image_in_frame`: moves the graphic inside a frame
|
|
76
|
+
without scaling it – `align` to one of nine reference points of the
|
|
77
|
+
frame and/or `offset_mm` {x, y}; the frame stays unchanged.
|
|
78
|
+
- New tool `duplicate_parent_page`: duplicates a master spread with all
|
|
79
|
+
its pages and objects (`source_name`, optional `base_name`,
|
|
80
|
+
`name_prefix`, `keep_view`).
|
|
81
|
+
- `move_pages`: optional `keep_spreads` rebuilds the affected spreads as
|
|
82
|
+
pairs after moving; InDesign's limit of 10 pages per spread is checked
|
|
83
|
+
before anything moves (`invalid_state`, `details.code`
|
|
84
|
+
`spread_page_limit`); a spread with more than two pages is a warning
|
|
85
|
+
that shows the new spread division. New return fields `keep_spreads` and
|
|
86
|
+
`spreads_rebuilt`.
|
|
87
|
+
- `delete_page`: objects on the pasteboard of a spread that disappears
|
|
88
|
+
with the page are listed before deleting (id, type, link) in
|
|
89
|
+
`pasteboard_items`; optional `on_pasteboard_items` `warn` (default),
|
|
90
|
+
`abort` (`invalid_state`, `details.code` `pasteboard_items_present`) or
|
|
91
|
+
`move` together with `pasteboard_target_page_id`. New return fields
|
|
92
|
+
`on_pasteboard_items`, `pasteboard_items`, `pasteboard_moved_ids` and
|
|
93
|
+
`pasteboard_lost_ids`. A loss is predicted only when the page is the
|
|
94
|
+
only page of its spread; when InDesign regroups the spreads, objects on
|
|
95
|
+
the pasteboard move with their spread and are reported in the new return
|
|
96
|
+
field `pasteboard_relocated` (object, pages of the spread before and
|
|
97
|
+
after, position) together with a warning.
|
|
98
|
+
- `move_frame_to_page`: optional `pasteboard` {side, gap_mm, y_mm} puts
|
|
99
|
+
the object on the pasteboard beside the spread of the target page. New
|
|
100
|
+
return fields `on_pasteboard` and `pasteboard_side`.
|
|
101
|
+
- `create_parent_page`: optional `page_count` (1–10, also in single-sided
|
|
102
|
+
documents) and `based_on`. New return fields `page_count` and
|
|
103
|
+
`based_on`.
|
|
104
|
+
- `set_frame_inset`: optional `vertical_justification` (top, center,
|
|
105
|
+
bottom, justify); `inset_mm` may be omitted when
|
|
106
|
+
`vertical_justification` is given. New return field
|
|
107
|
+
`vertical_justification`.
|
|
108
|
+
- `set_text_in_range`: optional `keep_format_of` (`start` default,
|
|
109
|
+
`before`, `none`). New return field `keep_format_of`.
|
|
110
|
+
|
|
111
|
+
### Changed
|
|
112
|
+
|
|
113
|
+
- `LICENSE` rewritten: use is permitted only with a valid licence key and
|
|
114
|
+
only under the licence terms (links in German and English); contact
|
|
115
|
+
kontakt@mcp-interfaces.com. The licence field in `package.json` is now
|
|
116
|
+
`SEE LICENSE IN LICENSE`.
|
|
117
|
+
- The support address in all messages, start lines, README, `package.json`
|
|
118
|
+
(`bugs`) and `manifest.json` (`support`) is now
|
|
119
|
+
kontakt@mcp-interfaces.com (the previous address remains reachable).
|
|
120
|
+
- `author` in `package.json` and `manifest.json` is now “MCP Interfaces”.
|
|
121
|
+
- `README.md` and this changelog are now in English.
|
|
122
|
+
- Package description and README use the product name “LayoutBridge for
|
|
123
|
+
Adobe InDesign®”; the package name remains `layoutbridge-spm`.
|
|
124
|
+
- `README.md` and `README.de.md` are now customer documentation:
|
|
125
|
+
requirements (Node.js version 20 or newer only for the npm package and
|
|
126
|
+
other MCP clients; the installation package runs with the Node.js built
|
|
127
|
+
into Claude Desktop), installation with the installation package
|
|
128
|
+
(switch the extension on after installing) or with npm (`--setup`, or
|
|
129
|
+
by hand with `"command": "npx"`), licence key, changing computers,
|
|
130
|
+
server configuration, log, licence terms, privacy, support.
|
|
131
|
+
- The licence check uses the payment service Polar (`api.polar.sh`).
|
|
132
|
+
`manifest.json` (`privacy_policies`) and the README name Polar's privacy
|
|
133
|
+
policy (https://polar.sh/legal/privacy). When changing computers, an
|
|
134
|
+
activation can also be released in Polar's customer portal.
|
|
135
|
+
- The licence gate is always active: without a valid licence key every
|
|
136
|
+
tool answers with the error kind `license`. The former development
|
|
137
|
+
switch `LAYOUTBRIDGE_SPM_LICENSE_ENFORCE` no longer exists and is
|
|
138
|
+
ignored if still set; the start line reads `license: enforced, …`.
|
|
139
|
+
- Package contents limited to `dist/src`, `indesign/`, `rules/`, README
|
|
140
|
+
(English and German), LICENSE, THIRD-PARTY-NOTICES, CHANGELOG and
|
|
141
|
+
`package.json` (no tests, no development documents in the package).
|
|
142
|
+
|
|
143
|
+
### Fixed
|
|
144
|
+
|
|
145
|
+
- `move_pages` with `keep_spreads`: the rebuilt spreads were not facing
|
|
146
|
+
pairs – every page of a new spread stood on the right-hand side. The
|
|
147
|
+
left page of each pair is now placed before the spine and the right
|
|
148
|
+
page after it; afterwards every page is checked against its expected
|
|
149
|
+
side, and a page on the wrong side is a warning.
|
|
150
|
+
- `move_pages` with `keep_spreads`: moving a page back and forth could
|
|
151
|
+
abort with a script error (“the object no longer exists”) after the
|
|
152
|
+
pages had already been moved, or report that the spreads could not be
|
|
153
|
+
rebuilt. Pages are now looked up afresh before every step; if a step of
|
|
154
|
+
rebuilding fails, the pages stay moved and the call ends with a warning.
|
|
155
|
+
- `set_text_in_range`: text replacing a range at the start of a paragraph
|
|
156
|
+
took the formatting of the previous paragraph instead of the first
|
|
157
|
+
replaced character. It now keeps the formatting of the first replaced
|
|
158
|
+
character, as documented; `keep_format_of` `before` restores the former
|
|
159
|
+
behaviour. With `start`, the formatting of the first replaced character
|
|
160
|
+
now applies only up to the first new paragraph mark; every further new
|
|
161
|
+
paragraph takes the formatting of the replaced paragraph at the same
|
|
162
|
+
position (or of the last replaced paragraph), including its paragraph
|
|
163
|
+
style. When the range begins with a paragraph mark, the new text
|
|
164
|
+
continues that paragraph with its formatting.
|
|
165
|
+
- The MCPB bundle did not start in Claude Desktop when Claude Desktop uses
|
|
166
|
+
its built-in Node.js: the entry point `start.cjs` only started the
|
|
167
|
+
server when it was the main module, but Claude Desktop loads the entry
|
|
168
|
+
point with `import()`. The request `initialize` stayed unanswered until
|
|
169
|
+
Claude Desktop gave up ("Request timed out"). The entry point now also
|
|
170
|
+
starts when the process arguments name it, however it is loaded; the
|
|
171
|
+
Node.js version check runs on this path as well.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Copyright (c) 2026 SP Medienservice, Inhaber Sascha Piprek
|
|
2
|
+
Alle Rechte vorbehalten. / All rights reserved.
|
|
3
|
+
|
|
4
|
+
Diese Software und die zugehörige Dokumentation sind
|
|
5
|
+
urheberrechtlich geschützt. Die Nutzung ist nur mit einem
|
|
6
|
+
gültigen Lizenzschlüssel und nur nach den Lizenzbedingungen
|
|
7
|
+
gestattet:
|
|
8
|
+
https://mcp-schnittstellen.de/layoutbridge/lizenzbedingungen.html
|
|
9
|
+
Darüber hinaus wird kein Nutzungsrecht eingeräumt.
|
|
10
|
+
Vervielfältigung, Verbreitung, Bearbeitung, Weitergabe und
|
|
11
|
+
öffentliche Zugänglichmachung – ganz oder in Teilen – bedürfen
|
|
12
|
+
der vorherigen schriftlichen Zustimmung des Rechteinhabers,
|
|
13
|
+
soweit die Lizenzbedingungen sie nicht erlauben.
|
|
14
|
+
|
|
15
|
+
This software and its documentation are protected by
|
|
16
|
+
copyright. Use is permitted only with a valid licence key and
|
|
17
|
+
only under the licence terms:
|
|
18
|
+
https://mcp-interfaces.com/layoutbridge/license.html
|
|
19
|
+
No other rights of use are granted. Reproduction,
|
|
20
|
+
distribution, modification, transfer and making available to
|
|
21
|
+
the public – in whole or in part – require the prior written
|
|
22
|
+
consent of the rights holder, except as permitted by the
|
|
23
|
+
licence terms.
|
|
24
|
+
|
|
25
|
+
Drittsoftware / Third-party software: THIRD-PARTY-NOTICES.md
|
|
26
|
+
Kontakt / Contact: kontakt@mcp-interfaces.com
|
package/README.de.md
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# LayoutBridge for Adobe InDesign®
|
|
2
|
+
|
|
3
|
+
English version: [README.md](README.md)
|
|
4
|
+
|
|
5
|
+
**LayoutBridge for Adobe InDesign®** – MCP-Server für Adobe® InDesign®
|
|
6
|
+
(npm-Paket `layoutbridge-spm`) von MCP Interfaces. Er stellt Satzarbeit in
|
|
7
|
+
Adobe InDesign als Werkzeuge bereit, die jede MCP-fähige KI aufrufen kann:
|
|
8
|
+
Dokumente und Seiten, Satzspiegel und Hilfslinien, Rahmen, Bilder und
|
|
9
|
+
Verknüpfungen, Text, Formate, Tabellen, Farbfelder, Typografieprüfung,
|
|
10
|
+
Preflight und Export.
|
|
11
|
+
|
|
12
|
+
Produktseite: https://mcp-schnittstellen.de/layoutbridge/ (englisch:
|
|
13
|
+
https://mcp-interfaces.com/layoutbridge/).
|
|
14
|
+
Ausführliche Schritt-für-Schritt-Anleitung:
|
|
15
|
+
https://mcp-schnittstellen.de/layoutbridge/installation.html (englisch:
|
|
16
|
+
https://mcp-interfaces.com/layoutbridge/installation.html).
|
|
17
|
+
|
|
18
|
+
Adobe and InDesign are either registered trademarks or trademarks of Adobe in
|
|
19
|
+
the United States and/or other countries.
|
|
20
|
+
|
|
21
|
+
## Voraussetzungen
|
|
22
|
+
|
|
23
|
+
- Adobe® InDesign®, installiert und gestartet – Mac oder Windows (Windows
|
|
24
|
+
10/11 x64; geprüft mit InDesign® 21.5.1.73 auf Windows 11)
|
|
25
|
+
- Windows: Windows PowerShell 5.1 (`powershell.exe`, in Windows enthalten)
|
|
26
|
+
- Ihr Lizenzschlüssel aus der Quittungsmail des Kaufs – ein Schlüssel je
|
|
27
|
+
Arbeitsplatz
|
|
28
|
+
- Eine Netzverbindung für die Lizenzprüfung beim ersten Aufruf
|
|
29
|
+
- **Node.js ab Version 20 – nur für das npm-Paket** (Eintrag in der
|
|
30
|
+
Konfigurationsdatei, `--setup`, `--deactivate`) **und für andere
|
|
31
|
+
MCP-Clients.** Mit dem Installationspaket (`.mcpb`) ist keine eigene
|
|
32
|
+
Node.js-Installation nötig – Claude Desktop bringt Node.js mit (Schalter
|
|
33
|
+
„Use built-in Node.js for MCP“ unter „Erweiterte Einstellungen“, ab Werk
|
|
34
|
+
eingeschaltet).
|
|
35
|
+
|
|
36
|
+
## Installation in Claude Desktop
|
|
37
|
+
|
|
38
|
+
Es gibt zwei Wege. Weg A ist der kürzere; Weg B ist derselbe Eintrag, den
|
|
39
|
+
auch andere MCP-Clients bekommen. Die oben verlinkte Anleitung zeigt jeden
|
|
40
|
+
Schritt mit den Einzelheiten für Mac und Windows.
|
|
41
|
+
|
|
42
|
+
**Weg A – Installationspaket (Bundle-Datei `.mcpb`)**
|
|
43
|
+
|
|
44
|
+
1. Laden Sie die Datei `layoutbridge-spm-<Version>.mcpb` von der
|
|
45
|
+
Produktseite herunter.
|
|
46
|
+
2. Öffnen Sie in Claude Desktop Einstellungen › Desktop-App › Erweiterungen
|
|
47
|
+
und ziehen Sie die Datei in dieses Fenster – dort steht „Ziehe .MCPB-
|
|
48
|
+
oder .DXT-Dateien hier her, um sie zu installieren“. Auf dem Mac können
|
|
49
|
+
Sie die Datei stattdessen per Doppelklick öffnen. Unter Windows öffnet
|
|
50
|
+
der Doppelklick Claude Desktop nicht – Windows fragt nach einem
|
|
51
|
+
Programm; ziehen Sie die Datei dort ins Fenster oder wählen Sie unter
|
|
52
|
+
„Erweiterte Einstellungen“ die Schaltfläche zum Installieren einer
|
|
53
|
+
Erweiterung (englische Oberfläche: „Advanced settings“ › „Install
|
|
54
|
+
extension“) und dann die Datei. Bestätigen Sie den Installationsdialog
|
|
55
|
+
mit „Installieren“.
|
|
56
|
+
3. Tragen Sie Ihren Lizenzschlüssel in das Feld „Licence key“ ein und
|
|
57
|
+
klicken Sie auf „Speichern“. Claude Desktop speichert den Schlüssel auf
|
|
58
|
+
Ihrem Rechner.
|
|
59
|
+
4. **Schalten Sie die Erweiterung ein.** Nach der Installation steht
|
|
60
|
+
„LayoutBridge for Adobe InDesign®“ unter Einstellungen › Erweiterungen
|
|
61
|
+
auf „Deaktiviert“. Stellen Sie den Schalter auf „Aktiviert“ – sonst
|
|
62
|
+
erscheinen keine Werkzeuge.
|
|
63
|
+
|
|
64
|
+
**Weg B – npm-Paket (Node.js ab Version 20)**
|
|
65
|
+
|
|
66
|
+
Einrichtungsbefehl – im Terminal (Mac) bzw. in der PowerShell (Windows)
|
|
67
|
+
aufrufen:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
npx layoutbridge-spm --setup
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Der Befehl trägt den Server in die Konfigurationsdatei von Claude Desktop
|
|
74
|
+
ein und legt den Lizenzschlüssel am Vorgabeort ab (siehe
|
|
75
|
+
„Lizenzschlüssel“). Er läuft nur, wenn Sie ihn aufrufen. Vor jeder Änderung
|
|
76
|
+
zeigt er den vollen Pfad der Datei und den neuen Eintrag im Wortlaut und
|
|
77
|
+
fragt nach (`y` für ja, `n` für nein). Vor dem Schreiben legt er eine
|
|
78
|
+
Sicherung `claude_desktop_config.json.bak-JJJJ-MM-TT_HHMM` im selben Ordner
|
|
79
|
+
an; geändert wird nur der Eintrag `layoutbridge-spm` unter `mcpServers`,
|
|
80
|
+
alle anderen Einträge bleiben unverändert. Ist die Datei kein gültiges
|
|
81
|
+
JSON, bricht er ab und nennt Zeile und Spalte. Den Lizenzschlüssel fragt er
|
|
82
|
+
verdeckt ab und schreibt ihn nur nach `license.key`. Keine
|
|
83
|
+
Administratorrechte, keine Netzverbindung.
|
|
84
|
+
|
|
85
|
+
- `--dry-run` zeigt dasselbe und schreibt nichts.
|
|
86
|
+
- `--license-key-file <Pfad>` liest den Schlüssel aus einer Datei, statt
|
|
87
|
+
ihn abzufragen.
|
|
88
|
+
|
|
89
|
+
**Von Hand:** Öffnen Sie die Konfigurationsdatei von Claude Desktop in
|
|
90
|
+
einem Texteditor – Mac `~/Library/Application Support/Claude/claude_desktop_config.json`,
|
|
91
|
+
Windows `%APPDATA%\Claude\claude_desktop_config.json` (einfacher:
|
|
92
|
+
Einstellungen › Desktop-App › Entwickler › „Konfiguration bearbeiten“
|
|
93
|
+
öffnet den Ordner mit der Datei). Ist die Datei leer oder noch nicht
|
|
94
|
+
vorhanden, hat sie genau diesen Inhalt:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"mcpServers": {
|
|
99
|
+
"layoutbridge-spm": {
|
|
100
|
+
"command": "npx",
|
|
101
|
+
"args": ["-y", "layoutbridge-spm"]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Enthält die Datei bereits andere Server unter `"mcpServers"`, fügen Sie nur
|
|
108
|
+
den Block `"layoutbridge-spm": { … }` dort ein – mit einem Komma zwischen
|
|
109
|
+
den Einträgen – und lassen Sie alles andere unverändert. Legen Sie dann den
|
|
110
|
+
Lizenzschlüssel ab (siehe „Lizenzschlüssel“). Beim ersten Start lädt `npx`
|
|
111
|
+
das Paket `layoutbridge-spm` von der npm-Registry; danach startet es aus
|
|
112
|
+
dem lokalen Speicher.
|
|
113
|
+
|
|
114
|
+
**Danach:** Beenden Sie Claude Desktop vollständig – auf dem Mac mit ⌘ + Q,
|
|
115
|
+
unter Windows über „Beenden“ im Menü der Anwendung; das Fenster zu
|
|
116
|
+
schließen genügt nicht – und starten Sie es neu. Starten Sie Adobe®
|
|
117
|
+
InDesign® und fragen Sie in Claude Desktop: „Welche InDesign®-Version
|
|
118
|
+
läuft?“ Claude ruft das Werkzeug `get_app_version` auf und nennt die
|
|
119
|
+
Version. Die Werkzeuge erscheinen auf Weg A unter dem Namen der Erweiterung
|
|
120
|
+
„LayoutBridge for Adobe InDesign®“, auf Weg B mit dem Präfix
|
|
121
|
+
`layoutbridge-spm:`.
|
|
122
|
+
|
|
123
|
+
## Andere MCP-Clients
|
|
124
|
+
|
|
125
|
+
Andere MCP-Clients (Claude Code, Cursor, GitHub Copilot u. a.) tragen
|
|
126
|
+
denselben Server nach ihrer eigenen Dokumentation ein. Der Befehl ist
|
|
127
|
+
überall
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
npx -y layoutbridge-spm
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
und setzt Node.js ab Version 20 voraus. Den Lizenzschlüssel findet der
|
|
134
|
+
Server an denselben Orten wie unter „Lizenzschlüssel“ beschrieben.
|
|
135
|
+
|
|
136
|
+
## Lizenzschlüssel
|
|
137
|
+
|
|
138
|
+
Der Schlüssel steht in der Quittungsmail des Kaufs und gilt für genau einen
|
|
139
|
+
Arbeitsplatz; mehrere Arbeitsplätze brauchen mehrere Schlüssel.
|
|
140
|
+
|
|
141
|
+
**Wo LayoutBridge den Schlüssel sucht, in dieser Reihenfolge:**
|
|
142
|
+
|
|
143
|
+
1. die Umgebungsvariable `LAYOUTBRIDGE_SPM_LICENSE_KEY` – das
|
|
144
|
+
Installationspaket setzt sie aus dem Feld „Licence key“; auf Weg B kann
|
|
145
|
+
sie als `"env": { "LAYOUTBRIDGE_SPM_LICENSE_KEY": "IHR-LIZENZSCHLÜSSEL" }`
|
|
146
|
+
in den Server-Eintrag,
|
|
147
|
+
2. die Datei, die in der Umgebungsvariablen `LAYOUTBRIDGE_SPM_LICENSE_FILE`
|
|
148
|
+
steht,
|
|
149
|
+
3. die Datei `license.key` am Vorgabeort – nur der Schlüssel, ohne weiteren
|
|
150
|
+
Text:
|
|
151
|
+
- Mac: `~/Library/Application Support/layoutbridge-spm/license.key`
|
|
152
|
+
- Windows: `%USERPROFILE%\.layoutbridge-spm\license.key`
|
|
153
|
+
|
|
154
|
+
Den Ordner `layoutbridge-spm` bzw. `.layoutbridge-spm` legen Sie an, falls
|
|
155
|
+
er fehlt. Ein nachgelegter oder geänderter Schlüssel wirkt ohne Neustart.
|
|
156
|
+
|
|
157
|
+
**Prüfung:** Beim ersten Werkzeugaufruf prüft LayoutBridge den Schlüssel
|
|
158
|
+
online; danach höchstens einmal in 24 Stunden. Ist der Dienst nicht
|
|
159
|
+
erreichbar, arbeitet LayoutBridge ab der letzten gültigen Prüfung 14 Tage
|
|
160
|
+
weiter und hängt jeder Antwort eine Warnung an; danach – oder wenn es noch
|
|
161
|
+
nie eine gültige Prüfung gab – sind die Werkzeuge gesperrt, bis der
|
|
162
|
+
Schlüssel wieder geprüft werden kann.
|
|
163
|
+
|
|
164
|
+
**Ohne gültigen Schlüssel** antwortet jedes Werkzeug mit `ok: false` und
|
|
165
|
+
`error.kind: "license"`. Die Meldung sagt im Klartext, ob der Schlüssel
|
|
166
|
+
fehlt, abgelaufen, ungültig, für ein anderes Produkt oder gerade nicht
|
|
167
|
+
prüfbar ist, und nennt den Ort, an dem der Schlüssel erwartet wurde;
|
|
168
|
+
`error.details` nennt dazu die Support-Adresse und die Lizenzbedingungen.
|
|
169
|
+
InDesign® wird dabei nicht angesprochen.
|
|
170
|
+
|
|
171
|
+
**Was gespeichert und übertragen wird:** Das Ergebnis der letzten Prüfung
|
|
172
|
+
steht in `license-state.json` neben `license.key` – mit einem
|
|
173
|
+
Fingerabdruck des Schlüssels, nie dem Schlüssel selbst, und ohne
|
|
174
|
+
Kundendaten. Zur Prüfung gehen der Lizenzschlüssel und eine Kennung dieses
|
|
175
|
+
Arbeitsplatzes an den Zahlungsdienst Polar (`api.polar.sh`, USA). Die
|
|
176
|
+
Kennung ist ein zufälliger Name der Form `layoutbridge-<8 Zeichen>`, der
|
|
177
|
+
beim ersten Mal erzeugt und in
|
|
178
|
+
`instance-name` neben `license.key` abgelegt wird; der Rechnername wird
|
|
179
|
+
nicht verwendet. Wer im Händler-Konto einen lesbaren Namen möchte, setzt
|
|
180
|
+
`LAYOUTBRIDGE_SPM_INSTANCE_NAME`. Dokumentinhalte, Dateipfade und
|
|
181
|
+
Werkzeugaufrufe werden nie übertragen.
|
|
182
|
+
|
|
183
|
+
## Rechnerwechsel
|
|
184
|
+
|
|
185
|
+
Eine Lizenz ist auf einem Arbeitsplatz aktiv. Geben Sie sie auf dem alten
|
|
186
|
+
Rechner frei, bevor Sie den Schlüssel auf dem neuen eintragen – ohne
|
|
187
|
+
InDesign®, ohne Claude Desktop, aber mit Node.js ab Version 20:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
npx layoutbridge-spm --deactivate
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Der Befehl meldet im Klartext, ob die Freigabe geklappt hat, und löscht das
|
|
194
|
+
lokale Prüfergebnis. Er liest den Schlüssel an denselben Orten wie der
|
|
195
|
+
Server (siehe „Lizenzschlüssel“); beim Installationspaket verwahrt Claude
|
|
196
|
+
Desktop den Schlüssel – legen Sie ihn dann vorher als `license.key` ab oder
|
|
197
|
+
schreiben Sie an den Support. Haben Sie kein Node.js, weil Sie nur das
|
|
198
|
+
Installationspaket nutzen, oder ist der alte Rechner nicht mehr erreichbar,
|
|
199
|
+
können Sie die Aktivierung selbst im Kundenportal von Polar freigeben oder
|
|
200
|
+
an den Support schreiben; er gibt die Aktivierung frei.
|
|
201
|
+
|
|
202
|
+
## Konfiguration des Servers
|
|
203
|
+
|
|
204
|
+
Vorgaben, die je Arbeitsplatz verschieden sind, lassen sich in einer
|
|
205
|
+
JSON-Datei festlegen, die der Server beim Start liest: Pfad aus der
|
|
206
|
+
Umgebungsvariablen `LAYOUTBRIDGE_SPM_CONFIG`, sonst auf dem Mac
|
|
207
|
+
`~/Library/Application Support/layoutbridge-spm/config.json`, unter Windows
|
|
208
|
+
`%USERPROFILE%\.layoutbridge-spm\config.json`. Fehlt die Datei, gelten die
|
|
209
|
+
neutralen Vorgaben. Alle Schlüssel sind optional; ein Parameter im Aufruf
|
|
210
|
+
geht immer vor.
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"tracking_warn_beyond": 20,
|
|
215
|
+
"min_ppi": 300,
|
|
216
|
+
"export_pdf": {
|
|
217
|
+
"preset": "Name des PDF-Presets",
|
|
218
|
+
"fallback_preset": "Name des Ausweichpresets",
|
|
219
|
+
"fallback_over_bytes": 4194304
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
| Schlüssel | Wirkung |
|
|
225
|
+
|---|---|
|
|
226
|
+
| `tracking_warn_beyond` | `apply_character_format_to_range` warnt, wenn die Laufweite betragsmäßig darüber liegt. Ohne Eintrag keine Warnung. |
|
|
227
|
+
| `min_ppi` | Vorgabe für den Parameter `min_ppi` von `place_image`, `scale_image_in_frame` und `fit_frame` (Warnung unter dieser effektiven Auflösung). Ohne Eintrag 300. |
|
|
228
|
+
| `export_pdf.preset` | Vorgabe für `preset` von `export_pdf`. Ohne Eintrag das lokalisierte „High Quality Print“. |
|
|
229
|
+
| `export_pdf.fallback_preset`, `export_pdf.fallback_over_bytes` | Zweiter Durchgang mit diesem Preset, wenn die Datei größer ist. Ohne Eintrag kein zweiter Durchgang. |
|
|
230
|
+
|
|
231
|
+
Unbekannte Schlüssel und falsche Typen meldet der Server beim Start auf der
|
|
232
|
+
Standardfehlerausgabe und ignoriert sie.
|
|
233
|
+
|
|
234
|
+
## Protokoll
|
|
235
|
+
|
|
236
|
+
Eine Zeile je Aufruf, eine Datei je laufender Instanz:
|
|
237
|
+
`~/Library/Logs/layoutbridge-spm/` auf dem Mac,
|
|
238
|
+
`%USERPROFILE%\.layoutbridge-spm\logs\` unter Windows; anderer Ort über die
|
|
239
|
+
Umgebungsvariable `LAYOUTBRIDGE_SPM_LOG_DIR`. Das Protokoll bleibt auf
|
|
240
|
+
Ihrem Rechner; es wird nirgendwohin gesendet.
|
|
241
|
+
|
|
242
|
+
**Was in der Zeile steht (Vorgabe `basic`):** Zeitpunkt, Werkzeugname,
|
|
243
|
+
Dauer, Erfolg, Fehlerart und Fehlertext, Warnungen und die **Namen** der
|
|
244
|
+
übergebenen Parameter. Werte stehen nur dort, wo sie für die Fehlersuche
|
|
245
|
+
nötig und harmlos sind (Zahlen, Kennungen, Aufzählungswerte, Dateipfade).
|
|
246
|
+
Text, der Dokumentinhalt sein kann, erscheint nur als Längenangabe –
|
|
247
|
+
`"<Text, 248 Zeichen>"`. In Pfaden wird Ihr Benutzerverzeichnis durch `~`
|
|
248
|
+
ersetzt. Der Lizenzschlüssel wird nie protokolliert.
|
|
249
|
+
|
|
250
|
+
**Tiefe einstellen –** `LAYOUTBRIDGE_SPM_LOG_LEVEL`:
|
|
251
|
+
|
|
252
|
+
| Wert | Bedeutung |
|
|
253
|
+
|---|---|
|
|
254
|
+
| `off` | keine Protokollierung, es wird keine Datei angelegt |
|
|
255
|
+
| `basic` | **Vorgabe**, gefiltert wie oben beschrieben |
|
|
256
|
+
| `full` | alle Parameter im Wortlaut, Pfade mit Benutzernamen – nur für die Fehlersuche, auf Bitte des Supports |
|
|
257
|
+
|
|
258
|
+
Läuft `full`, sagt das die erste Zeile im Protokoll und die Startmeldung des
|
|
259
|
+
Servers. Danach wieder auf `basic` stellen.
|
|
260
|
+
|
|
261
|
+
**Aufbewahrung:** Beim Start löscht der Server Protokolldateien, die älter
|
|
262
|
+
als **30 Tage** sind. Andere Frist über `LAYOUTBRIDGE_SPM_LOG_KEEP_DAYS`
|
|
263
|
+
(Zahl in Tagen; `0` schaltet das Löschen ab).
|
|
264
|
+
|
|
265
|
+
## License terms
|
|
266
|
+
|
|
267
|
+
Die Nutzung von LayoutBridge for Adobe InDesign® richtet sich nach den
|
|
268
|
+
Lizenzbedingungen (EULA). Maßgeblich ist die deutsche Fassung.
|
|
269
|
+
|
|
270
|
+
- Deutsch: https://mcp-schnittstellen.de/layoutbridge/lizenzbedingungen.html
|
|
271
|
+
- English: https://mcp-interfaces.com/layoutbridge/license.html
|
|
272
|
+
|
|
273
|
+
Der Server nennt die Adresse in seiner Startzeile und in jeder Antwort der
|
|
274
|
+
Fehlerart `license` (`error.details.license_terms`).
|
|
275
|
+
|
|
276
|
+
## Privacy Policy
|
|
277
|
+
|
|
278
|
+
Welche Daten der Server verarbeitet – Lizenzprüfung beim Zahlungsdienst,
|
|
279
|
+
Protokoll auf dem eigenen Rechner, nichts weiter – steht in der
|
|
280
|
+
Datenschutzerklärung des Produkts:
|
|
281
|
+
|
|
282
|
+
- Deutsch: https://mcp-schnittstellen.de/layoutbridge/datenschutz.html
|
|
283
|
+
- English: https://mcp-interfaces.com/layoutbridge/privacy.html
|
|
284
|
+
|
|
285
|
+
Die Lizenzprüfung ruft den Zahlungsdienst Polar auf; dessen
|
|
286
|
+
Datenschutzerklärung: https://polar.sh/legal/privacy.
|
|
287
|
+
|
|
288
|
+
## Support
|
|
289
|
+
|
|
290
|
+
Fragen und Fehlermeldungen an **kontakt@mcp-interfaces.com**. Wir antworten
|
|
291
|
+
an Werktagen, angestrebt innerhalb von zwei Werktagen. Hilfreich sind:
|
|
292
|
+
Werkzeugname, Fehlertext im Wortlaut, Zeitpunkt, InDesign-Version und
|
|
293
|
+
Betriebssystem. Schicken Sie uns **nie Ihren Lizenzschlüssel**.
|
|
294
|
+
|
|
295
|
+
Eine kopierte Fehlermeldung kann Dateinamen und den Ordnerweg unterhalb
|
|
296
|
+
Ihres Benutzerverzeichnisses sowie Bezeichnungen aus dem Dokument
|
|
297
|
+
(Seiten, Rahmen, Formate) enthalten – keinen Benutzernamen, keinen
|
|
298
|
+
Dokumenttext, keinen Lizenzschlüssel. Fehlerkorrekturen werden
|
|
299
|
+
schnellstmöglich umgesetzt.
|
|
300
|
+
|
|
301
|
+
## Third-party notices
|
|
302
|
+
|
|
303
|
+
Das Paket enthält Software Dritter (Laufzeitabhängigkeiten einschließlich
|
|
304
|
+
transitiver Pakete). Name, Version, Lizenz, Urheberzeile und vollständiger
|
|
305
|
+
Lizenztext je Paket stehen in `THIRD-PARTY-NOTICES.md` (im npm-Paket und im
|
|
306
|
+
Installationspaket enthalten).
|
|
307
|
+
|
|
308
|
+
## Versionen und Changelog
|
|
309
|
+
|
|
310
|
+
Ein Release im Monat mit Katalog der neuen Funktionen; Fehlerkorrekturen
|
|
311
|
+
werden schnellstmöglich und unabhängig davon umgesetzt. Alle Änderungen
|
|
312
|
+
stehen in `CHANGELOG.md` (im Paket enthalten). Innerhalb einer
|
|
313
|
+
Hauptversion bleiben Werkzeugnamen, Parameter und Rückgabefelder stabil;
|
|
314
|
+
Ergänzungen sind additiv.
|
|
315
|
+
|
|
316
|
+
## Lizenz
|
|
317
|
+
|
|
318
|
+
Proprietär, alle Rechte vorbehalten. Siehe `LICENSE`.
|