Strapi MCP Server
by misterboe
# Strapi API Dokumentation - Wichtige Erkenntnisse
## Schema & Namenskonventionen
1. Immer erst das Schema prüfen via `strapi_get_content_types`
```javascript
// Schema enthält wichtige Informationen:
{
"singularName": "article",
"pluralName": "articles",
"collectionName": "articles"
}
```
2. Endpoint-Regeln basierend auf Schema:
- REST: Nutze `pluralName` (api/articles)
- GraphQL Collection: Nutze `pluralName` (query { articles })
- GraphQL Single: Nutze `singularName` (query { article })
## Strapi 5 Spezifische Änderungen
1. **Kein `id`-Feld mehr**
2. **Keine `data`-Wrapper-Struktur**
3. **Verwendung der `documentId` als primärer Identifikator**
### Unterschiede Strapi 4 vs Strapi 5
#### Strapi 4
```graphql
query {
articles {
data {
id
attributes {
name
description
}
}
}
}
```
#### Strapi 5
```graphql
query {
articles {
documentId // Eindeutiger Identifikator
name
description
}
}
```
## URL & Webseiten Abrufen
`webtool` bietet verschiedene Methoden:
```javascript
// 1. Kompletten HTML-Content
webtool_gethtml({
url: "https://example.com",
useJavaScript: false // Optional für dynamische Seiten
})
// 2. Formatierter Markdown-Content
webtool_readpage({
url: "https://example.com",
selector: "body", // Optional für spezifischen Content
useJavaScript: false
})
```
## Bild-Upload und Verknüpfung
1. Erst Bild hochladen via `strapi_upload_media`
- URL angeben
- Metadata (name, caption, alternativeText) mitgeben
- Format optional (jpeg, png, webp)
- Bild-ID aus Response merken
2. Dann Bild mit Article verknüpfen via REST
- PUT request
- Komplette data-Struktur
- DocumentId statt numerischer ID
- Images als Array
```javascript
// 1. Bild Upload
strapi_upload_media({
url: "https://example.com/image.jpg",
metadata: {
name: "article-name",
caption: "Article Caption",
alternativeText: "Article Alt Text"
}
});
// 2. Mit Article verknüpfen
PUT api/articles/{documentId}
{
"data": {
"images": [bildId]
}
}
```
## Fehler die auftraten
1. 404 bei numerischer ID
2. 405 bei falschem Endpoint (/article statt /articles)
3. 400 wenn data-Wrapper fehlt
4. 404 wenn documentId fehlt
## GraphQL vs REST
- REST erwies sich als zuverlässiger für Updates
- Bei GraphQL gab es mehr Probleme mit der Authentifizierung
- REST erfordert die richtige Plural-Form des Endpoints (articles)
## GraphQL-Implementierung: Herausforderungen und Lösungen
### Warum GraphQL zunächst nicht funktionierte
1. **Fehlende Konfiguration**:
- Frühere Versuche schlugen fehl, weil wahrscheinlich keine explizite GraphQL-Konfiguration vorhanden war
- Mögliche Ursachen:
* Deaktivierte GraphQL-Schnittstelle
* Fehlende Berechtigungen
* Unvollständige Schema-Konfiguration
2. **Debugging-Strategie**:
```javascript
// Generische GraphQL-Abfrage, die zunächst fehlschlug
query {
articles {
id
name
}
}
```
### Erfolgreiches GraphQL-Query
3. **Funktionierendes Query-Muster**:
```graphql
query {
articles {
documentId
name
type
description
images {
url
alternativeText
}
}
}
```
### Schlüsselelemente für erfolgreiche GraphQL-Anfragen
- **Vollständige Attribut-Spezifikation**: Alle gewünschten Felder explizit auflisten
- **Kein Pagination-Parameter bei einfachen Abfragen**
- **Präzise Schreibweise der Attribute**
## Best Practices
1. Immer erst Schema prüfen
2. Bei URLs erst mit webtools den Content validieren
3. Bei IDs immer documentId verwenden
4. Bei Updates immer data-Wrapper nutzen
5. Bei Collections pluralName verwenden
6. Bei Single-Entries prüfen ob singular/plural je nach API-Typ
7. In Strapi 5: Direkte Attributabfrage ohne `data`-Wrapper
8. `documentId` statt `id` verwenden
## Debugging
1. Bei 404: Prüfen ob plural/singular Form korrekt
2. Bei 400: Prüfen ob data-Wrapper vorhanden
3. Bei Fehlern bei URLs: Erst mit webtools validieren
4. Bei ID-Problemen: Auf documentId prüfen
5. Schema und Konfiguration in Strapi überprüfen
## Erweiterte GraphQL-Tipps
- **Pagination**: Bei großen Datenmengen Pagination-Parameter verwenden
```graphql
query {
articles(pagination: { page: 1, pageSize: 10 }) {
documentId
name
}
}
```
- **Fehlerbehandlung**: Immer Fehlerbehandlung und detaillierte Fehlermeldungen beachten
## Wichtige Migrations-Hinweise für Strapi 5
- Bestehende Queries müssen angepasst werden
- `id`-Referenzen durch `documentId` ersetzen
- Keine verschachtelten `data`-Strukturen mehr
- Direkte Attributabfrage ohne Wrapper
Diese Dokumentation bietet einen umfassenden Überblick über die Verwendung der Strapi-API, mit besonderem Fokus auf die Änderungen in Strapi 5.