getwork.dev MCP
An official MCP server that allows AI agents to search developer job listings mirrored from employer hiring systems. It provides tools to find roles by stack, location, and salary, retrieve job details, and access salary insights, all without requiring user authentication for read-only access.
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.
https://getwork.dev/mcpWhat you can do with it
- Search for developer jobs by technology stack and region
- Retrieve detailed job specifications and salary data
- Find similar roles based on a specific job listing
- Get market overview and salary insights for tech roles
Source and maintenance
Protocol and capabilities
- Server
- getwork 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
search_jobs — Search developer jobs
Search active developer jobs. Returns compact JobSpecs (no description) sorted by relevance or recency. Use get_job for details.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string",
"description": "Free text, e.g. 'distributed systems' or 'payments'. Every word must match (a word also matches its synonyms)."
},
"stack": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Technology tags that must all be in the role's primary stack, lowercase: rust, go, typescript, python, react, postgres, kubernetes, ... Passing mentions (stack_mentioned) do not match."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"remote": {
"enum": [
"remote",
"hybrid",
"onsite",
"remote_or_hybrid"
],
"type": "string"
},
"company": {
"type": "string",
"description": "Company slug from list_companies."
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Leave out jobs matching any of these: a stack tag (not in the primary stack or title), a role family, or a topic like 'crypto' or 'gambling' (not mentioned anywhere, synonyms included)."
},
"regions": {
"type": "array",
"items": {
"enum": [
"europe",
"north_america",
"latam",
"apac",
"mea",
"global"
],
"type": "string"
},
"description": "Any of these regions. Worldwide-remote jobs are always included."
},
"collapse": {
"type": "boolean",
"default": true,
"description": "Group the same role posted for several locations into one result; same_role_other_locations tells how many more exist."
},
"currency": {
"type": "string",
"description": "ISO currency code (EUR, USD, GBP). Restricts to jobs that publish pay in this currency."
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISO 3166-1 alpha-2 codes, e.g. NL, DE, GB."
},
"seniority": {
"type": "array",
"items": {
"enum": [
"intern",
"junior",
"mid",
"senior",
"staff",
"principal",
"lead",
"manager",
"unspecified"
],
"type": "string"
}
},
"min_salary": {
"type": "integer",
"description": "Minimum yearly salary (upper end of the published range must reach it). Combine with currency."
},
"role_family": {
"type": "array",
"items": {
"enum": [
"software",
"frontend",
"backend",
"fullstack",
"mobile",
"infra",
"data",
"ml",
"security",
"embedded",
"qa",
"management",
"founding"
],
"type": "string"
}
},
"salary_required": {
"type": "boolean",
"description": "Only jobs that publish a salary range."
},
"posted_within_days": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"total",
"jobs"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"getwork_url",
"apply_url"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"remote": {
"type": "string"
},
"salary": {
"type": [
"object",
"null"
]
},
"company": {
"type": "object"
},
"location": {
"type": [
"string",
"null"
]
},
"apply_url": {
"type": "string"
},
"getwork_url": {
"type": "string"
},
"injection_flag": {
"type": "boolean"
}
}
}
},
"total": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"next_offset": {
"type": [
"integer",
"null"
]
},
"security_notice": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}get_job — Get a job
Full JobSpec for one job, including the employer's description as untrusted_description.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"title",
"company",
"untrusted_description"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"company": {
"type": "object"
},
"apply_url": {
"type": [
"string",
"null"
]
},
"getwork_url": {
"type": "string"
},
"injection_flag": {
"type": "boolean"
},
"security_notice": {
"type": "string"
},
"untrusted_description": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}similar_jobs — Similar jobs
Roles similar to a given job (title, stack and description overlap), excluding the same role at other locations.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"similar_to",
"jobs"
],
"properties": {
"jobs": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"company",
"getwork_url",
"apply_url"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"remote": {
"type": "string"
},
"salary": {
"type": [
"object",
"null"
]
},
"company": {
"type": "object"
},
"location": {
"type": [
"string",
"null"
]
},
"apply_url": {
"type": "string"
},
"getwork_url": {
"type": "string"
},
"injection_flag": {
"type": "boolean"
}
}
}
},
"similar_to": {
"type": "object"
},
"security_notice": {
"type": "string"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}search — Search (natural language)
Natural-language job search, e.g. 'remote senior Rust jobs in Europe'. Understands salary floors ('over €120k') and exclusions ('no crypto'). Returns ids, titles and URLs, the total, filters: how the query was read (as search_jobs arguments), and broadened: filters it dropped to find any results. Use fetch for details. Prefer search_jobs when you can set filters directly.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}fetch — Fetch a job
Full text and metadata for one job id returned by search.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}salary_insights — Salary insights
Yearly salary percentiles per currency for active jobs matching the filters, from employer-published ranges.
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text, e.g. 'distributed systems' or 'payments'. Every word must match (a word also matches its synonyms)."
},
"stack": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Technology tags that must all be in the role's primary stack, lowercase: rust, go, typescript, python, react, postgres, kubernetes, ... Passing mentions (stack_mentioned) do not match."
},
"remote": {
"enum": [
"remote",
"hybrid",
"onsite",
"remote_or_hybrid"
],
"type": "string"
},
"company": {
"type": "string",
"description": "Company slug from list_companies."
},
"exclude": {
"type": "array",
"items": {
"type": "string"
},
"description": "Leave out jobs matching any of these: a stack tag (not in the primary stack or title), a role family, or a topic like 'crypto' or 'gambling' (not mentioned anywhere, synonyms included)."
},
"regions": {
"type": "array",
"items": {
"enum": [
"europe",
"north_america",
"latam",
"apac",
"mea",
"global"
],
"type": "string"
},
"description": "Any of these regions. Worldwide-remote jobs are always included."
},
"currency": {
"type": "string",
"description": "ISO currency code (EUR, USD, GBP). Restricts to jobs that publish pay in this currency."
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"description": "ISO 3166-1 alpha-2 codes, e.g. NL, DE, GB."
},
"seniority": {
"type": "array",
"items": {
"enum": [
"intern",
"junior",
"mid",
"senior",
"staff",
"principal",
"lead",
"manager",
"unspecified"
],
"type": "string"
}
},
"role_family": {
"type": "array",
"items": {
"enum": [
"software",
"frontend",
"backend",
"fullstack",
"mobile",
"infra",
"data",
"ml",
"security",
"embedded",
"qa",
"management",
"founding"
],
"type": "string"
}
},
"posted_within_days": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"by_currency"
],
"properties": {
"note": {
"type": "string"
},
"period": {
"type": "string"
},
"by_currency": {
"type": "array",
"items": {
"type": "object",
"required": [
"currency",
"sample_size"
],
"properties": {
"currency": {
"type": "string"
},
"midpoint": {
"type": "object"
},
"sample_size": {
"type": "integer"
},
"median_range": {
"type": "object"
}
}
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}list_companies — List companies
Companies in the index with their number of active developer jobs.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"companies"
],
"properties": {
"companies": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name"
],
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"claimed": {
"type": "boolean"
},
"website": {
"type": [
"string",
"null"
]
},
"active_dev_jobs": {
"type": "integer"
}
}
}
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}market_overview — Market overview
Totals and the most requested technologies across all active jobs.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"active_jobs",
"top_stack"
],
"properties": {
"companies": {
"type": "integer"
},
"top_stack": {
"type": "array",
"items": {
"type": "object",
"required": [
"tag",
"jobs"
],
"properties": {
"tag": {
"type": "string"
},
"jobs": {
"type": "integer"
}
}
}
},
"active_jobs": {
"type": "integer"
},
"jobs_with_salary": {
"type": "integer"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}Prompts
3 advertised
find_my_next_job — Find my next job
Interview the user about what they want, then search getwork and shortlist the best matches with reasons.
- about_me
- Optional: stack, experience, location, salary floor, deal-breakers.
whats_new — What's new for me
New roles since last time for a saved set of wishes: run it every week or so.
- looking_for
- Stack, level, where, remote and salary floor; leave empty to reuse what you know about me.
- days
- How far back to look, in days (default 7).
salary_check — Am I paid fairly?
Compare a salary with employer-published ranges for the same stack, level and region.
- situation
- Role, stack, level, country and current salary. (required)
Resources
Not advertised
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
- 327 ms
- 95th percentile latency
- 327 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 327 ms · metadata changed · 8 tool(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http getwork-dev-mcp https://getwork.dev/mcpCodex
codex mcp add getwork-dev-mcp --url https://getwork.dev/mcpCursor
{
"mcpServers": {
"getwork-dev-mcp": {
"url": "https://getwork.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"getwork-dev-mcp": {
"type": "streamableHttp",
"url": "https://getwork.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"getwork-dev-mcp": {
"type": "http",
"url": "https://getwork.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http getwork-dev-mcp https://getwork.dev/mcpClaude Desktop
{
"mcpServers": {
"getwork-dev-mcp": {
"url": "https://getwork.dev/mcp"
}
}
}Windsurf
{
"mcpServers": {
"getwork-dev-mcp": {
"serverUrl": "https://getwork.dev/mcp"
}
}
}Let your agent find its tools
Find servers like getwork.dev MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run getwork.dev 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.