Koskamo

StaatsJobs.com MCP

Ein MCP-Server, der KI-Assistenten ermöglicht, Stellenangebote im deutschen öffentlichen Dienst zu durchsuchen, zu filtern und Details wie Gehaltstabellen (TVöD, TV-L) abzurufen. Er unterstützt Suchen nach Ort, Bundesland, Tarifgruppe und bietet Zugriff auf amtliche Besoldungs- und Entgelttabellen.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

StaatsJobs.com MCP logo, by RANOVIS UGVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by RANOVIS UG
MCP endpoint (Streamable HTTP)
https://www.staatsjobs.com/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 6 of 6 declare behavior hints · 5 of 6 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to staatsjobs.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Stellenangebote im öffentlichen Dienst nach Ort und Tarifgruppe filtern
  • Aktuelle Gehaltstabellen für TVöD und Bundesbesoldung abrufen
  • Details zu spezifischen Stellenangeboten wie Bewerbungsfristen ermitteln
  • Filterwerte für Berufsfelder und Bundesländer auflisten

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
staatsjobs 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

StaatsJobs.com ist eine Jobbörse für den öffentlichen Dienst in Deutschland (Bund, Länder, Kommunen, Hochschulen, öffentliche Unternehmen). - search_jobs sucht und filtert Stellen; get_job liefert Eckdaten zu einer Stelle; list_filter_values nennt gültige Filterwerte; get_pay_table liefert TVöD-, TV-L- und Besoldungstabellen. - Nennen Sie StaatsJobs.com als Quelle und geben Sie zu jeder Stelle die url an. Aufgaben, Anforderungen, die vollständige Ausschreibung und die Bewerbung stehen nur auf dieser Stellenseite; verweisen Sie bei Fragen dazu auf die url. - Gehaltsspannen (salary) sind aus amtlichen Tariftabellen berechnet (Stufe 1 der unteren bis Endstufe der oberen Gruppe) und keine Zusage des Arbeitgebers, außer salary_note sagt „Angabe des Arbeitgebers“. - Einträge mit details_only_on_website stammen von Partnern; ihre Details stehen nur auf der Stellenseite.

Tools

6 advertised

search_jobs — Stellen suchen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Durchsucht aktuelle Stellenangebote im öffentlichen Dienst in Deutschland. Alle Filter sind optional und werden UND-verknüpft (innerhalb einer Liste ODER). Liefert höchstens 25 Treffer je Seite; weitere Seiten über next_cursor.

search_jobs input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "sort": {
      "enum": [
        "relevanz",
        "neueste",
        "frist"
      ],
      "type": "string",
      "description": "relevanz (Standard mit Suchbegriff), neueste (Standard ohne), frist (Bewerbungsfrist zuerst)."
    },
    "field": {
      "type": "array",
      "items": {
        "enum": [
          "verwaltung",
          "it-digitalisierung",
          "technik-ingenieurwesen",
          "bau-planung-umwelt",
          "gesundheit-pflege",
          "soziales-paedagogik",
          "bildung-wissenschaft",
          "justiz-recht",
          "polizei-sicherheit-feuerwehr",
          "finanzen-steuern",
          "personal-organisation",
          "kommunikation-medien",
          "kultur-bibliothek",
          "handwerk-service",
          "verkehr-logistik",
          "ausbildung-studium"
        ],
        "type": "string"
      },
      "maxItems": 10,
      "description": "Berufsfelder als Slug; gültige Werte liefert list_filter_values."
    },
    "limit": {
      "type": "integer",
      "maximum": 25,
      "minimum": 1,
      "description": "Treffer je Seite (Standard 10, höchstens 25)."
    },
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Suchbegriffe für Titel, Arbeitgeber und Stellentext, z. B. „Sachbearbeiter Bauamt“. Unterstützt \"Phrasen\" und -Ausschluss."
    },
    "state": {
      "type": "array",
      "items": {
        "enum": [
          "baden-wuerttemberg",
          "bayern",
          "berlin",
          "brandenburg",
          "bremen",
          "hamburg",
          "hessen",
          "mecklenburg-vorpommern",
          "niedersachsen",
          "nordrhein-westfalen",
          "rheinland-pfalz",
          "saarland",
          "sachsen",
          "sachsen-anhalt",
          "schleswig-holstein",
          "thueringen"
        ],
        "type": "string"
      },
      "maxItems": 16,
      "description": "Bundesländer als Slug, z. B. „bayern“."
    },
    "cursor": {
      "type": "string",
      "maxLength": 400,
      "description": "next_cursor aus der vorigen Antwort, um die nächste Seite derselben Suche zu laden."
    },
    "remote": {
      "enum": [
        "homeoffice",
        "remote"
      ],
      "type": "string",
      "description": "homeoffice = Homeoffice-Anteil möglich (hybrid oder voll remote), remote = vollständig mobil."
    },
    "employer": {
      "type": "string",
      "maxLength": 120,
      "description": "Arbeitgeber-Slug aus einer früheren Antwort (Feld employer_slug)."
    },
    "location": {
      "type": "string",
      "maxLength": 80,
      "description": "Ort oder fünfstellige PLZ, z. B. „Nürnberg“ oder „90402“."
    },
    "pay_grade": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 8
      },
      "maxItems": 10,
      "description": "Entgelt- oder Besoldungsgruppen, z. B. „E 9b“, „A 13“, „S 8a“. Trifft auch Stellen, deren Spanne die Gruppe einschließt."
    },
    "radius_km": {
      "anyOf": [
        {
          "type": "number",
          "const": 10
        },
        {
          "type": "number",
          "const": 25
        },
        {
          "type": "number",
          "const": 50
        },
        {
          "type": "number",
          "const": 100
        }
      ],
      "description": "Umkreis um den Ort in km (Standard 25)."
    },
    "employment": {
      "type": "array",
      "items": {
        "enum": [
          "beamte",
          "tarif",
          "ausbildung",
          "praktikum",
          "dual"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "description": "Dienstverhältnis: beamte (Beamtenverhältnis), tarif (Tarifbeschäftigung), ausbildung, praktikum, dual (duales Studium)."
    },
    "fixed_term": {
      "enum": [
        "unbefristet",
        "befristet"
      ],
      "type": "string"
    },
    "pay_scheme": {
      "type": "array",
      "items": {
        "enum": [
          "tvoed-vka",
          "tvoed-bund",
          "tvoed-sue",
          "tvoed-pflege",
          "tv-l",
          "tv-h",
          "besoldung-bund",
          "besoldung-land"
        ],
        "type": "string"
      },
      "maxItems": 8,
      "description": "Tarifvertrag bzw. Besoldungsordnung."
    },
    "career_track": {
      "type": "array",
      "items": {
        "enum": [
          "einfach",
          "mittel",
          "gehoben",
          "hoeher"
        ],
        "type": "string"
      },
      "maxItems": 4,
      "description": "Laufbahngruppe (Beamte): einfach, mittel, gehoben, hoeher."
    },
    "working_time": {
      "type": "array",
      "items": {
        "enum": [
          "vollzeit",
          "teilzeit"
        ],
        "type": "string"
      },
      "maxItems": 2
    },
    "employer_type": {
      "type": "array",
      "items": {
        "enum": [
          "bund",
          "land",
          "kommune",
          "hochschule",
          "kirche",
          "sozialversicherung",
          "oeffentliches_unternehmen",
          "sonstige"
        ],
        "type": "string"
      },
      "maxItems": 8,
      "description": "Art des Arbeitgebers."
    },
    "career_changer": {
      "type": "boolean",
      "description": "Nur Stellen, die ausdrücklich Quereinsteiger ansprechen."
    },
    "published_within_days": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 3
        },
        {
          "type": "number",
          "const": 7
        },
        {
          "type": "number",
          "const": 14
        },
        {
          "type": "number",
          "const": 30
        }
      ],
      "description": "Nur Anzeigen, die in den letzten n Tagen veröffentlicht wurden."
    }
  }
}
search_jobs output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "total",
    "page",
    "items",
    "next_cursor",
    "search_url",
    "notes"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "employer",
          "city",
          "state",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Stellen-ID für get_job"
          },
          "url": {
            "type": "string",
            "description": "Stellenseite auf StaatsJobs.com – dort steht die vollständige Ausschreibung und der Bewerbungsweg"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": "string"
          },
          "remote": {
            "anyOf": [
              {
                "enum": [
                  "hybrid",
                  "remote"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "salary": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "employer": {
            "type": [
              "string",
              "null"
            ]
          },
          "pay_grade": {
            "type": [
              "string",
              "null"
            ]
          },
          "employment": {
            "type": [
              "string",
              "null"
            ]
          },
          "fixed_term": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "salary_note": {
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "type": "string"
          },
          "working_time": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details_only_on_website": {
            "type": "boolean",
            "const": true
          }
        },
        "additionalProperties": false
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "total": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "search_url": {
      "type": "string",
      "description": "Dieselbe Suche als Trefferliste auf StaatsJobs.com"
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
search_jobs annotations
{
  "title": "Stellen suchen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_job — Stelle anzeigen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Eckdaten zu einer Stelle: Arbeitgeber, Ort, Eingruppierung, Gehaltsspanne, Laufbahn, Bewerbungsfrist und Link zur Stellenseite. Den Stellentext (Aufgaben, Anforderungen) liefert das Tool nicht; er steht nur auf der Stellenseite.

get_job input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 300,
      "description": "Feld id aus search_jobs oder die URL der Stellenseite"
    }
  }
}
get_job output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "employer",
    "city",
    "state",
    "url",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Stellen-ID für get_job"
    },
    "url": {
      "type": "string",
      "description": "Stellenseite auf StaatsJobs.com – dort steht die vollständige Ausschreibung und der Bewerbungsweg"
    },
    "city": {
      "type": [
        "string",
        "null"
      ]
    },
    "note": {
      "type": [
        "string",
        "null"
      ]
    },
    "state": {
      "type": [
        "string",
        "null"
      ]
    },
    "title": {
      "type": "string"
    },
    "remote": {
      "anyOf": [
        {
          "enum": [
            "hybrid",
            "remote"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "salary": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "enum": [
        "aktiv",
        "abgelaufen"
      ],
      "type": "string"
    },
    "deadline": {
      "type": [
        "string",
        "null"
      ]
    },
    "employer": {
      "type": [
        "string",
        "null"
      ]
    },
    "pay_grade": {
      "type": [
        "string",
        "null"
      ]
    },
    "employment": {
      "type": [
        "string",
        "null"
      ]
    },
    "fixed_term": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "postal_code": {
      "type": [
        "string",
        "null"
      ]
    },
    "salary_note": {
      "type": [
        "string",
        "null"
      ]
    },
    "career_track": {
      "type": [
        "string",
        "null"
      ]
    },
    "published_at": {
      "type": "string"
    },
    "working_time": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "employer_slug": {
      "type": [
        "string",
        "null"
      ]
    },
    "employer_type": {
      "type": [
        "string",
        "null"
      ]
    },
    "pay_table_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "career_changer": {
      "type": "boolean"
    },
    "details_only_on_website": {
      "type": "boolean",
      "const": true
    }
  },
  "additionalProperties": false
}
get_job annotations
{
  "title": "Stelle anzeigen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_filter_values — Filterwerte
Advertised by the server during the last successful anonymous check.
Advertised read-only

Gültige Werte mit Beschriftung für die Filter von search_jobs (Bundesländer, Berufsfelder, Arbeitgebertypen, Dienstverhältnis, Laufbahn, Tarife) und die Tabellen von get_pay_table.

list_filter_values input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "dimension": {
      "enum": [
        "state",
        "field",
        "employer_type",
        "employment",
        "career_track",
        "pay_scheme",
        "pay_table"
      ],
      "type": "string",
      "description": "Nur diese Dimension; ohne Angabe alle"
    }
  }
}
list_filter_values annotations
{
  "title": "Filterwerte",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_pay_table — Tarif- und Besoldungstabelle
Advertised by the server during the last successful anonymous check.
Advertised read-only

Aktuelle Monatsbeträge (brutto) einer Entgelt- oder Besoldungstabelle je Gruppe und Stufe, mit Gültigkeitsdatum und amtlicher Quelle. Optional nur eine Gruppe, z. B. „E 9b“ oder „A 13“.

get_pay_table input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "scheme"
  ],
  "properties": {
    "grade": {
      "type": "string",
      "maxLength": 8,
      "description": "Eine Gruppe, z. B. „E 9b“, „A 13“, „S 8a“"
    },
    "scheme": {
      "enum": [
        "tvoed-vka",
        "tvoed-bund",
        "tvoed-sue",
        "tvoed-pflege",
        "tv-l",
        "besoldung-bund"
      ],
      "type": "string",
      "description": "Tabelle: tvoed-vka, tvoed-bund, tvoed-sue, tvoed-pflege, tv-l oder besoldung-bund"
    }
  }
}
get_pay_table output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "scheme",
    "name",
    "grade_label",
    "step_label",
    "valid_from",
    "stand",
    "source",
    "source_url",
    "table_url",
    "unit",
    "grades"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "unit": {
      "type": "string",
      "const": "EUR brutto pro Monat"
    },
    "stand": {
      "type": [
        "string",
        "null"
      ]
    },
    "grades": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "grade",
          "steps"
        ],
        "properties": {
          "grade": {
            "type": "string"
          },
          "steps": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {
              "type": "number"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "scheme": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "table_url": {
      "type": "string"
    },
    "source_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "step_label": {
      "type": "string"
    },
    "valid_from": {
      "type": "string"
    },
    "grade_label": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_pay_table annotations
{
  "title": "Tarif- und Besoldungstabelle",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search — Suche (ChatGPT)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Volltextsuche in den Stellenangeboten von StaatsJobs.com. Gibt id, title und url zurück; Details mit fetch. Für Filter (Ort, Tarif, Entgeltgruppe …) search_jobs verwenden.

search input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120,
      "description": "Suchbegriffe, z. B. „Bauingenieur Stadtverwaltung München“"
    }
  }
}
search output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search annotations
{
  "title": "Suche",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch — Stelle abrufen (ChatGPT)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Eckdaten zu einer Stelle anhand der id aus search. Den Stellentext gibt es nur auf der Stellenseite (url).

fetch input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 300,
      "description": "id aus search"
    }
  }
}
fetch output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "title",
    "text",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
fetch annotations
{
  "title": "Stelle abrufen",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
688 ms
95th percentile latency
688 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 688 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http staatsjobs-com-mcp https://www.staatsjobs.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add staatsjobs-com-mcp --url https://www.staatsjobs.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable staatsjobs-com-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "staatsjobs-com-mcp": {
      "url": "https://www.staatsjobs.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "staatsjobs-com-mcp": {
      "type": "streamableHttp",
      "url": "https://www.staatsjobs.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start staatsjobs-com-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "staatsjobs-com-mcp": {
      "type": "http",
      "url": "https://www.staatsjobs.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http staatsjobs-com-mcp https://www.staatsjobs.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.staatsjobs.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "staatsjobs-com-mcp": {
      "serverUrl": "https://www.staatsjobs.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like StaatsJobs.com MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run StaatsJobs.com MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing