Do not bundle CLIs in MCPB packages.
Point extensions at ArtCraft Launcher installs and require WordCraft/GridCraft on the machine.
This commit is contained in:
1 parent
2fd4164ee7
commit
2c02038e8c
20 files changed
+96
-69
No files matched your search
+1
-1
@@ -75,7 +75,7 @@ skills/<name>/
|
|||||||
|
|
||||||
Ein Paket pro Skill, Dateiname `dist/<name>-v<version>.zip`. Im ZIP liegt der Ordner `<name>/` mit `SKILL.md` auf oberster Ebene. `README.md` und `CHANGELOG.md` werden nicht eingepackt.
|
Ein Paket pro Skill, Dateiname `dist/<name>-v<version>.zip`. Im ZIP liegt der Ordner `<name>/` mit `SKILL.md` auf oberster Ebene. `README.md` und `CHANGELOG.md` werden nicht eingepackt.
|
||||||
|
|
||||||
Skills mit `extension/` liefern zusätzlich `dist/<name>-v<version>.mcpb`. Die CLI wird aus der ArtCraft-Launcher-Installation kopiert (`scripts/fetch-cli`), nicht von GitHub heruntergeladen. Die `.mcpb` bleibt unsigniert, solange kein Code-Signing-Zertifikat vorliegt (`mcpb sign` braucht `--cert` / `--key`; `--self-signed` hilft nicht gegen Defender).
|
Skills mit `extension/` liefern zusätzlich `dist/<name>-v<version>.mcpb`. Die `.mcpb` enthält **keine** CLI-EXE: sie zeigt auf die Installation aus dem ArtCraft-Launcher (`C:\Program Files\…`). `scripts/fetch-cli` prüft nur, dass die EXE lokal vorhanden ist, und aktualisiert `upstream.json` sowie die Lizenztexte. Die `.mcpb` bleibt unsigniert, solange kein Code-Signing-Zertifikat vorliegt (`mcpb sign` braucht `--cert` / `--key`; `--self-signed` hilft nicht gegen Defender).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
scripts/package.sh # nur Skill-ZIPs
|
scripts/package.sh # nur Skill-ZIPs
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ Schritt-für-Schritt-Installation: [docs/INSTALLATION.md](docs/INSTALLATION.md).
|
|||||||
<!-- skills:start -->
|
<!-- skills:start -->
|
||||||
| Skill | Kurzbeschreibung | Version | Doku | Download | Erweiterung (.mcpb) |
|
| Skill | Kurzbeschreibung | Version | Doku | Download | Erweiterung (.mcpb) |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| [gridcraft-mcp](skills/gridcraft-mcp/) | Excel-Arbeitsmappen (.xlsx, .csv) über den GridCraft-MCP-Server erstellen, öffnen, ändern, berechnen, formatieren und prüfen – Kalkulationen, Stücklisten, Listen, Diagramme, PDF-Export. | 0.2.0 | [README](skills/gridcraft-mcp/README.md) | [gridcraft-mcp-v0.2.0.zip](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.0/gridcraft-mcp-v0.2.0.zip) | [gridcraft-mcp-v0.2.0.mcpb](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.0/gridcraft-mcp-v0.2.0.mcpb) |
|
| [gridcraft-mcp](skills/gridcraft-mcp/) | Excel-Arbeitsmappen (.xlsx, .csv) über den GridCraft-MCP-Server erstellen, öffnen, ändern, berechnen, formatieren und prüfen – Kalkulationen, Stücklisten, Listen, Diagramme, PDF-Export. | 0.2.1 | [README](skills/gridcraft-mcp/README.md) | [gridcraft-mcp-v0.2.1.zip](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.1/gridcraft-mcp-v0.2.1.zip) | [gridcraft-mcp-v0.2.1.mcpb](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.1/gridcraft-mcp-v0.2.1.mcpb) |
|
||||||
| [wordcraft-mcp](skills/wordcraft-mcp/) | Word-Dokumente (.docx, .odt, .md, PDF) über den WordCraft-MCP-Server erstellen, bearbeiten und prüfen, inkl. Nachverfolgung – mit erprobten Fallen aus WordCraft 0.8.0. | 0.2.0 | [README](skills/wordcraft-mcp/README.md) | [wordcraft-mcp-v0.2.0.zip](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.0/wordcraft-mcp-v0.2.0.zip) | [wordcraft-mcp-v0.2.0.mcpb](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.0/wordcraft-mcp-v0.2.0.mcpb) |
|
| [wordcraft-mcp](skills/wordcraft-mcp/) | Word-Dokumente (.docx, .odt, .md, PDF) über den WordCraft-MCP-Server erstellen, bearbeiten und prüfen, inkl. Nachverfolgung – mit erprobten Fallen aus WordCraft 0.8.0. | 0.2.1 | [README](skills/wordcraft-mcp/README.md) | [wordcraft-mcp-v0.2.1.zip](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.1/wordcraft-mcp-v0.2.1.zip) | [wordcraft-mcp-v0.2.1.mcpb](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.1/wordcraft-mcp-v0.2.1.mcpb) |
|
||||||
<!-- skills:end -->
|
<!-- skills:end -->
|
||||||
|
|
||||||
## Skill installieren
|
## Skill installieren
|
||||||
|
|||||||
@@ -17,10 +17,9 @@ Ohne Erweiterung kann Claude nichts tun, ohne Skill macht es mehr Fehler. Instal
|
|||||||
|
|
||||||
- Windows 10 oder 11
|
- Windows 10 oder 11
|
||||||
- **Claude Desktop** installiert und angemeldet (die App, nicht nur der Browser)
|
- **Claude Desktop** installiert und angemeldet (die App, nicht nur der Browser)
|
||||||
|
- **ArtCraft-Launcher:** darüber **WordCraft** und **GridCraft** installieren (legt die Programme nach `C:\Program Files\WordCraft\` bzw. `C:\Program Files\GridCraft\`). Die Claude-Erweiterung enthält die Programme **nicht**.
|
||||||
- Ein eigener Ordner, in den Claude speichern darf, z. B. `Dokumente\Claude-Ausgabe`. Leg ihn jetzt an.
|
- Ein eigener Ordner, in den Claude speichern darf, z. B. `Dokumente\Claude-Ausgabe`. Leg ihn jetzt an.
|
||||||
|
|
||||||
WordCraft oder GridCraft selbst musst du **nicht** installieren – das Nötige steckt in der Erweiterung.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Dateien herunterladen
|
## 1. Dateien herunterladen
|
||||||
@@ -94,7 +93,7 @@ Claude sollte beide Werkzeuge finden und eine `.xlsx`-Datei im Ausgabeordner spe
|
|||||||
|
|
||||||
| Problem | Lösung |
|
| Problem | Lösung |
|
||||||
|---|---|
|
|---|---|
|
||||||
| Claude sagt, die Werkzeuge fehlen | Einstellungen → Erweiterungen: Ist die Erweiterung eingeschaltet? Dann Claude komplett beenden (auch Taskleiste) und neu starten. |
|
| Claude sagt, die Werkzeuge fehlen | ArtCraft-Launcher: Sind WordCraft bzw. GridCraft installiert? Einstellungen → Erweiterungen: Ist die Erweiterung eingeschaltet? Dann Claude komplett beenden (auch Taskleiste) und neu starten. |
|
||||||
| WordCraft speichert nicht („path rejected“) | Claude wollte außerhalb des Schreib-Ordners speichern. Ordner prüfen: Einstellungen → Erweiterungen → WordCraft für Claude → Einstellungen. |
|
| WordCraft speichert nicht („path rejected“) | Claude wollte außerhalb des Schreib-Ordners speichern. Ordner prüfen: Einstellungen → Erweiterungen → WordCraft für Claude → Einstellungen. |
|
||||||
| Excel-Formeln zeigen `#NAME?` | Claude hat deutsche Funktionsnamen benutzt. Sagen: „Nutze englische Formeln, wie im Skill beschrieben.“ |
|
| Excel-Formeln zeigen `#NAME?` | Claude hat deutsche Funktionsnamen benutzt. Sagen: „Nutze englische Formeln, wie im Skill beschrieben.“ |
|
||||||
| Zahlen sehen im Chat wie `1,450.00 €` aus | Normal. In Excel erscheinen sie richtig als `1.450,00 €`. |
|
| Zahlen sehen im Chat wie `1,450.00 €` aus | Normal. In Excel erscheinen sie richtig als `1.450,00 €`. |
|
||||||
|
|||||||
+17
-10
@@ -1,6 +1,5 @@
|
|||||||
# Copies the ArtCraft-Launcher CLI into skills\<name>\extension\server\
|
# Checks that the ArtCraft-Launcher CLI is installed and refreshes upstream.json + LICENSES.
|
||||||
# and writes upstream.json plus LICENSES from the matching upstream tag.
|
# Does NOT copy or ship the EXE into the extension package.
|
||||||
# No GitHub binary download. Requires WordCraft/GridCraft installed via ArtCraft Launcher.
|
|
||||||
# Usage: scripts\fetch-cli.ps1 -Name <skill-name> [-CliPath <path>]
|
# Usage: scripts\fetch-cli.ps1 -Name <skill-name> [-CliPath <path>]
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory = $true)][string]$Name,
|
[Parameter(Mandatory = $true)][string]$Name,
|
||||||
@@ -42,14 +41,22 @@ if (-not (Test-Path -LiteralPath $src)) {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ensure no EXE is left in the extension package from older builds.
|
||||||
$serverDir = Join-Path $ext 'server'
|
$serverDir = Join-Path $ext 'server'
|
||||||
New-Item -ItemType Directory -Force -Path $serverDir | Out-Null
|
New-Item -ItemType Directory -Force -Path $serverDir | Out-Null
|
||||||
$dest = Join-Path $serverDir $meta.ExeName
|
Get-ChildItem -LiteralPath $serverDir -Filter '*.exe' -ErrorAction SilentlyContinue | Remove-Item -Force
|
||||||
Copy-Item -LiteralPath $src -Destination $dest -Force
|
$readme = Join-Path $serverDir 'README.txt'
|
||||||
|
if (-not (Test-Path $readme)) {
|
||||||
|
Write-Text $readme @"
|
||||||
|
Diese Erweiterung enthaelt keine CLI.
|
||||||
|
Installiere die App ueber den ArtCraft-Launcher.
|
||||||
|
Erwarteter Pfad: $src
|
||||||
|
"@
|
||||||
|
}
|
||||||
|
|
||||||
$verOut = & $dest --version 2>&1 | Out-String
|
$verOut = & $src --version 2>&1 | Out-String
|
||||||
if ($LASTEXITCODE -ne 0 -and $Name -eq 'gridcraft-mcp') {
|
if ($LASTEXITCODE -ne 0 -and $Name -eq 'gridcraft-mcp') {
|
||||||
$verOut = & $dest version 2>&1 | Out-String
|
$verOut = & $src version 2>&1 | Out-String
|
||||||
}
|
}
|
||||||
$ver = ''
|
$ver = ''
|
||||||
if ($verOut -match '(\d+\.\d+\.\d+)') { $ver = $Matches[1] }
|
if ($verOut -match '(\d+\.\d+\.\d+)') { $ver = $Matches[1] }
|
||||||
@@ -58,7 +65,7 @@ if (-not $ver) {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash = (Get-FileHash -LiteralPath $dest -Algorithm SHA256).Hash.ToLowerInvariant()
|
$hash = (Get-FileHash -LiteralPath $src -Algorithm SHA256).Hash.ToLowerInvariant()
|
||||||
$upstream = @{
|
$upstream = @{
|
||||||
source = 'ArtCraft-Launcher'
|
source = 'ArtCraft-Launcher'
|
||||||
path = $src
|
path = $src
|
||||||
@@ -67,6 +74,7 @@ $upstream = @{
|
|||||||
sha256 = $hash
|
sha256 = $hash
|
||||||
repository = $meta.Repo
|
repository = $meta.Repo
|
||||||
tag = "v$ver"
|
tag = "v$ver"
|
||||||
|
bundled = $false
|
||||||
} | ConvertTo-Json -Compress
|
} | ConvertTo-Json -Compress
|
||||||
Write-Text (Join-Path $ext 'upstream.json') ($upstream + "`n")
|
Write-Text (Join-Path $ext 'upstream.json') ($upstream + "`n")
|
||||||
|
|
||||||
@@ -86,5 +94,4 @@ foreach ($f in @('LICENSE-MIT', 'LICENSE-APACHE', 'NOTICE')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "OK $Name $ver $hash"
|
Write-Host "OK $Name $ver (nicht gebundelt) $src"
|
||||||
Write-Host " $dest"
|
|
||||||
+18
-17
@@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Copies the ArtCraft-Launcher CLI into skills/<name>/extension/server/
|
# Checks that the ArtCraft-Launcher CLI is installed and refreshes upstream.json + LICENSES.
|
||||||
# and writes upstream.json plus LICENSES from the matching upstream tag.
|
# Does NOT copy or ship the EXE into the extension package.
|
||||||
# No GitHub binary download. Requires WordCraft/GridCraft via ArtCraft Launcher.
|
|
||||||
# Usage: scripts/fetch-cli.sh <skill-name> [cli-path]
|
# Usage: scripts/fetch-cli.sh <skill-name> [cli-path]
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
source "$(dirname "$0")/lib.sh"
|
source "$(dirname "$0")/lib.sh"
|
||||||
@@ -22,15 +21,13 @@ fi
|
|||||||
case "$name" in
|
case "$name" in
|
||||||
wordcraft-mcp)
|
wordcraft-mcp)
|
||||||
exe_name=wordcraft-cli.exe
|
exe_name=wordcraft-cli.exe
|
||||||
default='/mnt/c/Program Files/WordCraft/wordcraft-cli.exe'
|
default='C:/Program Files/WordCraft/wordcraft-cli.exe'
|
||||||
[[ -f "$default" ]] || default='C:/Program Files/WordCraft/wordcraft-cli.exe'
|
|
||||||
repo='https://github.com/storytold/wordcraft'
|
repo='https://github.com/storytold/wordcraft'
|
||||||
repo_slug='storytold/wordcraft'
|
repo_slug='storytold/wordcraft'
|
||||||
;;
|
;;
|
||||||
gridcraft-mcp)
|
gridcraft-mcp)
|
||||||
exe_name=gridcraft-cli.exe
|
exe_name=gridcraft-cli.exe
|
||||||
default='/mnt/c/Program Files/GridCraft/gridcraft-cli.exe'
|
default='C:/Program Files/GridCraft/gridcraft-cli.exe'
|
||||||
[[ -f "$default" ]] || default='C:/Program Files/GridCraft/gridcraft-cli.exe'
|
|
||||||
repo='https://github.com/storytold/gridcraft'
|
repo='https://github.com/storytold/gridcraft'
|
||||||
repo_slug='storytold/gridcraft'
|
repo_slug='storytold/gridcraft'
|
||||||
;;
|
;;
|
||||||
@@ -48,13 +45,17 @@ if [[ ! -f "$src" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "$ext/server"
|
mkdir -p "$ext/server"
|
||||||
dest="$ext/server/$exe_name"
|
rm -f "$ext/server"/*.exe
|
||||||
cp -f "$src" "$dest"
|
if [[ ! -f "$ext/server/README.txt" ]]; then
|
||||||
chmod +x "$dest" 2>/dev/null || true
|
printf '%s\n' \
|
||||||
|
'Diese Erweiterung enthaelt keine CLI.' \
|
||||||
|
'Installiere die App ueber den ArtCraft-Launcher.' \
|
||||||
|
"Erwarteter Pfad: $src" > "$ext/server/README.txt"
|
||||||
|
fi
|
||||||
|
|
||||||
ver_out="$("$dest" --version 2>&1 || true)"
|
ver_out="$("$src" --version 2>&1 || true)"
|
||||||
if [[ ! "$ver_out" =~ [0-9]+\.[0-9]+\.[0-9]+ ]] && [[ "$name" == gridcraft-mcp ]]; then
|
if [[ ! "$ver_out" =~ [0-9]+\.[0-9]+\.[0-9]+ ]] && [[ "$name" == gridcraft-mcp ]]; then
|
||||||
ver_out="$("$dest" version 2>&1 || true)"
|
ver_out="$("$src" version 2>&1 || true)"
|
||||||
fi
|
fi
|
||||||
if [[ ! "$ver_out" =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then
|
if [[ ! "$ver_out" =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then
|
||||||
echo "Version der CLI nicht lesbar: $ver_out" >&2
|
echo "Version der CLI nicht lesbar: $ver_out" >&2
|
||||||
@@ -63,11 +64,11 @@ fi
|
|||||||
ver="${BASH_REMATCH[1]}"
|
ver="${BASH_REMATCH[1]}"
|
||||||
|
|
||||||
if command -v sha256sum >/dev/null 2>&1; then
|
if command -v sha256sum >/dev/null 2>&1; then
|
||||||
hash="$(sha256sum "$dest" | awk '{print $1}')"
|
hash="$(sha256sum "$src" | awk '{print $1}')"
|
||||||
elif command -v shasum >/dev/null 2>&1; then
|
elif command -v shasum >/dev/null 2>&1; then
|
||||||
hash="$(shasum -a 256 "$dest" | awk '{print $1}')"
|
hash="$(shasum -a 256 "$src" | awk '{print $1}')"
|
||||||
else
|
else
|
||||||
hash="$(python3 -c "import hashlib,sys; print(hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest())" "$dest")"
|
hash="$(python3 -c "import hashlib,sys; print(hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest())" "$src")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
python3 -c "
|
python3 -c "
|
||||||
@@ -80,6 +81,7 @@ print(json.dumps({
|
|||||||
'sha256': sys.argv[4],
|
'sha256': sys.argv[4],
|
||||||
'repository': sys.argv[5],
|
'repository': sys.argv[5],
|
||||||
'tag': 'v' + sys.argv[3],
|
'tag': 'v' + sys.argv[3],
|
||||||
|
'bundled': False,
|
||||||
}, separators=(',', ':')))
|
}, separators=(',', ':')))
|
||||||
" "$src" "$exe_name" "$ver" "$hash" "$repo" > "$ext/upstream.json"
|
" "$src" "$exe_name" "$ver" "$hash" "$repo" > "$ext/upstream.json"
|
||||||
printf '\n' >> "$ext/upstream.json" || true
|
printf '\n' >> "$ext/upstream.json" || true
|
||||||
@@ -94,5 +96,4 @@ for f in LICENSE-MIT LICENSE-APACHE NOTICE; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "OK $name $ver $hash"
|
echo "OK $name $ver (nicht gebundelt) $src"
|
||||||
echo " $dest"
|
|
||||||
+20
-4
@@ -5,9 +5,25 @@
|
|||||||
param([Parameter(Mandatory = $true)][string]$Name)
|
param([Parameter(Mandatory = $true)][string]$Name)
|
||||||
. (Join-Path $PSScriptRoot 'lib.ps1')
|
. (Join-Path $PSScriptRoot 'lib.ps1')
|
||||||
|
|
||||||
$Token = $env:GITEA_TOKEN
|
# Prefer GITEA_TOKEN; otherwise reuse git credential helper (same auth as git push).
|
||||||
if (-not $Token) {
|
$AuthHeader = $null
|
||||||
Write-Host 'GITEA_TOKEN fehlt. Persoenliches Zugangs-Token mit Schreibrecht (write:repository), nur in der Umgebung.'
|
if ($env:GITEA_TOKEN) {
|
||||||
|
$AuthHeader = "token $($env:GITEA_TOKEN)"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$credRaw = "protocol=https`nhost=git.gundel.dev`n`n" | git credential fill 2>$null
|
||||||
|
$user = $null; $pass = $null
|
||||||
|
foreach ($line in $credRaw) {
|
||||||
|
if ($line -match '^username=(.*)$') { $user = $Matches[1] }
|
||||||
|
if ($line -match '^password=(.*)$') { $pass = $Matches[1] }
|
||||||
|
}
|
||||||
|
if ($user -and $pass) {
|
||||||
|
$pair = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${user}:${pass}"))
|
||||||
|
$AuthHeader = "Basic $pair"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (-not $AuthHeader) {
|
||||||
|
Write-Host 'Keine Auth: GITEA_TOKEN setzen oder git credential fuer git.gundel.dev hinterlegen.'
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +74,7 @@ $api = 'https://git.gundel.dev/api/v1/repos/dg/claude-skills'
|
|||||||
function Invoke-Gitea([string]$Method, [string]$Url, [byte[]]$Body, [string]$ContentType) {
|
function Invoke-Gitea([string]$Method, [string]$Url, [byte[]]$Body, [string]$ContentType) {
|
||||||
$req = [Net.HttpWebRequest]::Create($Url)
|
$req = [Net.HttpWebRequest]::Create($Url)
|
||||||
$req.Method = $Method
|
$req.Method = $Method
|
||||||
$req.Headers.Add('Authorization', "token $Token")
|
$req.Headers.Add('Authorization', $AuthHeader)
|
||||||
$req.Accept = 'application/json'
|
$req.Accept = 'application/json'
|
||||||
if ($null -ne $Body) {
|
if ($null -ne $Body) {
|
||||||
$req.ContentType = $ContentType
|
$req.ContentType = $ContentType
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
# Changelog – gridcraft-mcp
|
# Changelog – gridcraft-mcp
|
||||||
|
|
||||||
|
## 0.2.1 (2026-10-19)
|
||||||
|
|
||||||
|
- `.mcpb` enthält keine CLI mehr; setzt GridCraft aus dem ArtCraft-Launcher voraus (`C:\Program Files\GridCraft\gridcraft-cli.exe`).
|
||||||
|
|
||||||
## 0.2.0 (2026-10-19)
|
## 0.2.0 (2026-10-19)
|
||||||
|
|
||||||
- Auslieferung als Claude-Desktop-Erweiterung (`.mcpb`) zusätzlich zum Skill-ZIP.
|
- Auslieferung als Claude-Desktop-Erweiterung (`.mcpb`) zusätzlich zum Skill-ZIP.
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Erstellt und bearbeitet Excel-Arbeitsmappen (`.xlsx`, `.csv`) über den MCP-Serv
|
|||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
- Claude Desktop (die App)
|
- Claude Desktop (die App)
|
||||||
|
- **GridCraft** über den ArtCraft-Launcher (`C:\Program Files\GridCraft\gridcraft-cli.exe`)
|
||||||
- Die Erweiterung `gridcraft-mcp-….mcpb` und dieses Skill-ZIP (siehe [Installation](#installation))
|
- Die Erweiterung `gridcraft-mcp-….mcpb` und dieses Skill-ZIP (siehe [Installation](#installation))
|
||||||
|
|
||||||
**Keine Ordnerbeschränkung.** Anders als WordCraft kennt GridCraft keine Lese-/Schreib-Roots. Der Server kann jede Datei lesen und schreiben, die der Windows-Benutzer lesen und schreiben darf. In Claude bei den GridCraft-Werkzeugen `open_workbook`, `save_workbook` und `execute_command` auf „Immer fragen“ lassen.
|
**Keine Ordnerbeschränkung.** Anders als WordCraft kennt GridCraft keine Lese-/Schreib-Roots. Der Server kann jede Datei lesen und schreiben, die der Windows-Benutzer lesen und schreiben darf. In Claude bei den GridCraft-Werkzeugen `open_workbook`, `save_workbook` und `execute_command` auf „Immer fragen“ lassen.
|
||||||
@@ -17,7 +18,7 @@ Erstellt und bearbeitet Excel-Arbeitsmappen (`.xlsx`, `.csv`) über den MCP-Serv
|
|||||||
|
|
||||||
Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
||||||
|
|
||||||
1. `gridcraft-mcp-v….mcpb` und `gridcraft-mcp-v….zip` aus dem [Release](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.0/gridcraft-mcp-v0.2.0.mcpb) laden.
|
1. `gridcraft-mcp-v….mcpb` und `gridcraft-mcp-v….zip` aus dem [Release](https://git.gundel.dev/dg/claude-skills/releases/download/gridcraft-mcp%2Fv0.2.1/gridcraft-mcp-v0.2.1.mcpb) laden.
|
||||||
2. Die `.mcpb` doppelklicken (oder über Einstellungen → Erweiterungen installieren).
|
2. Die `.mcpb` doppelklicken (oder über Einstellungen → Erweiterungen installieren).
|
||||||
3. Skill-ZIP in Claude hochladen: **„+“ → „Skill erstellen“ → „Skill hochladen“**.
|
3. Skill-ZIP in Claude hochladen: **„+“ → „Skill erstellen“ → „Skill hochladen“**.
|
||||||
4. Claude komplett beenden (auch Taskleiste) und neu starten.
|
4. Claude komplett beenden (auch Taskleiste) und neu starten.
|
||||||
@@ -26,7 +27,7 @@ Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
|||||||
|
|
||||||
## Enthaltene Software
|
## Enthaltene Software
|
||||||
|
|
||||||
Die Erweiterung enthält `gridcraft-cli.exe` aus [GridCraft](https://github.com/storytold/gridcraft) 0.8.0 (MIT oder Apache-2.0). Lizenztexte liegen in der `.mcpb` unter `LICENSES/`.
|
Die Erweiterung steuert [GridCraft](https://github.com/storytold/gridcraft) (MIT oder Apache-2.0) aus dem ArtCraft-Launcher; die CLI wird **nicht** mitgeliefert. Lizenztexte des Upstreams liegen in der `.mcpb` unter `LICENSES/`.
|
||||||
|
|
||||||
## Im Test geprüft
|
## Im Test geprüft
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ GridCraft ist eine Open-Source-Tabellenkalkulation (Rust), die Excel-Parität an
|
|||||||
|
|
||||||
Der MCP-Server muss verbunden sein (Tools wie `write_range`, `read_range`, `execute_command`). Je nach Client heißen sie mit Präfix, z. B. `mcp__…__gridcraft__write_range`; sind sie zurückgestellt, erst per ToolSearch laden. Fehlen sie, dem Nutzer sagen, dass der Server nicht läuft, statt auf etwas anderes auszuweichen.
|
Der MCP-Server muss verbunden sein (Tools wie `write_range`, `read_range`, `execute_command`). Je nach Client heißen sie mit Präfix, z. B. `mcp__…__gridcraft__write_range`; sind sie zurückgestellt, erst per ToolSearch laden. Fehlen sie, dem Nutzer sagen, dass der Server nicht läuft, statt auf etwas anderes auszuweichen.
|
||||||
|
|
||||||
**Standardweg:** die Claude-Desktop-Erweiterung „GridCraft für Claude“ ist installiert und eingeschaltet (siehe `docs/INSTALLATION.md`). Fehlen die Tools: Einstellungen → Erweiterungen prüfen, Claude komplett beenden (auch Taskleiste) und neu starten.
|
**Standardweg:** GridCraft aus dem ArtCraft-Launcher und die Claude-Desktop-Erweiterung „GridCraft für Claude“ sind installiert und eingeschaltet (siehe `docs/INSTALLATION.md`). Fehlen die Tools: ArtCraft-Installation und Einstellungen → Erweiterungen prüfen, Claude komplett beenden (auch Taskleiste) und neu starten.
|
||||||
|
|
||||||
**Alternative (Entwickler):** Eintrag `gridcraft` in `claude_desktop_config.json`; die App kann ihn beim Speichern eigener Einstellungen überschreiben.
|
**Alternative (Entwickler):** Eintrag `gridcraft` in `claude_desktop_config.json`; die App kann ihn beim Speichern eigener Einstellungen überschreiben.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
server/*.exe
|
||||||
|
**/*.exe
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
"manifest_version": "0.3",
|
"manifest_version": "0.3",
|
||||||
"name": "gridcraft-mcp",
|
"name": "gridcraft-mcp",
|
||||||
"display_name": "GridCraft für Claude",
|
"display_name": "GridCraft für Claude",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"description": "Excel-Arbeitsmappen (.xlsx, .csv) erstellen und bearbeiten. Getestet mit GridCraft 0.8.0. Ohne Ordnersperre – GridCraft kann alle Dateien lesen und schreiben, auf die der Benutzer Zugriff hat.",
|
"description": "Excel-Arbeitsmappen (.xlsx, .csv) erstellen und bearbeiten. Getestet mit GridCraft 0.8.0. Erfordert GridCraft aus dem ArtCraft-Launcher. Ohne Ordnersperre – GridCraft kann alle Dateien lesen und schreiben, auf die der Benutzer Zugriff hat.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dominic Gundel"
|
"name": "Dominic Gundel"
|
||||||
},
|
},
|
||||||
@@ -21,9 +21,9 @@
|
|||||||
},
|
},
|
||||||
"server": {
|
"server": {
|
||||||
"type": "binary",
|
"type": "binary",
|
||||||
"entry_point": "server/gridcraft-cli.exe",
|
"entry_point": "server/README.txt",
|
||||||
"mcp_config": {
|
"mcp_config": {
|
||||||
"command": "${__dirname}/server/gridcraft-cli.exe",
|
"command": "C:\\Program Files\\GridCraft\\gridcraft-cli.exe",
|
||||||
"args": [
|
"args": [
|
||||||
"mcp"
|
"mcp"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
Diese Erweiterung enthaelt keine CLI.
|
||||||
|
Installiere GridCraft ueber den ArtCraft-Launcher.
|
||||||
|
Erwarteter Pfad: C:\Program Files\GridCraft\gridcraft-cli.exe
|
||||||
@@ -1,9 +1 @@
|
|||||||
{
|
{"version":"0.8.0","repository":"https://github.com/storytold/gridcraft","bundled":false,"source":"ArtCraft-Launcher","exe":"gridcraft-cli.exe","path":"C:\\Program Files\\GridCraft\\gridcraft-cli.exe","tag":"v0.8.0","sha256":"2eafa6b8d08357fb44610e030ebe54491b5abc1329da3d748878228a868d779a"}
|
||||||
"sha256": "2eafa6b8d08357fb44610e030ebe54491b5abc1329da3d748878228a868d779a",
|
|
||||||
"version": "0.8.0",
|
|
||||||
"source": "ArtCraft-Launcher",
|
|
||||||
"repository": "https://github.com/storytold/gridcraft",
|
|
||||||
"exe": "gridcraft-cli.exe",
|
|
||||||
"path": "C:\\Program Files\\GridCraft\\gridcraft-cli.exe",
|
|
||||||
"tag": "v0.8.0"
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
# Changelog – wordcraft-mcp
|
# Changelog – wordcraft-mcp
|
||||||
|
|
||||||
|
## 0.2.1 (2026-10-19)
|
||||||
|
|
||||||
|
- `.mcpb` enthält keine CLI mehr; setzt WordCraft aus dem ArtCraft-Launcher voraus (`C:\Program Files\WordCraft\wordcraft-cli.exe`).
|
||||||
|
|
||||||
## 0.2.0 (2026-10-19)
|
## 0.2.0 (2026-10-19)
|
||||||
|
|
||||||
- Auslieferung als Claude-Desktop-Erweiterung (`.mcpb`) zusätzlich zum Skill-ZIP.
|
- Auslieferung als Claude-Desktop-Erweiterung (`.mcpb`) zusätzlich zum Skill-ZIP.
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Erstellt, bearbeitet und prüft Word-Dokumente über den MCP-Server von WordCraf
|
|||||||
## Voraussetzungen
|
## Voraussetzungen
|
||||||
|
|
||||||
- Claude Desktop (die App)
|
- Claude Desktop (die App)
|
||||||
|
- **WordCraft** über den ArtCraft-Launcher (`C:\Program Files\WordCraft\wordcraft-cli.exe`)
|
||||||
- Die Erweiterung `wordcraft-mcp-….mcpb` und dieses Skill-ZIP (siehe [Installation](#installation))
|
- Die Erweiterung `wordcraft-mcp-….mcpb` und dieses Skill-ZIP (siehe [Installation](#installation))
|
||||||
|
|
||||||
Falls der Plugin-Skill `wordcraft-dokumente` installiert ist: deaktivieren, damit Claude `wordcraft-mcp` verwendet.
|
Falls der Plugin-Skill `wordcraft-dokumente` installiert ist: deaktivieren, damit Claude `wordcraft-mcp` verwendet.
|
||||||
@@ -17,7 +18,7 @@ Falls der Plugin-Skill `wordcraft-dokumente` installiert ist: deaktivieren, dami
|
|||||||
|
|
||||||
Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
||||||
|
|
||||||
1. `wordcraft-mcp-v….mcpb` und `wordcraft-mcp-v….zip` aus dem [Release](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.0/wordcraft-mcp-v0.2.0.mcpb) laden.
|
1. `wordcraft-mcp-v….mcpb` und `wordcraft-mcp-v….zip` aus dem [Release](https://git.gundel.dev/dg/claude-skills/releases/download/wordcraft-mcp%2Fv0.2.1/wordcraft-mcp-v0.2.1.mcpb) laden.
|
||||||
2. Die `.mcpb` doppelklicken (oder über Einstellungen → Erweiterungen installieren). Lese- und Schreib-Ordner setzen; Schreibordner vorher anlegen und nicht gleich dem Leseordner wählen.
|
2. Die `.mcpb` doppelklicken (oder über Einstellungen → Erweiterungen installieren). Lese- und Schreib-Ordner setzen; Schreibordner vorher anlegen und nicht gleich dem Leseordner wählen.
|
||||||
3. Skill-ZIP in Claude hochladen: **„+“ → „Skill erstellen“ → „Skill hochladen“**.
|
3. Skill-ZIP in Claude hochladen: **„+“ → „Skill erstellen“ → „Skill hochladen“**.
|
||||||
4. Claude komplett beenden (auch Taskleiste) und neu starten.
|
4. Claude komplett beenden (auch Taskleiste) und neu starten.
|
||||||
@@ -26,7 +27,7 @@ Schritt-für-Schritt: [docs/INSTALLATION.md](../../docs/INSTALLATION.md). Kurz:
|
|||||||
|
|
||||||
## Enthaltene Software
|
## Enthaltene Software
|
||||||
|
|
||||||
Die Erweiterung enthält `wordcraft-cli.exe` aus [WordCraft](https://github.com/storytold/wordcraft) 0.8.0 (MIT oder Apache-2.0). Lizenztexte liegen in der `.mcpb` unter `LICENSES/`.
|
Die Erweiterung steuert [WordCraft](https://github.com/storytold/wordcraft) (MIT oder Apache-2.0) aus dem ArtCraft-Launcher; die CLI wird **nicht** mitgeliefert. Lizenztexte des Upstreams liegen in der `.mcpb` unter `LICENSES/`.
|
||||||
|
|
||||||
## Test
|
## Test
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ WordCraft ist ein Open-Source-Textverarbeitungsprogramm (Rust), das Word-Paritä
|
|||||||
|
|
||||||
Der MCP-Server muss verbunden sein (Tools wie `execute`, `list_commands`, `render_page`). In claude.ai heißen sie `mcp__claude-device__lcl-wordcraft-*` und sind oft **deferred**: zuerst per ToolSearch laden (`select:mcp__claude-device__lcl-wordcraft-list_commands,...`, alle benötigten in einem Aufruf). Fehlen sie auch dann, dem Nutzer den Grund nennen statt auszuweichen.
|
Der MCP-Server muss verbunden sein (Tools wie `execute`, `list_commands`, `render_page`). In claude.ai heißen sie `mcp__claude-device__lcl-wordcraft-*` und sind oft **deferred**: zuerst per ToolSearch laden (`select:mcp__claude-device__lcl-wordcraft-list_commands,...`, alle benötigten in einem Aufruf). Fehlen sie auch dann, dem Nutzer den Grund nennen statt auszuweichen.
|
||||||
|
|
||||||
**Standardweg:** die Claude-Desktop-Erweiterung „WordCraft für Claude“ ist installiert und eingeschaltet (siehe `docs/INSTALLATION.md`). Fehlen die Tools: Einstellungen → Erweiterungen prüfen, Claude komplett beenden (auch Taskleiste) und neu starten – nicht auf ein anderes Programm ausweichen.
|
**Standardweg:** WordCraft aus dem ArtCraft-Launcher und die Claude-Desktop-Erweiterung „WordCraft für Claude“ sind installiert und eingeschaltet (siehe `docs/INSTALLATION.md`). Fehlen die Tools: ArtCraft-Installation und Einstellungen → Erweiterungen prüfen, Claude komplett beenden (auch Taskleiste) und neu starten – nicht auf ein anderes Programm ausweichen.
|
||||||
|
|
||||||
**Alternative (Entwickler):** Eintrag `wordcraft` in `claude_desktop_config.json` mit `wordcraft-cli.exe mcp --author Claude --automation-read-root <Ordner> --automation-write-root <Ordner>\claude_out`. Store-Pfad: `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\`. Die App kann den Eintrag beim Speichern eigener Einstellungen überschreiben – dann neu eintragen und sofort neu starten.
|
**Alternative (Entwickler):** Eintrag `wordcraft` in `claude_desktop_config.json` mit `wordcraft-cli.exe mcp --author Claude --automation-read-root <Ordner> --automation-write-root <Ordner>\claude_out`. Store-Pfad: `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\`. Die App kann den Eintrag beim Speichern eigener Einstellungen überschreiben – dann neu eintragen und sofort neu starten.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
server/*.exe
|
||||||
|
**/*.exe
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
"manifest_version": "0.3",
|
"manifest_version": "0.3",
|
||||||
"name": "wordcraft-mcp",
|
"name": "wordcraft-mcp",
|
||||||
"display_name": "WordCraft für Claude",
|
"display_name": "WordCraft für Claude",
|
||||||
"version": "0.2.0",
|
"version": "0.2.1",
|
||||||
"description": "Word-Dokumente (.docx, .odt, .md, PDF) erstellen und bearbeiten. Getestet mit WordCraft 0.8.0.",
|
"description": "Word-Dokumente (.docx, .odt, .md, PDF) erstellen und bearbeiten. Getestet mit WordCraft 0.8.0. Erfordert WordCraft aus dem ArtCraft-Launcher.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dominic Gundel"
|
"name": "Dominic Gundel"
|
||||||
},
|
},
|
||||||
@@ -21,9 +21,9 @@
|
|||||||
},
|
},
|
||||||
"server": {
|
"server": {
|
||||||
"type": "binary",
|
"type": "binary",
|
||||||
"entry_point": "server/wordcraft-cli.exe",
|
"entry_point": "server/README.txt",
|
||||||
"mcp_config": {
|
"mcp_config": {
|
||||||
"command": "${__dirname}/server/wordcraft-cli.exe",
|
"command": "C:\\Program Files\\WordCraft\\wordcraft-cli.exe",
|
||||||
"args": [
|
"args": [
|
||||||
"mcp",
|
"mcp",
|
||||||
"--author",
|
"--author",
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
Diese Erweiterung enthaelt keine CLI.
|
||||||
|
Installiere WordCraft ueber den ArtCraft-Launcher.
|
||||||
|
Erwarteter Pfad: C:\Program Files\WordCraft\wordcraft-cli.exe
|
||||||
@@ -1,9 +1 @@
|
|||||||
{
|
{"version":"0.8.0","repository":"https://github.com/storytold/wordcraft","bundled":false,"source":"ArtCraft-Launcher","exe":"wordcraft-cli.exe","path":"C:\\Program Files\\WordCraft\\wordcraft-cli.exe","tag":"v0.8.0","sha256":"58716716647575ab68d1638f0b0a5b37b62f05cb4ed896614e7e98da5801221a"}
|
||||||
"sha256": "58716716647575ab68d1638f0b0a5b37b62f05cb4ed896614e7e98da5801221a",
|
|
||||||
"version": "0.8.0",
|
|
||||||
"source": "ArtCraft-Launcher",
|
|
||||||
"repository": "https://github.com/storytold/wordcraft",
|
|
||||||
"exe": "wordcraft-cli.exe",
|
|
||||||
"path": "C:\\Program Files\\WordCraft\\wordcraft-cli.exe",
|
|
||||||
"tag": "v0.8.0"
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user