seo-geo
# SEO- und GEO-Werkzeuge für Claude
Ein kleiner MCP-Server, der Claude direkten Zugriff auf Ihre Google Search Console, auf IndexNow und auf eine Prüfung von Title und Meta-Description gibt. Fragen Sie Claude, welche Seiten fast auf Seite eins stehen, ob eine neue URL schon im Index ist oder ob Ihre Metadaten zu lang sind. Die Antworten beruhen auf echten Daten Ihrer Property statt auf Schätzungen.
## Tools
| Tool | Was es tut |
| --- | --- |
| `gsc_suchanfragen` | Top-Suchanfragen einer Property mit Klicks, Impressionen, Klickrate und Position für einen wählbaren Zeitraum |
| `gsc_seiten` | Top-Seiten einer Property mit denselben Kennzahlen |
| `gsc_fast_seite_eins` | Striking Distance: Suchanfragen auf Position 8 bis 20 mit genügend Impressionen, sortiert nach Potenzial (geschätzte Zusatzklicks bei 10 % Klickrate) |
| `gsc_url_pruefen` | URL Inspection: Indexierungsstatus, Abdeckung, robots.txt, letzter Crawl und Canonical-URL aus Sicht von Google |
| `indexnow_melden` | Meldet URLs (direkt oder aus einer Sitemap) per IndexNow an Bing, Yandex und weitere Suchmaschinen |
| `meta_laengen_pruefen` | Lädt eine Seite und prüft Title (maximal 60 Zeichen) und Meta-Description (70 bis 155 Zeichen) gegen die strengeren Bing-Grenzen, mit Befund und Kürzungshinweis |
`meta_laengen_pruefen` funktioniert ohne jede Einrichtung. Für die `gsc_*`-Tools brauchen Sie ein Google-Dienstkonto, für `indexnow_melden` einen IndexNow-Schlüssel.
## Voraussetzungen
- Node.js 20 oder neuer
- Eine bestätigte Property in der Google Search Console
- Ein Google-Cloud-Projekt (kostenlos), in dem Sie ein Dienstkonto anlegen dürfen
- Für IndexNow: Schreibzugriff auf das Stammverzeichnis Ihrer Website
## Installation
Laden Sie das Repository herunter oder klonen Sie es, dann im Projektordner:
```bash
npm install
npm run build
```
Der Server liegt danach unter `dist/index.js`. Ein kurzer Selbsttest ohne Zugangsdaten startet den Server, listet die Tools und prüft die Metadaten einer Seite:
```bash
npm run selbsttest https://www.example.com/
```
## Einrichtung
### 1. Dienstkonto in Google Cloud anlegen
1. In der [Google Cloud Console](https://console.cloud.google.com/) ein Projekt anlegen oder auswählen.
2. Unter "APIs und Dienste" die **Google Search Console API** aktivieren.
3. Unter "IAM und Verwaltung", "Dienstkonten" ein neues Dienstkonto anlegen. Rollen im Projekt sind nicht nötig.
4. Beim Dienstkonto unter "Schlüssel" einen neuen Schlüssel vom Typ JSON erstellen und die Datei an einem sicheren Ort außerhalb des Repositorys speichern.
Falls Ihre Organisation das Erstellen von Schlüsseln per Richtlinie blockiert, muss eine Administratorin oder ein Administrator die Richtlinie für dieses Projekt freigeben.
### 2. Dienstkonto in der Search Console freigeben
1. In der [Search Console](https://search.google.com/search-console) die Property öffnen.
2. "Einstellungen", "Nutzer und Berechtigungen", "Nutzer hinzufügen".
3. Die E-Mail-Adresse des Dienstkontos eintragen (Feld `client_email` in der JSON-Datei, endet auf `iam.gserviceaccount.com`).
4. Berechtigung "Uneingeschränkt" wählen. Leistungsdaten funktionieren auch eingeschränkt, die URL-Prüfung braucht uneingeschränkten Zugriff.
Der Server nutzt nur den Lese-Scope `webmasters.readonly`. Er kann in der Search Console nichts verändern.
### 3. IndexNow-Schlüsseldatei anlegen
1. Einen Schlüssel erzeugen (8 bis 128 Zeichen, Buchstaben, Ziffern und Bindestriche), zum Beispiel:
```bash
node -e "console.log(crypto.randomUUID())"
```
2. Eine Textdatei `<schluessel>.txt` im Stammverzeichnis der Website ablegen, deren einziger Inhalt der Schlüssel ist. Sie muss unter `https://www.example.com/<schluessel>.txt` erreichbar sein.
3. Den Schlüssel als `INDEXNOW_KEY` konfigurieren (siehe unten) oder beim Aufruf als Parameter übergeben.
### Umgebungsvariablen
| Variable | Bedeutung |
| --- | --- |
| `GSC_SA_JSON` | Pfad zur Service-Account-JSON oder deren kompletter Inhalt |
| `GOOGLE_APPLICATION_CREDENTIALS` | Alternative zu `GSC_SA_JSON`: Pfad zur Service-Account-JSON |
| `GSC_PROPERTY` | Standard-Property, z. B. `sc-domain:example.com` oder `https://www.example.com/` |
| `INDEXNOW_KEY` | IndexNow-Schlüssel |
| `INDEXNOW_HOST` | Optional: Host, z. B. `www.example.com` (sonst Host der ersten URL) |
| `INDEXNOW_KEY_LOCATION` | Optional: abweichende URL der Schlüsseldatei |
| `INDEXNOW_ENDPOINT` | Optional: anderer IndexNow-Endpunkt, Standard `https://api.indexnow.org/indexnow` |
Property, Host und Schlüssel lassen sich bei jedem Aufruf auch als Parameter übergeben. So arbeiten Sie mit mehreren Websites in einer Konfiguration.
## Konfiguration für Claude Code
```bash
claude mcp add seo-geo --scope user \
--env GSC_SA_JSON=/pfad/zu/service-account.json \
--env GSC_PROPERTY=sc-domain:example.com \
--env INDEXNOW_KEY=ihr-indexnow-schluessel \
-- node /pfad/zu/mcp-seo-geo-werkzeuge/dist/index.js
```
Mit `claude mcp list` prüfen Sie, ob der Server verbunden ist. In einer Sitzung zeigt `/mcp` die verfügbaren Tools.
## Konfiguration für Claude Desktop
Tragen Sie den Server in `claude_desktop_config.json` ein (Windows: `%APPDATA%\Claude\`, macOS: `~/Library/Application Support/Claude/`) und starten Sie Claude Desktop neu:
```json
{
"mcpServers": {
"seo-geo": {
"command": "node",
"args": ["C:/pfad/zu/mcp-seo-geo-werkzeuge/dist/index.js"],
"env": {
"GSC_SA_JSON": "C:/pfad/zu/service-account.json",
"GSC_PROPERTY": "sc-domain:example.com",
"INDEXNOW_KEY": "ihr-indexnow-schluessel",
"INDEXNOW_HOST": "www.example.com"
}
}
}
}
```
## Beispiel-Prompts
- "Welche Seiten stehen fast auf Seite eins? Zeig mir die zehn mit dem größten Potenzial und schlag für die ersten drei konkrete Verbesserungen vor."
- "Was waren in den letzten 90 Tagen die Top-Suchanfragen, und bei welchen ist die Klickrate auffällig niedrig?"
- "Ist https://www.example.com/neue-seite schon im Google-Index? Wann wurde sie zuletzt gecrawlt?"
- "Prüf Title und Meta-Description von https://www.example.com/leistungen und formulier eine Fassung, die in die Längen passt."
- "Melde alle URLs aus https://www.example.com/sitemap.xml per IndexNow."
## Wichtige Hinweise
- **Zugangsdaten nie committen.** Service-Account-JSON und `.env`-Dateien gehören nicht ins Repository. Die mitgelieferte `.gitignore` schließt JSON-Dateien außer den Projektdateien aus. Wurde ein Schlüssel versehentlich veröffentlicht, löschen Sie ihn sofort in der Google Cloud Console und erstellen einen neuen.
- **Search-Console-Daten sind 2 bis 3 Tage verzögert.** Der Zeitraum endet deshalb automatisch drei Tage vor heute. Neue Seiten tauchen erst nach Indexierung und einigen Tagen in den Leistungsdaten auf.
- **IndexNow erreicht Google nicht.** Für Google bleiben Sitemap und die Search Console der Weg, die URL-Prüfung zeigt den Stand.
- **Längen sind Zeichen, keine Pixel.** Google kürzt pixelbasiert, die Zeichen-Grenzen sind eine sichere Faustregel für Bing und Google.
## Autor
André Heiner, KI-Engineer aus Wiesbaden. Ich baue KI-Agenten und Automatisierungen, die im Betrieb laufen, und schule Teams zur KI-Kompetenz nach Artikel 4 der EU-KI-Verordnung.
[heiner.io](https://heiner.io/ki-beratung/wiesbaden) · Termin: [heiner.io/termin](https://heiner.io/termin)
Lizenz: MIT
TDQS
Scored across 6 tools
Each tool targets a distinct SEO operation: GSC queries, GSC pages, striking-distance query-page pairs, URL inspection, IndexNow submission, and meta-length checks. Even the two inspection-like tools (URL indexing vs. meta lengths) are clearly separated by description.
All names are lowercase snake_case, but the semantic pattern is mixed: some are noun phrases (gsc_suchanfragen, gsc_seiten), one is an adjective/number phrase (gsc_fast_seite_eins), and others end with a verb (gsc_url_pruefen, indexnow_melden, meta_laengen_pruefen). The set is readable but lacks a predictable verb/noun convention.
Six tools is well within the recommended range and each appears to earn its place for a focused SEO/GSC plus IndexNow workflow. There is no obvious redundancy or bloat.
The surface covers GSC performance analysis, URL inspection, IndexNow submission, and meta checks, but notable gaps remain for a server named seo-geo: no property/site listing, no sitemap submission or validation to Google, no bulk URL inspection, and no GEO-specific or content optimization tools. Agents can do core technical SEO tasks but will hit limits on broader SEO/GEO workflows.