accueil / serveurs / Recherche & Web / de.stellenonline/jobsearch
de.stellenonline/jobsearch
serveur MCP (Model Context Protocol) · STON Job Search 2.14.7
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que de.stellenonline/jobsearch est sûr ?
Au dernier audit MCP Hub, le serveur MCP « de.stellenonline/jobsearch » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 3 outils
- count_jobs≈ 714 tokens
Count 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}
Paramètres, retour & exemple (7)
Paramètresq· ? · optionnellocation· ? · optionnelhas_salary· ? · optionnelmax_salary· ? · optionnelmin_salary· ? · optionnelworking_plan· ? · optionneljob_offer_type· ? · optionnel
Exemple d'appel{"name": "count_jobs", "arguments": {"q": "texte", "location": "texte", "has_salary": "texte", "max_salary": "texte", "min_salary": "texte", "working_plan": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_total_jobs≈ 146 tokens
Get 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}
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_total_jobs", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_jobs≈ 1040 tokens
Search 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) page: Page number starting at 1 rows: Results per page, 1-50 (default: 25) Returns: On success: { "total_found": int, "page": int, "rows": int, "total_pages": int, "has_more": bool, "salary_filter": null | {"min_salary": float|null, "max_salary": float|null}, "jobs": [ { "id": str, "title": str, "company_name": str, "location": str, "date": str (ISO-8601), "url": str, "salary": null | {"annual_eur": float, "monthly_eur": float, "currency": str, "min_annual_eur"?: float, "max_annual_eur"?: float, "data_quality"?: "suspect"} # implausibly high → likely a data error }, ... ] } On error: {"error": str}
Paramètres, retour & exemple (11)
Paramètresq· ? · optionnelpage· integer · optionnelrows· integer · optionnelsort· ? · optionnelradius· ? · optionnellocation· ? · optionnelhas_salary· ? · optionnelmax_salary· ? · optionnelmin_salary· ? · optionnelworking_plan· ? · optionneljob_offer_type· ? · optionnel
Exemple d'appel{"name": "search_jobs", "arguments": {"q": "texte", "page": 1, "rows": 1, "sort": "texte", "radius": "texte", "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».