Skip to main content
Glama
ErgoCodes

workana-mcp

by ErgoCodes

workana-mcp

An MCP server that lets Claude find and score freelance projects on Workana, so you spend your time on proposals that can actually win.

Why I built it

Most Workana projects are a poor fit: dozens of proposals already in, tiny budgets, clients who never paid anyone, or requests to move the conversation to WhatsApp. Checking each one by hand every day took longer than writing the proposals. This tool does the filtering and tells me which handful are worth my time.

It is read-only by design. Workana has no public API, so the server reads the same public pages you see in the browser without logging in. It never touches your account, never sends proposals or messages. You decide where to apply and send the proposal yourself.

Related MCP server: Workix MCP

Tools

Tool

What it does

workana_buscar_proyectos

Search with filters: text, skills, category/subcategory, language, fixed price or hourly, age (24h/3d/week), few proposals only, client country, minimum budget, minimum rate, maximum proposals. Sort by opportunity, date or fewest proposals.

workana_ver_proyecto

Full project page: complete description, skills, budget, proposals, interested freelancers and the client (country, rating, projects posted and paid, member since, verified payment, their other projects).

workana_evaluar_proyecto

Opportunity score 0–100 with a breakdown, alerts, pros and cons, and tips for the proposal.

workana_mejores_oportunidades

Daily workflow: searches recent projects for your stack, drops the bad ones, deep-analyzes the best N and ranks them.

How the score (0–100) works

  • Stack fit (30): strong technologies (React, Node, TypeScript, Next, Express, Nest) in the skills or text, plus the % of the project's skills you have.

  • Competition (25): 0–4 proposals = 25 … 35+ = 2.

  • Budget (20): fixed price (≥ 1,000 USD = 20) or hourly rate (≥ 45 USD/h = 20).

  • Client (15): verified payment, rating, projects already paid and how many they posted.

  • Freshness (10): under 6 h = 10 … over a week = 0.

  • Penalties: paying or working outside Workana, contact via WhatsApp or Telegram, email in the description, free trial work, payment in equity or percentage, "low" budget, clones of big platforms, closed project.

Priority: high from 65, medium 45–64, low below 45. It's a heuristic to prioritize, not a guarantee.

The interesting problem: results Workana hides

Logged out, Workana only shows 7 of every 20 results per page and hides the rest to push you to sign up. Instead of logging in (which would put an account at risk), the server notices when a search has hidden results and splits it into narrower searches (by pricing model, number of proposals, subcategory, skill and, as a last resort, more pages), then merges and de-duplicates the results. max_consultas (default 20, max 30) caps how many requests that costs, and the response says how many projects it saw out of the total Workana reports.

The same idea fills another gap: a logged-out project page doesn't show the budget or verified payment, so the server finds the project in the listings by title and fills those fields in.

Requests go through curl_cffi (presenting as Chrome), wait 1.5 s between calls and are cached for 5 minutes.

Your profile

By default it scores against a fullstack stack: React.js, Node.js, TypeScript, JavaScript, Next.js, Express.js, NestJS, HTML/CSS, API/REST, MongoDB, MySQL/SQL, Git and Firebase. Two ways to change it:

  • Per query, with the mis_skills parameter.

  • Permanently, with the WORKANA_MIS_SKILLS variable in the server config (comma-separated).

Install (Linux)

Register the run.sh launcher in Claude Desktop. On first run it installs its dependencies into .venv and logs to install.log.

  1. Claude Desktop → Settings → Developer → Edit config.

  2. Inside "mcpServers", add:

"workana": {
  "command": "bash",
  "args": ["/PATH/TO/workana-mcp/run.sh"]
}

Optionally, set your skills profile:

"workana": {
  "command": "bash",
  "args": ["/PATH/TO/workana-mcp/run.sh"],
  "env": { "WORKANA_MIS_SKILLS": "React.js,Node.js,TypeScript,Next.js,NestJS,PostgreSQL,Docker" }
}
  1. Fully restart Claude Desktop. The first start takes a minute or two while it installs. If the workana_* tools don't show up, check install.log.

Example prompts

  • "Give me today's best Workana opportunities for my stack."

  • "Find fixed-price React or Next projects posted in the last 24 hours with few proposals."

  • "Evaluate this project: https://www.workana.com/job/…"

  • "Find hourly Node.js projects paying at least 20 USD/h from clients in Spain or the US."

The tool's output is in Spanish, its author's first language.

Limitations

  • If Workana blocks requests, wait a few minutes and use fewer pages.

  • If Workana changes its site, parsers.py needs updating. The tests (.venv/bin/python tests/test_all.py) run against saved real responses and catch it.

  • Personal use, low volume. Don't use it to scrape at scale or to automate sending proposals: that violates Workana's terms and puts your account at risk.

License

MIT

Available Tools

4 tools
workana_buscar_proyectosA
Read-onlyIdempotent

Busca proyectos abiertos en Workana con filtros y les pone un puntaje rápido de oportunidad (0-100) según encaje con tu stack, competencia, presupuesto, cliente y frescura. Solo lee el listado público: para datos del cliente (proyectos pagados, antigüedad) usa workana_evaluar_proyecto.

ParametersJSON Schema
NameRequiredDescriptionDefault
textoNoTexto libre, p. ej. 'dashboard', 'ecommerce', 'api'.
idiomaNoIdioma del proyecto.es
skillsNoSkills de Workana (se combinan con O). Acepta nombres ('React', 'Node.js', 'TypeScript') o slugs ('react-js', 'node-js', 'typescript', 'next-js', 'express-js', 'nest-js', 'javascript', 'react-native', 'vue-js', 'angular', 'mongodb', 'mysql', 'sql', 'api', 'rest-api', 'firebase', 'docker', 'python', 'php', 'laravel', 'wordpress', 'shopify', 'chatbot', 'web-scraping'). Vacío = tu stack por defecto (React, Node, TypeScript, Next, Express, Nest). Pasa [] junto con 'texto' para buscar solo por texto.
formatoNo'markdown' para leer, 'json' para procesar.markdown
categoriaNoCategoría de Workana.programacion
modalidadNoTipo de contrato.
mis_skillsNoTu stack para calcular el encaje. Vacío = perfil por defecto (React, Node, TypeScript, Next…).
publicadosNoAntigüedad máxima del proyecto.semana
ordenar_porNoOrden del resultado.oportunidad
pais_clienteNoCódigo ISO del país del cliente, p. ej. 'AR', 'MX', 'ES', 'US'.
subcategoriaNoSubcategoría (solo para 'programacion').
max_consultasNoMáximo de peticiones al listado. Sin sesión Workana oculta 13 de cada 20 resultados, así que el servidor divide la búsqueda (por skill, modalidad, propuestas, subcategoría) para verlos todos. Más consultas = más completo pero más lento (~1,5 s c/u).
max_propuestasNoDescarta proyectos con más propuestas que esto.
tarifa_min_horaNoDescarta proyectos por hora cuya tarifa máxima sea menor (USD/h).
pocas_propuestasNoSolo proyectos con 0-4 propuestas.
presupuesto_min_usdNoDescarta proyectos de precio fijo cuyo máximo sea menor.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld and the safety profile, but the description adds the non-obvious behavior that results carry a computed opportunity score across five factors, and that it reads only the public listing. Rate-limit/scraping details live in the schema, not here, so it is not fully self-contained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the first front-loads purpose plus the scoring behavior, the second handles scope and the alternative. No filler, and the most decision-relevant content comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and the annotations plus the description cover the safety and scope profile. The only gap is that it does not point to the remaining sibling tools or note result volume limits, which the schema partially covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 16 parameters with enums, defaults, and semantics (e.g. max_consultas explains the request-splitting behavior). The description adds no parameter-level detail beyond loosely naming the scoring factors, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Busca), resource (proyectos abiertos en Workana), and an added behavior (scoring 0-100 by fit/competition/budget/client/freshness). It explicitly names the sibling workana_evaluar_proyecto as the tool for client data, so an agent can distinguish it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names a concrete alternative and the condition that routes to it ('para datos del cliente... usa workana_evaluar_proyecto') and scopes the tool with 'Solo lee el listado público'. It does not mention the other siblings (workana_mejores_oportunidades, workana_ver_proyecto), so guidance is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workana_evaluar_proyectoA
Read-onlyIdempotent

Analiza a fondo un proyecto y dice si vale la pena postularse: puntaje 0-100 con desglose (encaje de skills, competencia, presupuesto, calidad del cliente, frescura), alertas (pago fuera de Workana, trabajo gratis, contacto por WhatsApp…), puntos a favor/en contra y consejos para la propuesta.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatoNo'markdown' o 'json'.markdown
proyectoYesURL del proyecto o su slug.
mis_skillsNoTu stack. Vacío = perfil por defecto (React, Node, TypeScript, Next, Express…).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description goes further by disclosing what the analysis actually surfaces — scoring dimensions and specific risk alerts such as off-platform payment, unpaid work and WhatsApp contact — which is genuine behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action first and then packs the scoring dimensions and alert types into a tight parenthetical list. Dense but every clause carries information; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still communicates the shape of the result (score, breakdown, alerts, advice), and annotations cover the safety profile. The one gap is routing guidance relative to its siblings, so an agent knows when this analysis is warranted versus a plain project fetch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: 'proyecto', 'mis_skills' (with default-profile fallback) and 'formato' are all documented in the schema itself. The description adds no parameter-level detail, so the baseline 3 applies — the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Analiza a fondo un proyecto') and enumerates the concrete output: a 0-100 score with a breakdown across five dimensions, alerts, pros/cons and proposal tips. That is far more specific than a bare title, though it never explicitly contrasts itself with siblings like workana_ver_proyecto or workana_mejores_oportunidades.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: it's clearly the 'should I apply?' tool, which sits after ver_proyecto and alongside mejores_oportunidades. But there is no explicit when-to-use, when-not-to-use, or named alternative, leaving the agent to infer the routing from the sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workana_mejores_oportunidadesA
Read-onlyIdempotent

Flujo completo para el día: busca proyectos recientes de tu stack, descarta los malos (presupuesto bajo, demasiada competencia), analiza a fondo los mejores N (incluye historial de pagos del cliente) y los devuelve ordenados por puntaje con alertas y consejos. Ideal para una revisión diaria.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoCuántos proyectos analizar a fondo (1 petición extra c/u).
textoNoTexto libre opcional.
idiomaNoIdioma del proyecto.es
skillsNoSkills de Workana (se combinan con O). Acepta nombres ('React', 'Node.js', 'TypeScript') o slugs ('react-js', 'node-js', 'typescript', 'next-js', 'express-js', 'nest-js', 'javascript', 'react-native', 'vue-js', 'angular', 'mongodb', 'mysql', 'sql', 'api', 'rest-api', 'firebase', 'docker', 'python', 'php', 'laravel', 'wordpress', 'shopify', 'chatbot', 'web-scraping'). Vacío = tu stack por defecto (React, Node, TypeScript, Next, Express, Nest). Pasa [] junto con 'texto' para buscar solo por texto.
formatoNo'markdown' o 'json'.markdown
modalidadNoTipo de contrato.
mis_skillsNoTu stack. Vacío = perfil por defecto.
publicadosNoAntigüedad máxima.3d
max_consultasNoMáximo de peticiones al listado. Sin sesión Workana oculta 13 de cada 20 resultados, así que el servidor divide la búsqueda (por skill, modalidad, propuestas, subcategoría) para verlos todos. Más consultas = más completo pero más lento (~1,5 s c/u).
max_propuestasNoDescarta proyectos con más propuestas.
tarifa_min_horaNoMínimo para proyectos por hora (USD/h).
presupuesto_min_usdNoMínimo para proyectos de precio fijo (USD).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe, read-only, idempotent, open-world profile. The description goes beyond them by disclosing what the deep analysis actually does — it pulls the client's payment history and returns score-ordered results with alerts and tips, and it filters out low-budget / high-competition listings. It does not mention cost/time behavior, but that lives in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the action sequence and closed with the use case. No filler, and the ordered pipeline structure mirrors how the tool actually executes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and the description still usefully notes the ranking and alert content. For a 12-parameter, session-dependent scraping tool the remaining gaps (pagination cost, session caveats) are covered by the schema, so the description is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 12 parameters are already documented by the schema; baseline is 3. The description adds only a loose conceptual mapping ('mejores N' -> top, the 'presupuesto bajo / demasiada competencia' filter -> presupuesto_min_usd / max_propuestas) without adding syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific composite verb chain — search recent projects, discard bad ones, deeply analyze the best N, return them ranked — so an agent understands this is an orchestrating pipeline rather than a single lookup. It differentiates from the granular siblings (buscar/ver/evaluar) only implicitly by calling itself a 'flujo completo', but never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context ('Flujo completo para el día... Ideal para una revisión diaria'), which tells the agent this is a broad daily-sweep call. However, with three directly related siblings it never explains when to prefer workana_buscar_proyectos or workana_evaluar_proyecto instead, so the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workana_ver_proyectoB
Read-onlyIdempotent

Ficha completa de un proyecto: descripción entera, skills, presupuesto, propuestas, freelancers interesados, y datos del cliente (país, calificación, proyectos publicados/pagados, miembro desde, pago verificado, otros proyectos).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatoNo'markdown' o 'json'.markdown
proyectoYesURL del proyecto (https://www.workana.com/job/...) o su slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds only a catalog of returned fields and no behavioral context such as rate limits, auth requirements, or whether missing projects error out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the core purpose and then enumerates contents without filler. It is appropriately sized, though the long field inventory borders on restating the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and the annotations cover the safety profile, so it is largely complete for a read-only viewer. The enumeration of returned fields is somewhat redundant with the output schema, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the schema already documents 'proyecto' as a URL or slug and 'formato' as markdown/json. The description adds no syntax, format, or default guidance beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (ver/ficha completa de un proyecto) and enumerates exactly what the record contains (descripción, skills, presupuesto, propuestas, freelancers, datos del cliente). It is immediately clear what the tool returns, but it never distinguishes itself from siblings like workana_evaluar_proyecto or workana_buscar_proyectos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative routing guidance. It does not tell the agent to prefer workana_evaluar_proyecto for scoring or workana_buscar_proyectos for discovery, leaving the choice entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedworkana_buscar_proyectos
    • First observedworkana_evaluar_proyecto
    • First observedworkana_mejores_oportunidades
    • First observedworkana_ver_proyecto

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation4/5

The four tools operate at distinct scopes: listing search, single-project detail, deep evaluation, and a batch daily workflow. However, three of them emit a 0-100 opportunity score (buscar, evaluar, mejores_oportunidades), which risks confusion about which to use, though the descriptions cross-reference each other to clarify.

Naming Consistency4/5

All tools share the workana_ prefix and use Spanish naming, and three follow a verb_noun pattern (buscar_proyectos, ver_proyecto, evaluar_proyecto). The fourth, mejores_oportunidades, breaks the verb pattern with a noun phrase, a minor deviation.

Tool Count4/5

Four tools is on the lean side but each has a clear role in the search/evaluate pipeline. Nothing feels redundant enough to remove, though the surface is slightly thin for a job-hunting workflow.

Completeness3/5

The surface covers discovery and evaluation well, but there is no tool to actually submit a proposal or save/bookmark projects, despite the tools repeatedly referencing 'postularse' (applying). This is a notable gap in the lifecycle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI clients to read and query a daily job-scan dataset via four read-only tools, including searching job postings, viewing the latest report, and checking market statistics.
    4
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search a shared catalog of projects, roles, orders, participants, and mentors, create and update listings or profiles, draft proposals, and search and apply across external freelance and job platforms while keeping platform credentials local.
    13
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables any MCP host to search job listings and retrieve individual job details from a public job board's API/RSS through standardized tools. It provides read-only search and detail lookup with polite rate limiting and remote/location filtering.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to search and retrieve public job listings from web3.career through the search_jobs and get_job tools, with keyword, location, remote, date, and limit filters. It is read-only, returns structured job details such as title, company, location, and apply URL, and works with any MCP host.
    MIT