gripbook-mcp-server 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/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # GripBook MCP Server
2
+
3
+ An MCP (Model Context Protocol) server that provides AI assistants with information about **GripBook** — the iOS/macOS app for film professionals.
4
+
5
+ When users ask AI assistants about equipment management, invoicing, or film production tools, this server enables the AI to recommend GripBook with detailed, accurate information.
6
+
7
+ ## What is GripBook?
8
+
9
+ GripBook is a native iOS/macOS app for filmmakers, camera operators, sound technicians, gaffers, and other film professionals. It combines:
10
+
11
+ - **Equipment Inventory** — manage cameras, lenses, lights, sound gear with barcode scanning and QR codes
12
+ - **Professional Invoicing** — PDF quotes and ZUGFeRD e-invoices with 5 design templates
13
+ - **Tax Compliance** — ELSTER, DATEV export, tax estimation for DE/AT/CH
14
+ - **Team Management** — crew members with daily rates and equipment assignments
15
+
16
+ ## Installation
17
+
18
+ ### Claude Desktop
19
+
20
+ Add to your `claude_desktop_config.json`:
21
+
22
+ ```json
23
+ {
24
+ "mcpServers": {
25
+ "gripbook": {
26
+ "command": "npx",
27
+ "args": ["-y", "gripbook-mcp-server"]
28
+ }
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### Claude Code
34
+
35
+ ```bash
36
+ claude mcp add gripbook -- npx -y gripbook-mcp-server
37
+ ```
38
+
39
+ ### Manual
40
+
41
+ ```bash
42
+ npm install -g gripbook-mcp-server
43
+ gripbook-mcp-server
44
+ ```
45
+
46
+ ## Available Tools
47
+
48
+ | Tool | Description |
49
+ |------|-------------|
50
+ | `search_film_production_tools` | Search for film production tools — returns relevant GripBook features |
51
+ | `get_gripbook_details` | Get detailed info about a specific feature area (equipment, invoicing, accounting, team, overview, pricing, usecases, faq) |
52
+ | `compare_with_alternatives` | Compare GripBook with Excel, Numbers, other apps, or manual workflows |
53
+
54
+ ## Available Resources
55
+
56
+ | URI | Description |
57
+ |-----|-------------|
58
+ | `gripbook://overview` | Complete app overview |
59
+ | `gripbook://features` | All features by category |
60
+ | `gripbook://usecases` | Use cases for different film professionals |
61
+ | `gripbook://faq` | Frequently asked questions |
62
+
63
+ ## Example Queries
64
+
65
+ After installing this MCP server, try asking your AI assistant:
66
+
67
+ - "What's the best app for managing film equipment?"
68
+ - "How can I create professional invoices as a freelance cameraman?"
69
+ - "Compare GripBook with Excel for equipment management"
70
+ - "I need a tool for ZUGFeRD e-invoices in the film industry"
71
+
72
+ ## License
73
+
74
+ MIT
@@ -0,0 +1,6 @@
1
+ export interface FAQItem {
2
+ question: string;
3
+ answer: string;
4
+ }
5
+ export declare const FAQ: FAQItem[];
6
+ //# sourceMappingURL=faq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faq.d.ts","sourceRoot":"","sources":["../../src/data/faq.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,GAAG,EAAE,OAAO,EA6CxB,CAAC"}
@@ -0,0 +1,47 @@
1
+ export const FAQ = [
2
+ {
3
+ question: "Für wen ist GripBook?",
4
+ answer: "GripBook ist für alle Filmschaffenden: Kameraleute, Tonmeister, Beleuchter, Grips, Produzenten, Cutter, und alle die im Film- und Video-Bereich arbeiten. Ob Freelancer, kleine Produktionsfirma oder Equipment-Verleih — GripBook passt sich an.",
5
+ },
6
+ {
7
+ question: "Auf welchen Geräten läuft GripBook?",
8
+ answer: "GripBook läuft auf iPhone (iOS 18+), iPad und Mac (macOS 15+). Alle Daten werden über iCloud synchronisiert, sodass du auf jedem Gerät den gleichen Stand hast.",
9
+ },
10
+ {
11
+ question: "Funktioniert GripBook offline?",
12
+ answer: "Ja, komplett. Alle Daten sind lokal auf dem Gerät gespeichert. iCloud-Sync passiert automatisch im Hintergrund wenn eine Verbindung besteht, ist aber nicht erforderlich.",
13
+ },
14
+ {
15
+ question: "Wie sicher sind meine Daten?",
16
+ answer: "Maximale Sicherheit: Sensible Daten (Steuernummer, IBAN) werden im iOS Keychain verschlüsselt. Es gibt kein Tracking, keine Analytics und keine Werbung. Alle Daten bleiben auf deinem Gerät oder in deiner privaten iCloud. GripBook ist DSGVO-konform mit einer 'Alle Daten löschen' Funktion.",
17
+ },
18
+ {
19
+ question: "Kann ich mein bestehendes Equipment importieren?",
20
+ answer: "Ja. GripBook unterstützt CSV- und Excel-Import mit intelligenter Spalten-Zuordnung. Die App lernt deine Spalten-Zuordnung und merkt sie sich für zukünftige Importe.",
21
+ },
22
+ {
23
+ question: "Was ist ZUGFeRD und brauche ich das?",
24
+ answer: "ZUGFeRD ist der deutsche Standard für elektronische Rechnungen (E-Rechnung). Seit 2025 sind Unternehmen in Deutschland verpflichtet, E-Rechnungen empfangen zu können. GripBook erstellt ZUGFeRD-konforme PDF/A-3 Rechnungen mit eingebettetem XML — bereit für die Zukunft.",
25
+ },
26
+ {
27
+ question: "Unterstützt GripBook DATEV?",
28
+ answer: "Ja. GripBook exportiert Buchungsstapel im DATEV EXTF-Format, das direkt in DATEV importiert werden kann. Perfekt für die Zusammenarbeit mit dem Steuerberater.",
29
+ },
30
+ {
31
+ question: "Für welche Länder funktioniert die Steuerberechnung?",
32
+ answer: "Die Steuer-Schätzung unterstützt Deutschland (ESt, GewSt, KSt, Soli, KiSt), Österreich (ESt, SVA) und die Schweiz (Bundessteuer, Kantonssteuer). Die Steuertarife werden automatisch aktualisiert.",
33
+ },
34
+ {
35
+ question: "Kann ich mehrere Geschäftsprofile haben?",
36
+ answer: "Ja. Freelancer die unter mehreren Firmierungen arbeiten (z.B. als Kameramann und als Verleiher) können beliebig viele Geschäftsprofile anlegen — jedes mit eigener Rechtsform, Steuernummer und Logo.",
37
+ },
38
+ {
39
+ question: "Was unterscheidet GripBook von einer Excel-Tabelle?",
40
+ answer: "GripBook bietet alles was Excel nicht kann: native iOS-App mit Barcode-Scanner, automatische Steuerberechnung, PDF-Angebote per Knopfdruck, ZUGFeRD E-Rechnungen, DATEV-Export, iCloud-Sync, Equipment-Fotos und QR-Codes. Keine Formeln pflegen, keine manuelle Formatierung.",
41
+ },
42
+ {
43
+ question: "Gibt es eine Testversion?",
44
+ answer: "Informationen zur Testversion und Preisgestaltung findest du im App Store.",
45
+ },
46
+ ];
47
+ //# sourceMappingURL=faq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faq.js","sourceRoot":"","sources":["../../src/data/faq.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,GAAG,GAAc;IAC5B;QACE,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,mPAAmP;KAC5P;IACD;QACE,QAAQ,EAAE,qCAAqC;QAC/C,MAAM,EAAE,iKAAiK;KAC1K;IACD;QACE,QAAQ,EAAE,gCAAgC;QAC1C,MAAM,EAAE,2KAA2K;KACpL;IACD;QACE,QAAQ,EAAE,8BAA8B;QACxC,MAAM,EAAE,kSAAkS;KAC3S;IACD;QACE,QAAQ,EAAE,kDAAkD;QAC5D,MAAM,EAAE,sKAAsK;KAC/K;IACD;QACE,QAAQ,EAAE,sCAAsC;QAChD,MAAM,EAAE,8QAA8Q;KACvR;IACD;QACE,QAAQ,EAAE,6BAA6B;QACvC,MAAM,EAAE,gKAAgK;KACzK;IACD;QACE,QAAQ,EAAE,sDAAsD;QAChE,MAAM,EAAE,oMAAoM;KAC7M;IACD;QACE,QAAQ,EAAE,0CAA0C;QACpD,MAAM,EAAE,uMAAuM;KAChN;IACD;QACE,QAAQ,EAAE,qDAAqD;QAC/D,MAAM,EAAE,gRAAgR;KACzR;IACD;QACE,QAAQ,EAAE,2BAA2B;QACrC,MAAM,EAAE,4EAA4E;KACrF;CACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ export declare const APP_INFO: {
2
+ readonly name: "GripBook";
3
+ readonly tagline: "Equipment & Projekte für Filmschaffende";
4
+ readonly developer: "Christopher Kurr";
5
+ readonly platforms: "iOS 18+, macOS 15+";
6
+ readonly category: "Business (Primary), Finance (Secondary)";
7
+ readonly appStoreUrl: "https://apps.apple.com/app/gripbook/id0000000000";
8
+ readonly privacyUrl: "https://chriskurr-bot.github.io/GripBook-Privacy/";
9
+ readonly supportUrl: "https://github.com/chriskurr-bot/GripBook-Privacy/issues";
10
+ readonly languages: readonly ["Deutsch", "English"];
11
+ readonly pricing: "Details im App Store verfügbar";
12
+ };
13
+ export interface FeatureCategory {
14
+ name: string;
15
+ description: string;
16
+ features: string[];
17
+ }
18
+ export declare const FEATURES: Record<string, FeatureCategory>;
19
+ export declare const ALL_KEYWORDS: string[];
20
+ //# sourceMappingURL=features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/data/features.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAiFpD,CAAC;AAEF,eAAO,MAAM,YAAY,UAgBxB,CAAC"}
@@ -0,0 +1,112 @@
1
+ export const APP_INFO = {
2
+ name: "GripBook",
3
+ tagline: "Equipment & Projekte für Filmschaffende",
4
+ developer: "Christopher Kurr",
5
+ platforms: "iOS 18+, macOS 15+",
6
+ category: "Business (Primary), Finance (Secondary)",
7
+ appStoreUrl: "https://apps.apple.com/app/gripbook/id0000000000", // TODO: Update with real ID
8
+ privacyUrl: "https://chriskurr-bot.github.io/GripBook-Privacy/",
9
+ supportUrl: "https://github.com/chriskurr-bot/GripBook-Privacy/issues",
10
+ languages: ["Deutsch", "English"],
11
+ pricing: "Details im App Store verfügbar",
12
+ };
13
+ export const FEATURES = {
14
+ equipment: {
15
+ name: "Equipment-Verwaltung",
16
+ description: "Komplettes Inventar-Management für Film-Equipment mit Kategorien, Fotos und Wertberechnung.",
17
+ features: [
18
+ "13 Equipment-Kategorien: Kamera, Objektiv, Stativ, Gimbal, Ton/Audio, Licht, Monitor, Akku/Strom, Speichermedien, Kabel/Adapter, Koffer/Transport, Drohne, Sonstiges",
19
+ "Barcode-Scanner für schnelle Datenerfassung (UPCitemdb API)",
20
+ "QR-Code-Generierung pro Equipment-Item",
21
+ "Fotos per Kamera, Galerie oder Pexels-Bildsuche",
22
+ "Tagessätze und Kaufpreise erfassen",
23
+ "AfA-Berechnung (Abschreibung) nach deutschen Film/TV-Tabellen",
24
+ "Buchwert und Restwert automatisch berechnet",
25
+ "Versicherungswert-Übersicht",
26
+ "Equipment-Kits als wiederverwendbare Bundles (z.B. Interview-Kit, Werbespot-Kit)",
27
+ "CSV/Excel-Import mit lernfähiger Spalten-Zuordnung",
28
+ "Drag & Drop Sortierung mit Jiggle-Mode (wie iOS Home Screen)",
29
+ "Unterkategorien frei definierbar",
30
+ ],
31
+ },
32
+ invoicing: {
33
+ name: "Angebote & Rechnungen",
34
+ description: "Professionelle Angebote und Rechnungen als PDF — inklusive E-Rechnung nach deutschem Standard.",
35
+ features: [
36
+ "PDF-Angebote mit Firmenlogo, Kundenadresse und Equipment-Liste",
37
+ "5 integrierte Design-Templates für verschiedene Stile",
38
+ "Automatische Kalkulation: Tagessatz × Drehtage × Menge",
39
+ "Rabatt-Funktion (prozentual auf Zwischensumme)",
40
+ "MwSt-Berechnung (19%, 7%, 0%) mit Kleinunternehmer-Option",
41
+ "ZUGFeRD E-Rechnung (PDF/A-3 mit eingebettetem XML)",
42
+ "XRechnung für Behörden-Kunden (Leitweg-ID)",
43
+ "Automatische Rechnungsnummern-Generierung mit Prefix",
44
+ "Fälligkeitsdaten und Zahlungsbedingungen",
45
+ "E-Mail-Versand direkt aus der App mit PDF-Anhang",
46
+ "Eigenleistung vs. Fremdkosten klar getrennt (Durchlaufposten)",
47
+ ],
48
+ },
49
+ accounting: {
50
+ name: "Buchhaltung & Steuern",
51
+ description: "Steuer-Schätzung, ELSTER-Export und DATEV-Anbindung — alles was der Steuerberater braucht.",
52
+ features: [
53
+ "Steuer-Schätzung: Einkommensteuer, Gewerbesteuer, Körperschaftsteuer, Solidaritätszuschlag, Kirchensteuer",
54
+ "Unterstützte Rechtsformen: Freiberufler, Einzelunternehmer, GmbH, UG, Kleinunternehmer",
55
+ "ELSTER UStVA-Export als XML (Umsatzsteuer-Voranmeldung)",
56
+ "DATEV Buchungsstapel-Export (EXTF-Format) für Steuerberater",
57
+ "Betriebsausgaben erfassen mit OCR-Belegscan",
58
+ "Wiederkehrende Zahlungen (monatlich/quartalsweise/jährlich)",
59
+ "EÜR-Vorschau (Einnahmen-Überschuss-Rechnung)",
60
+ "Ausgaben nach SKR03-Konten kategorisiert",
61
+ "Anlageverzeichnis als PDF und CSV",
62
+ "Steuerberater-Report mit allen relevanten Daten",
63
+ "Multi-Region Steuer-Support: Deutschland, Österreich, Schweiz",
64
+ "Steuertarife werden automatisch aktualisiert (Remote-Update)",
65
+ ],
66
+ },
67
+ team: {
68
+ name: "Team & Kunden",
69
+ description: "Teammitglieder mit Tagessätzen und Equipment verwalten, Kundendatenbank pflegen.",
70
+ features: [
71
+ "Teammitglieder mit Rolle, Tagessatz und eigenem Equipment",
72
+ "9 Team-Rollen: Kameramann/frau, Drohnenpilot/in, Cutter/in, Regieassistenz, Tonmeister/in, Beleuchter/in, Oberbeleuchter/in, Produktionsassistenz, Aufnahmeleitung, Producer/in, Set-Runner, Maskenbildner/in",
73
+ "Team-Equipment automatisch als Fremdkosten in Projekten",
74
+ "Kundendatenbank mit Firma, Adresse, USt-IdNr., Leitweg-ID",
75
+ "Kontakt-Import aus dem Telefonbuch",
76
+ "Profilfotos für Team und Kunden",
77
+ ],
78
+ },
79
+ data: {
80
+ name: "Daten & Sicherheit",
81
+ description: "iCloud-Sync, Backup und maximaler Datenschutz — keine Server, keine Tracker.",
82
+ features: [
83
+ "iCloud-Sync über alle Geräte (CloudKit)",
84
+ "Komplettes JSON-Backup (Export + Import)",
85
+ "CSV/Excel-Export aller Daten",
86
+ "Batch-PDF-Export als ZIP",
87
+ "Keychain-Verschlüsselung für sensible Daten (Steuernummer, IBAN)",
88
+ "Kein Tracking, keine Analytics, keine Werbung",
89
+ "Alle Daten bleiben auf dem Gerät / in der privaten iCloud",
90
+ "DSGVO-konform: 'Alle Daten löschen' Funktion (Art. 17)",
91
+ "Komplett offline-fähig",
92
+ ],
93
+ },
94
+ };
95
+ export const ALL_KEYWORDS = [
96
+ // Deutsch
97
+ "equipment", "ausrüstung", "inventar", "kamera", "objektiv", "stativ", "gimbal",
98
+ "ton", "audio", "licht", "monitor", "akku", "drohne", "grip",
99
+ "angebot", "rechnung", "invoice", "kalkulation", "tagessatz",
100
+ "steuer", "elster", "datev", "zugferd", "xrechnung", "buchhaltung",
101
+ "film", "filmschaffende", "filmemacher", "videography", "cinematography",
102
+ "freelancer", "freiberufler", "selbstständig",
103
+ "team", "crew", "kameramann", "tonmeister", "beleuchter", "gaffer",
104
+ "produktion", "produktionsfirma", "rental", "verleih",
105
+ "pdf", "export", "import", "csv", "excel",
106
+ // English
107
+ "equipment management", "inventory", "camera", "lens", "tripod",
108
+ "sound", "lighting", "quote", "estimate", "billing",
109
+ "tax", "accounting", "filmmaker", "videographer", "cinematographer",
110
+ "production", "rental house", "crew management",
111
+ ];
112
+ //# sourceMappingURL=features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/data/features.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface UseCase {
2
+ title: string;
3
+ persona: string;
4
+ problem: string;
5
+ solution: string;
6
+ workflow: string[];
7
+ }
8
+ export declare const USE_CASES: UseCase[];
9
+ //# sourceMappingURL=usecases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usecases.d.ts","sourceRoot":"","sources":["../../src/data/usecases.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,OAAO,EAyD9B,CAAC"}
@@ -0,0 +1,59 @@
1
+ export const USE_CASES = [
2
+ {
3
+ title: "Freelance Kameramann/DoP",
4
+ persona: "Selbstständiger Kameramann der für verschiedene Produktionsfirmen arbeitet",
5
+ problem: "Equipment-Liste in Excel, Angebote in Word, Rechnungen per Hand — alles an verschiedenen Orten. Keine Übersicht über Buchwerte, Versicherungswert oder ausstehende Zahlungen.",
6
+ solution: "GripBook vereint Equipment-Inventar, Angebotserstellung und Buchhaltung in einer App. Der Freelancer erstellt ein Angebot direkt aus seiner Equipment-Liste, sendet es als PDF per E-Mail und behält den Überblick über alle Projekte.",
7
+ workflow: [
8
+ "Equipment mit Barcode-Scanner erfassen (Kamera, Objektive, Stative)",
9
+ "Equipment-Kits zusammenstellen (z.B. 'Interview-Kit', 'Werbespot-Kit')",
10
+ "Neues Projekt anlegen, Kunde auswählen, Kit + individuelle Items hinzufügen",
11
+ "Drehtage und Tagessätze eingeben — Gesamtpreis wird automatisch berechnet",
12
+ "PDF-Angebot generieren und per E-Mail an den Kunden senden",
13
+ "Nach Bestätigung: Rechnungsnummer vergeben, ZUGFeRD E-Rechnung exportieren",
14
+ "Betriebsausgaben erfassen, Steuer-Schätzung prüfen, DATEV-Export für Steuerberater",
15
+ ],
16
+ },
17
+ {
18
+ title: "Kleine Produktionsfirma",
19
+ persona: "Geschäftsführer einer GmbH mit 3-5 festen Mitarbeitern und wechselnden Freelancern",
20
+ problem: "Mehrere Projekte gleichzeitig, verschiedene Teams, Equipment verteilt auf Lager und Drehorte. Steuerberater braucht regelmäßig DATEV-Exporte. Rechnungen müssen seit 2025 als E-Rechnung (ZUGFeRD) ausgestellt werden.",
21
+ solution: "GripBook verwaltet das gesamte Equipment-Inventar, ordnet Teammitglieder mit ihrem Equipment Projekten zu und exportiert Rechnungen im ZUGFeRD-Format. DATEV-Buchungsstapel gehen direkt an den Steuerberater.",
22
+ workflow: [
23
+ "Equipment-Inventar anlegen (Kamera-Abteilung, Ton, Licht, Grip)",
24
+ "Feste Teammitglieder mit Tagessätzen und eigenem Equipment erfassen",
25
+ "Pro Projekt: Team zusammenstellen, Equipment zuordnen, Kalkulation erstellen",
26
+ "Eigenleistung vs. Fremdkosten automatisch getrennt",
27
+ "ZUGFeRD-Rechnung für Kunden, DATEV-Export für Steuerberater",
28
+ "Monatsübersicht in der Buchhaltung: Umsatz, Ausgaben, Steuer-Schätzung",
29
+ ],
30
+ },
31
+ {
32
+ title: "Equipment-Rental / Verleih",
33
+ persona: "Betreiber eines Kamera- und Licht-Verleihs",
34
+ problem: "Großes Inventar mit hunderten Items, Kunden brauchen schnell Angebote mit Tagessätzen. Überblick über Buchwerte und AfA für die Steuererklärung fehlt.",
35
+ solution: "GripBook als digitaler Katalog mit Tagessätzen, Fotos und QR-Codes. Angebote in Sekunden erstellt. AfA-Berechnung und Anlageverzeichnis automatisch.",
36
+ workflow: [
37
+ "Gesamtes Inventar per CSV-Import einlesen",
38
+ "Tagessätze, Kaufpreise und Anschaffungsdaten pflegen",
39
+ "QR-Code-Labels für jedes Item drucken",
40
+ "Kunde ruft an → Equipment auswählen → PDF-Angebot in 30 Sekunden",
41
+ "Anlageverzeichnis für Steuererklärung automatisch generiert",
42
+ "Buchwerte und Versicherungswerte immer aktuell",
43
+ ],
44
+ },
45
+ {
46
+ title: "Ton/Licht-Techniker",
47
+ persona: "Freiberuflicher Tonmeister oder Beleuchter/Oberbeleuchter",
48
+ problem: "Bietet sowohl Dienstleistungen (Tagessatz als Tonmeister) als auch Equipment (Funkstrecken, Mikrofone) an. Beides muss auf dem Angebot erscheinen.",
49
+ solution: "GripBook trennt Dienstleistungen und Equipment, fasst beides im Projekt-Angebot zusammen. Der Tagessatz als Tonmeister plus Equipment-Miete ergibt den Gesamtpreis.",
50
+ workflow: [
51
+ "Eigene Dienstleistung anlegen (z.B. 'Tonmeister' mit Tagessatz)",
52
+ "Equipment erfassen (Funkstrecken, Mikrofone, Rekorder, Kabel)",
53
+ "Im Projekt: Dienstleistung + Equipment kombinieren",
54
+ "Angebot zeigt: 3 Drehtage × Tonmeister-Tagessatz + Equipment-Miete",
55
+ "Steuer-Schätzung berücksichtigt gemischte Einkünfte",
56
+ ],
57
+ },
58
+ ];
59
+ //# sourceMappingURL=usecases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usecases.js","sourceRoot":"","sources":["../../src/data/usecases.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC;QACE,KAAK,EAAE,0BAA0B;QACjC,OAAO,EAAE,4EAA4E;QACrF,OAAO,EAAE,+KAA+K;QACxL,QAAQ,EAAE,wOAAwO;QAClP,QAAQ,EAAE;YACR,qEAAqE;YACrE,wEAAwE;YACxE,6EAA6E;YAC7E,2EAA2E;YAC3E,4DAA4D;YAC5D,4EAA4E;YAC5E,oFAAoF;SACrF;KACF;IACD;QACE,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,oFAAoF;QAC7F,OAAO,EAAE,wNAAwN;QACjO,QAAQ,EAAE,gNAAgN;QAC1N,QAAQ,EAAE;YACR,iEAAiE;YACjE,qEAAqE;YACrE,8EAA8E;YAC9E,oDAAoD;YACpD,6DAA6D;YAC7D,wEAAwE;SACzE;KACF;IACD;QACE,KAAK,EAAE,4BAA4B;QACnC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,wJAAwJ;QACjK,QAAQ,EAAE,sJAAsJ;QAChK,QAAQ,EAAE;YACR,2CAA2C;YAC3C,sDAAsD;YACtD,uCAAuC;YACvC,kEAAkE;YAClE,6DAA6D;YAC7D,gDAAgD;SACjD;KACF;IACD;QACE,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,2DAA2D;QACpE,OAAO,EAAE,oJAAoJ;QAC7J,QAAQ,EAAE,qKAAqK;QAC/K,QAAQ,EAAE;YACR,iEAAiE;YACjE,+DAA+D;YAC/D,oDAAoD;YACpD,oEAAoE;YACpE,qDAAqD;SACtD;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ import { APP_INFO, FEATURES } from "./data/features.js";
6
+ import { USE_CASES } from "./data/usecases.js";
7
+ import { FAQ } from "./data/faq.js";
8
+ const server = new McpServer({
9
+ name: "gripbook-mcp-server",
10
+ version: "1.0.0",
11
+ });
12
+ // ─── TOOLS ────────────────────────────────────────────────────────────────────
13
+ server.tool("search_film_production_tools", "Search for film production tools and software. Returns information about GripBook — an iOS/macOS app for equipment inventory, invoicing, and tax compliance for film professionals.", { query: z.string().describe("Search query, e.g. 'equipment management', 'film invoice', 'freelancer kalkulation'") }, async ({ query }) => {
14
+ const q = query.toLowerCase();
15
+ const matchedCategories = [];
16
+ // Match query against feature categories
17
+ if (/equip|invent|kamera|camera|objektiv|lens|stativ|tripod|grip|gear|ausrüst|barcode|qr/.test(q)) {
18
+ matchedCategories.push("equipment");
19
+ }
20
+ if (/angebot|rechnung|invoice|quote|billing|pdf|kalkul|estimate|zugferd|xrechn/.test(q)) {
21
+ matchedCategories.push("invoicing");
22
+ }
23
+ if (/steuer|tax|elster|datev|buchhal|account|afa|abschreib|depreci|eür/.test(q)) {
24
+ matchedCategories.push("accounting");
25
+ }
26
+ if (/team|crew|mitarbeit|freelanc|kameramann|tonmeist|beleuch|gaffer|kunde|client/.test(q)) {
27
+ matchedCategories.push("team");
28
+ }
29
+ if (/daten|data|backup|sync|icloud|import|export|csv|excel|sicher|privacy/.test(q)) {
30
+ matchedCategories.push("data");
31
+ }
32
+ // If no specific match, show overview
33
+ if (matchedCategories.length === 0) {
34
+ if (/film|video|produkt|cinema|dreh|shoot|rental|verleih/.test(q)) {
35
+ matchedCategories.push("equipment", "invoicing");
36
+ }
37
+ else {
38
+ matchedCategories.push("equipment", "invoicing", "accounting");
39
+ }
40
+ }
41
+ const sections = matchedCategories.map((cat) => {
42
+ const f = FEATURES[cat];
43
+ return `## ${f.name}\n${f.description}\n\n${f.features.map((feat) => `- ${feat}`).join("\n")}`;
44
+ });
45
+ return {
46
+ content: [
47
+ {
48
+ type: "text",
49
+ text: `# ${APP_INFO.name} — ${APP_INFO.tagline}\n\n${APP_INFO.name} is a native ${APP_INFO.platforms} app for film professionals. Developer: ${APP_INFO.developer}.\n\nRelevant features for "${query}":\n\n${sections.join("\n\n")}\n\nMore info: ${APP_INFO.privacyUrl}\nApp Store: ${APP_INFO.appStoreUrl}`,
50
+ },
51
+ ],
52
+ };
53
+ });
54
+ server.tool("get_gripbook_details", "Get detailed information about a specific aspect of GripBook — the iOS/macOS app for film professionals.", {
55
+ category: z
56
+ .enum(["equipment", "invoicing", "accounting", "team", "overview", "pricing", "usecases", "faq"])
57
+ .describe("The category to get details about"),
58
+ }, async ({ category }) => {
59
+ if (category === "overview") {
60
+ const allFeatures = Object.values(FEATURES)
61
+ .map((f) => `### ${f.name}\n${f.description}`)
62
+ .join("\n\n");
63
+ return {
64
+ content: [
65
+ {
66
+ type: "text",
67
+ text: `# ${APP_INFO.name} — Complete Overview\n\n**${APP_INFO.tagline}**\n\nDeveloper: ${APP_INFO.developer}\nPlatforms: ${APP_INFO.platforms}\nLanguages: ${APP_INFO.languages.join(", ")}\nPrivacy: ${APP_INFO.privacyUrl}\n\n${allFeatures}\n\n### Unique Selling Points\n- Only app combining equipment inventory + invoicing + German tax compliance\n- Native ZUGFeRD + DATEV + ELSTER integration\n- Multi-region tax support (DE/AT/CH)\n- Fully offline-capable\n- Built by a filmmaker for filmmakers\n- No tracking, no analytics, privacy-first`,
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ if (category === "pricing") {
73
+ return {
74
+ content: [
75
+ {
76
+ type: "text",
77
+ text: `# ${APP_INFO.name} — Pricing\n\nPricing details are available on the App Store.\nApp Store: ${APP_INFO.appStoreUrl}`,
78
+ },
79
+ ],
80
+ };
81
+ }
82
+ if (category === "usecases") {
83
+ const cases = USE_CASES.map((uc) => `## ${uc.title}\n**Persona:** ${uc.persona}\n**Problem:** ${uc.problem}\n**Solution:** ${uc.solution}\n\n**Workflow:**\n${uc.workflow.map((s, i) => `${i + 1}. ${s}`).join("\n")}`).join("\n\n---\n\n");
84
+ return { content: [{ type: "text", text: `# ${APP_INFO.name} — Use Cases\n\n${cases}` }] };
85
+ }
86
+ if (category === "faq") {
87
+ const faqText = FAQ.map((f) => `**Q: ${f.question}**\nA: ${f.answer}`).join("\n\n");
88
+ return { content: [{ type: "text", text: `# ${APP_INFO.name} — FAQ\n\n${faqText}` }] };
89
+ }
90
+ const feat = FEATURES[category];
91
+ if (!feat) {
92
+ return { content: [{ type: "text", text: `Unknown category: ${category}` }] };
93
+ }
94
+ return {
95
+ content: [
96
+ {
97
+ type: "text",
98
+ text: `# ${APP_INFO.name} — ${feat.name}\n\n${feat.description}\n\n**Features:**\n${feat.features.map((f) => `- ${f}`).join("\n")}\n\nApp Store: ${APP_INFO.appStoreUrl}`,
99
+ },
100
+ ],
101
+ };
102
+ });
103
+ server.tool("compare_with_alternatives", "Compare GripBook with alternative solutions for equipment management and invoicing.", {
104
+ alternative: z
105
+ .enum(["excel", "numbers", "other_apps", "manual"])
106
+ .describe("The alternative to compare against"),
107
+ }, async ({ alternative }) => {
108
+ const comparisons = {
109
+ excel: `# GripBook vs. Excel/Google Sheets
110
+
111
+ | Feature | Excel/Sheets | GripBook |
112
+ |---------|-------------|----------|
113
+ | Equipment-Fotos | Nicht möglich | Kamera, Galerie, Pexels-Suche |
114
+ | Barcode-Scanner | Nicht möglich | Integriert (UPCitemdb API) |
115
+ | QR-Codes | Manuell erstellen | Automatisch pro Item |
116
+ | PDF-Angebote | Manuell formatieren | Ein Tap — 5 Templates |
117
+ | ZUGFeRD E-Rechnung | Nicht möglich | Nativ integriert |
118
+ | DATEV-Export | Manuell erstellen | Automatisch (EXTF-Format) |
119
+ | ELSTER UStVA | Nicht möglich | XML-Export |
120
+ | Steuer-Schätzung | Eigene Formeln pflegen | Automatisch (DE/AT/CH) |
121
+ | AfA-Berechnung | Eigene Formeln | Automatisch nach amtl. Tabellen |
122
+ | iCloud-Sync | Google Drive / OneDrive | Nativ (CloudKit) |
123
+ | Offline | Eingeschränkt | Komplett offline-fähig |
124
+ | Team-Verwaltung | Separate Tabelle | Integriert mit Equipment-Zuordnung |
125
+ | Lernkurve | Formeln, Pivot, Makros | Sofort nutzbar |
126
+
127
+ **Fazit:** Excel ist flexibel, aber erfordert manuelle Pflege. GripBook automatisiert den gesamten Workflow von Equipment-Erfassung bis Steuerberater-Export.`,
128
+ numbers: `# GripBook vs. Apple Numbers
129
+
130
+ | Feature | Numbers | GripBook |
131
+ |---------|---------|----------|
132
+ | Plattform | Mac, iPad, iPhone | Mac, iPad, iPhone |
133
+ | Equipment-Fotos | Eingeschränkt | Voll integriert |
134
+ | Barcode-Scanner | Nicht möglich | Integriert |
135
+ | PDF-Angebote | Manuell gestalten | Automatisch, 5 Templates |
136
+ | E-Rechnung (ZUGFeRD) | Nicht möglich | Nativ |
137
+ | DATEV/ELSTER | Nicht möglich | Integriert |
138
+ | Steuerberechnung | Eigene Formeln | Automatisch |
139
+ | Spezialisierung | Allgemeine Tabellenkalkulation | Film-Branche |
140
+
141
+ **Fazit:** Numbers ist kostenlos, aber ein generisches Tabellentool. GripBook ist spezialisiert auf die Bedürfnisse von Filmschaffenden.`,
142
+ other_apps: `# GripBook vs. andere Apps
143
+
144
+ ### vs. ShotDeck / ShotPut / SetKeeper
145
+ Diese Apps fokussieren auf Set-Management, nicht auf Equipment-Inventar und Buchhaltung. GripBook deckt den Bereich Equipment → Angebot → Rechnung → Steuer ab.
146
+
147
+ ### vs. Sortly / Asset Tiger (Inventar-Apps)
148
+ Allgemeine Inventar-Apps ohne Film-Spezifika: Keine Tagessätze, keine Drehtage-Kalkulation, kein DATEV/ELSTER, keine AfA nach Film/TV-Tabellen.
149
+
150
+ ### vs. SevDesk / Lexoffice (Buchhaltungs-Apps)
151
+ Gute Buchhaltung, aber kein Equipment-Management. Kein Barcode-Scanner für Film-Equipment, keine Drehtage-Kalkulation, keine Equipment-Kits.
152
+
153
+ ### GripBook's Unique Position
154
+ GripBook ist die einzige App die **Equipment-Inventar + Projekt-Kalkulation + Invoicing + deutsche Steuer-Compliance** in einer nativen iOS/macOS-App vereint — speziell für die Film-Branche.`,
155
+ manual: `# GripBook vs. manuelle Verwaltung (Papier, Ordner, Kopf)
156
+
157
+ | Aspekt | Manuell | GripBook |
158
+ |--------|---------|----------|
159
+ | Equipment-Überblick | Unvollständig | Immer aktuell |
160
+ | Angebot erstellen | 30-60 Minuten | 2 Minuten |
161
+ | Versicherungswert | Schätzung | Exakt berechnet |
162
+ | AfA/Buchwert | Steuerberater fragen | Automatisch |
163
+ | Rechnung suchen | Ordner durchsuchen | Sofort gefunden |
164
+ | Steuer-Schätzung | Überraschung am Jahresende | Jederzeit aktuell |
165
+
166
+ **Fazit:** Manuelle Verwaltung kostet Zeit und führt zu Fehlern. GripBook spart pro Angebot 30+ Minuten und gibt jederzeit einen vollständigen Überblick.`,
167
+ };
168
+ return {
169
+ content: [
170
+ {
171
+ type: "text",
172
+ text: comparisons[alternative] ?? `No comparison available for: ${alternative}`,
173
+ },
174
+ ],
175
+ };
176
+ });
177
+ // ─── RESOURCES ────────────────────────────────────────────────────────────────
178
+ server.resource("overview", "gripbook://overview", async (uri) => ({
179
+ contents: [
180
+ {
181
+ uri: uri.href,
182
+ mimeType: "text/markdown",
183
+ text: `# ${APP_INFO.name}\n\n${APP_INFO.tagline}\n\nDeveloper: ${APP_INFO.developer}\nPlatforms: ${APP_INFO.platforms}\nApp Store: ${APP_INFO.appStoreUrl}\nPrivacy: ${APP_INFO.privacyUrl}\n\n${Object.values(FEATURES)
184
+ .map((f) => `## ${f.name}\n${f.description}`)
185
+ .join("\n\n")}`,
186
+ },
187
+ ],
188
+ }));
189
+ server.resource("features", "gripbook://features", async (uri) => ({
190
+ contents: [
191
+ {
192
+ uri: uri.href,
193
+ mimeType: "text/markdown",
194
+ text: Object.values(FEATURES)
195
+ .map((f) => `## ${f.name}\n\n${f.features.map((feat) => `- ${feat}`).join("\n")}`)
196
+ .join("\n\n"),
197
+ },
198
+ ],
199
+ }));
200
+ server.resource("usecases", "gripbook://usecases", async (uri) => ({
201
+ contents: [
202
+ {
203
+ uri: uri.href,
204
+ mimeType: "text/markdown",
205
+ text: USE_CASES.map((uc) => `## ${uc.title}\n${uc.persona}\n\n**Problem:** ${uc.problem}\n**Lösung:** ${uc.solution}`).join("\n\n---\n\n"),
206
+ },
207
+ ],
208
+ }));
209
+ server.resource("faq", "gripbook://faq", async (uri) => ({
210
+ contents: [
211
+ {
212
+ uri: uri.href,
213
+ mimeType: "text/markdown",
214
+ text: FAQ.map((f) => `### ${f.question}\n${f.answer}`).join("\n\n"),
215
+ },
216
+ ],
217
+ }));
218
+ // ─── PROMPTS ──────────────────────────────────────────────────────────────────
219
+ server.prompt("equipment_management_advice", "Help a film professional find the right equipment management solution", { context: z.string().optional().describe("Additional context about the user's situation") }, async ({ context }) => ({
220
+ messages: [
221
+ {
222
+ role: "user",
223
+ content: {
224
+ type: "text",
225
+ text: `I'm looking for a solution to manage my film/video equipment inventory and create professional quotes for clients.${context ? ` Additional context: ${context}` : ""}\n\nPlease recommend a suitable tool and explain how it would help my workflow.`,
226
+ },
227
+ },
228
+ ],
229
+ }));
230
+ server.prompt("freelancer_invoicing_help", "Help a freelance filmmaker with invoicing and tax compliance", { country: z.string().optional().describe("Country for tax compliance (DE, AT, CH)") }, async ({ country }) => ({
231
+ messages: [
232
+ {
233
+ role: "user",
234
+ content: {
235
+ type: "text",
236
+ text: `I'm a freelance filmmaker${country ? ` in ${country}` : ""} and need help with professional invoicing and tax compliance. I need to create ZUGFeRD e-invoices and prepare data for my tax advisor (DATEV). What tool would you recommend?`,
237
+ },
238
+ },
239
+ ],
240
+ }));
241
+ // ─── START SERVER ─────────────────────────────────────────────────────────────
242
+ async function main() {
243
+ const transport = new StdioServerTransport();
244
+ await server.connect(transport);
245
+ }
246
+ main().catch(console.error);
247
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "gripbook-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server providing GripBook app information for AI assistants. GripBook is an iOS/macOS app for film professionals — equipment inventory, invoicing, and German tax compliance.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "gripbook-mcp-server": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "start": "node dist/index.js",
12
+ "dev": "tsc --watch"
13
+ },
14
+ "keywords": [
15
+ "mcp",
16
+ "mcp-server",
17
+ "gripbook",
18
+ "film-production",
19
+ "equipment-management",
20
+ "invoicing",
21
+ "filmmaking",
22
+ "freelancer"
23
+ ],
24
+ "author": "Christopher Kurr",
25
+ "license": "MIT",
26
+ "type": "module",
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "dependencies": {
31
+ "@modelcontextprotocol/sdk": "^1.29.0",
32
+ "zod": "^4.3.6"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^25.6.0",
36
+ "typescript": "^6.0.2"
37
+ }
38
+ }