stellenonline.de Jobsuche
de.stellenonline/jobsearchVersion 1.0.0Read-only search across current job listings on stellenonline.de (German job portal).
Status
Responds36 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:24 UTC
- Latency
- 36 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- EU hosting detected (detected, not a legal statement)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://www.stellenonline.de/mcpResponds36 msNo sign-in
Claude Code
claude mcp add --transport http jobsearch https://www.stellenonline.de/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: jobsearch
Remote MCP server URL: https://www.stellenonline.de/mcpCursor
{
"mcpServers": {
"jobsearch": {
"url": "https://www.stellenonline.de/mcp"
}
}
}VS Code
code --add-mcp '{"name":"jobsearch","type":"http","url":"https://www.stellenonline.de/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
3 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
count_jobsCount how many jobs match a search without returning full results. Returns structured JSON.
Use this when the user asks "how many jobs..." (in any language), including
salary-constrained counts like "how many jobs pay at least 60k?" or
"how many jobs advertise a salary at all?" (use has_salary=True).
Args:
q: Search keywords, e.g. "Softwareentwickler Python"
location: City or region, e.g. "München", "Bodensee"
working_plan: "Vollzeit", "Teilzeit", "Homeoffice", or "Minijob"
job_offer_type: "Arbeitsplatz", "Ausbildung", "Praktikum", "Freiberuflich", "Werkstudent", "Trainee", "Duales-Studium"
min_salary: Minimum ANNUAL gross salary in EUR (optional), e.g. 60000.
Filtered server-side with the same semantics as search_jobs:
monthly/hourly amounts are normalised to a yearly figure first,
and salary ranges match on overlap. A job with range
30.000–45.000 € is counted at min_salary=40000 (ranges overlap).
max_salary: Maximum annual gross salary in EUR (optional, same semantics).
A job with range 30.000–45.000 € is NOT counted at max_salary=25000.
has_salary: If True, count only jobs that advertise a salary at all
(regardless of amount). If False, count only jobs WITHOUT a
salary. Leave unset to ignore. Use this for "how many jobs
have a salary?"; combine with min_salary/max_salary as needed.
Returns:
On success: {"count": int, "filters": {"q": str|null, "location": str|null,
"working_plan": str|null, "job_offer_type": str|null,
"min_salary": float|null, "max_salary": float|null,
"has_salary": bool|null}}
On error: {"error": str} | No | Yes | Yes | No |
get_total_jobsGet the total number of jobs in the database (no filters). Returns structured JSON.
Returns the complete job count. Use this to check the overall index size.
Returns:
On success: {"total_jobs": int}
On error: {"error": str} | No | Yes | Yes | No |
search_jobsSearch for jobs in the STON job database. Returns structured JSON.
Call this tool ONCE per user request, then present the returned `jobs` list
to the user in whatever format fits (markdown list, table, plain text).
Always include the apply link from the `url` field for each job.
If `has_more` is true, mention `total_found` and ask whether to fetch more.
NEVER call this tool multiple times in a row to collect all pages automatically.
To count results without fetching full job data, prefer `count_jobs`. If a
filter you need isn't on `count_jobs`, call this tool with `rows=1` and read
`total_found` (the count is server-side and independent of `rows`).
Args:
q: Search keywords (German job market — examples: "Softwareentwickler Python", "Krankenpfleger")
location: City, region or area, e.g. "München", "Ravensburg", "Bodensee", "Baden-Württemberg"
radius: Search radius in km around the location, e.g. 25, 50 (default: server setting)
working_plan: One of: "Vollzeit", "Teilzeit", "Minijob", "Homeoffice" (comma-separated for multiple)
job_offer_type: One of: "Arbeitsplatz", "Ausbildung", "Praktikum", "Freiberuflich", "Werkstudent", "Trainee", "Duales-Studium" (comma-separated for multiple)
min_salary: Minimum ANNUAL gross salary in EUR (optional), e.g. 60000.
Filtered server-side. Jobs advertised per month/hour are
normalised to a yearly figure first, so e.g. 5000/month matches
min_salary=60000. Salary ranges match on OVERLAP, not containment:
a job advertised as 30.000–45.000 € IS returned at min_salary=40000
(the ranges overlap), and is NOT returned at max_salary=25000.
max_salary: Maximum annual gross salary in EUR (optional, same overlap semantics)
has_salary: If True, return only jobs that advertise a salary at all
(any amount); if False, only jobs without one. Leave unset to ignore.
sort: "relevance" (default) or "date" (newest first)
| No | Yes | Yes | No |
Details
- Registry status
- Active
- Published
- Oct 8, 2026
- Updated
- Oct 8, 2026
- Repository
- Not given
- Categories
- Uncategorized
- GDPR
- Not declared