mcp-job-radar
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-job-radarsearch remote AI Engineer jobs and rank the top 5 for me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Job Radar
English · Português
A secure, read-only Model Context Protocol server for job discovery and explainable matching.
Job descriptions can contain prompt injections, commands, secret requests, and malicious links. This server exposes job-search capabilities to AI hosts without turning untrusted listings into an instruction channel. Every tool is typed, bounded, audited, read-only, and exercised through a real in-memory MCP client.
What a reviewer can verify in three minutes
uv sync --extra dev
uv run pytest
uv run mcp-job-radar-demoThe demo connects an official MCP client to the server, discovers the tools through tools/list,
calls search_jobs, and prints its structured result. Tests cover tool discovery, JSON Schema,
deterministic ranking, typed errors, timeouts, retries, circuit breaking, and adversarial content.
Related MCP server: LinkedIn Jobs MCP Server
Tools
Tool | What it returns | Safety boundary |
| Bounded matches from title and declared skills | Descriptions do not affect search |
| Score, reasons, and tradeoffs against a typed profile | Deterministic policy, no hidden LLM judgment |
| Exact factors behind one score | Same policy as ranking, no post-hoc explanation |
| Markdown or JSON inside the response | No filesystem write or job application |
All inputs and outputs use strict Pydantic models. Invalid, missing, duplicate, or excessive input produces a stable machine-readable error rather than an implementation traceback.
Architecture
flowchart LR
H[AI host] -->|MCP| M[MCP adapter]
M --> A[Safe audit boundary]
A --> S[Typed job service]
S --> R[Deterministic ranker]
S --> G[Untrusted-content gateway]
S --> D[Timeout, retry, circuit breaker]
D --> F[(Normalized fixtures)]
G -->|bounded and redacted| MThe MCP adapter contains no ranking logic. The application service owns use cases, the security gateway owns the trust boundary, and the repository owns source resilience. This separation keeps the protocol replaceable and the critical policies independently testable.
Read the full architecture and threat model and the adversarial test matrix.
Security controls
Job descriptions are bounded, normalized, scanned, and redacted before entering agent context.
Prompt-injection phrases, secret requests, commands, and embedded URLs become explicit findings.
Listing URLs must use public HTTPS and cannot contain credentials or target local/private hosts.
Result count and batch IDs are capped at 25.
Source access has a timeout, bounded retry, and an in-process circuit breaker.
Audit events contain tool name, status, duration, and error type, never arguments or result bodies.
There is intentionally no command execution, arbitrary fetch, local-file read, auto-apply, or persistent export capability.
Example request
{
"job_ids": ["remoteok-1001", "remotive-3003"],
"profile": {
"target_titles": ["AI Engineer", "AI Solutions Architect"],
"skills": ["Python", "RAG", "LLM", "MCP"],
"remote_required": true,
"seniority": "senior",
"minimum_salary_brl": 20000
},
"limit": 10
}The result carries a numerical score plus positive signals and explicit tradeoffs. Explanations are generated by the same scoring function, so they cannot drift from the ranking.
Run as an MCP server
The default transport is stdio:
uv run mcp-job-radarExample host configuration:
{
"mcpServers": {
"job-radar": {
"command": "uv",
"args": ["--directory", "ABSOLUTE_PATH_TO_REPOSITORY", "run", "mcp-job-radar"]
}
}
}The project uses the official Python SDK v2 and its current MCP 2026-07-28 protocol line. The
automated integration test uses Client(mcp), the SDK's in-memory client, rather than invoking
Python functions directly.
Relationship to radar-de-vagas
radar-de-vagas owns ingestion from six public
sources, two-layer relevance filtering, normalization, global deduplication, and priority ordering.
mcp-job-radar adds the agent-facing contract and security boundary. Its checked-in normalized
dataset makes tests deterministic and keeps CI independent of scraping, credentials, rate limits,
and third-party outages.
Measured behavior
The acceptance suite verifies:
exactly four discoverable MCP tools;
structured MCP results and generated input schemas;
repeatable ranking and matching explanations;
all defined hostile-content classes redacted;
unsafe URL classes rejected;
malformed and slow sources returned as typed retryable failures;
no auto-application or persistent-write surface.
Coverage is enforced at 85% in CI. The README reports only behaviors asserted by the repository, not production traffic or synthetic business-accuracy claims.
Verification-driven adjustments
The implementation was aligned to the installed MCP SDK v2 API after an integration test verified the moved
ToolErrorboundary and the typedlist_tools()response envelope.The normalized fixture was moved inside the Python package after inspecting the built wheel. This prevents a demo that works only from an editable source checkout.
Read-only, non-destructive, idempotent, and closed-world annotations are asserted on all four discovered tools, so the published metadata is checked rather than merely documented.
Limitations and next steps
The demo data is synthetic and normalized. It proves the agent boundary, not live-source uptime.
Ranking is lexical and policy-based; semantic equivalence and career nuance remain outside v0.1.
The circuit breaker is process-local. A distributed deployment would require shared state and metrics.
A live adapter should consume a versioned normalized output from
radar-de-vagas, not import its script or duplicate source-specific scraping.Authentication and Streamable HTTP deployment are intentionally absent from this local stdio demonstration. They become necessary only when exposing the server beyond a trusted host.
AI assistance disclosure
The repository was developed with AI-assisted implementation and review. Architecture, security claims, tests, limitations, and published artifacts were checked against executable behavior. Authorship responsibility and final technical decisions remain with Raphael Caveagna.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to securely query VAST Data databases for schema, metadata, and sample data via read-only SQL and MCP resources.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and analyze LinkedIn jobs with advanced filters, salary requirements, and market insights through natural language.21MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to discover, filter, and track job openings based on the user's local resume, without uploading data to the cloud.12MIT

FoundRole MCPofficial
AlicenseAqualityBmaintenanceEnables AI assistants to search live jobs, view full details, save and track applications in a Kanban board, set follow-up reminders, and subscribe to job alerts—no account needed for searching.20269MIT
Related MCP Connectors
Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.
Job platform for AI agents. Track tech jobs from companies that match your stack.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RaphaelCerri/mcp-job-radar'
If you have feedback or need assistance with the MCP directory API, please join our Discord server