Skip to main content
Glama

upwork-mcp

Un servidor MCP para la automatización de Upwork. Busca empleos, redacta y envía propuestas, gestiona mensajes y contratos, todo desde Claude Desktop o cualquier cliente compatible con MCP.

Características

  • Búsqueda de empleos — búsqueda por palabras clave con filtros (presupuesto, tarifa horaria, nivel de experiencia, calificación del cliente, antigüedad), puntuación automática y detección de señales de alerta.

  • Flujo de trabajo de propuestas — redacta a partir de plantillas, previsualiza y envía con confirmación explícita; límite diario aplicado.

  • Evaluación de clientes — comprobador de 7 condiciones de alerta (verificación de pago, calificación, historial de contrataciones, antigüedad de la cuenta, número de republicaciones, volumen de propuestas, tarifa horaria mínima).

  • Mensajes — lista de conversaciones no leídas, lectura de hilos, redacción y envío de respuestas.

  • Contratos — lista de contratos activos/pasados, visualización de detalles y entradas del diario de trabajo.

  • Seguridad de sesión — perfil de Chromium persistente, detección de Cloudflare, caducidad por inactividad de 7 días, restricción de dominio a upwork.com.

  • Registro de auditoría — cada llamada a herramienta se añade a ~/.upwork-mcp/audit.log (solo metadatos, sin contenido).

Requisitos

  • Python 3.11+

  • uv (recomendado) o pip

  • Una cuenta de Upwork válida

Instalación

Usando uv (recomendado)

git clone https://github.com/kubegrind/upwork-mcp
cd upwork-mcp
uv sync
uv run playwright install chromium

Usando pip

git clone https://github.com/kubegrind/upwork-mcp
cd upwork-mcp
pip install -e .
playwright install chromium

Configuración

Claude Desktop

Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "upwork": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/upwork-mcp",
        "run",
        "upwork-mcp"
      ]
    }
  }
}

Claude Code

claude mcp add upwork -- uv --directory /absolute/path/to/upwork-mcp run upwork-mcp

Variables de entorno

Variable

Predeterminado

Descripción

UPWORK_MCP_HOME

~/.upwork-mcp

Directorio de datos para perfil, registros y plantillas

UPWORK_MCP_MIN_HOURLY_RATE

25

Tarifa horaria mínima aceptable para la detección de señales de alerta

Autenticación

El servidor utiliza un perfil de navegador Chromium persistente. En la primera ejecución, autentícate manualmente:

uv run upwork-mcp --no-headless

Se abrirá una ventana del navegador. Inicia sesión en Upwork normalmente. La sesión se guarda en ~/.upwork-mcp/profile/ y se reutiliza en ejecuciones posteriores. Las sesiones caducan tras 7 días de inactividad.

Herramientas

Empleos

Herramienta

Descripción

upwork_search_jobs

Busca por palabra clave con filtros; devuelve resultados puntuados y clasificados

upwork_get_job_details

Detalles completos del empleo, incluyendo historial del cliente y tasa de entrevistas

upwork_score_job

Puntúa un empleo específico del 1 al 10

upwork_flag_client

Comprueba un cliente frente a 7 condiciones de alerta

upwork_run_saved_search

Ejecuta una búsqueda guardada desde ~/.upwork-mcp/searches/<name>.json

Propuestas

Herramienta

Descripción

upwork_get_proposals

Lista de propuestas enviadas con estado

upwork_get_proposal_details

Detalles de una propuesta específica

upwork_draft_proposal

Redacta una propuesta a partir de una plantilla

upwork_preview_proposal

Previsualiza un borrador antes de enviarlo

upwork_submit_proposal

ESCRITURA — envía una propuesta (requiere confirmed: true)

upwork_withdraw_proposal

ESCRITURA — retira una propuesta enviada (requiere confirmed: true)

Mensajes

Herramienta

Descripción

upwork_get_messages

Lista de conversaciones no leídas

upwork_get_conversation

Lee los últimos 10 mensajes en un hilo

upwork_draft_message

Redacta una respuesta para revisión

upwork_send_message

ESCRITURA — envía un mensaje (requiere confirmed: true)

Contratos

Herramienta

Descripción

upwork_get_contracts

Lista de contratos activos y pasados

upwork_get_contract_details

Detalles del contrato e hitos

upwork_get_work_diary

Horas y entradas de notas para un contrato

Perfil

Herramienta

Descripción

upwork_get_my_profile

Nombre y título de tu perfil

upwork_get_connects_balance

Saldo actual de connects con advertencia de saldo bajo

upwork_get_profile_stats

JSS, estado Top Rated y ganancias totales

Sesión y Auditoría

Herramienta

Descripción

upwork_check_session

Verifica que la sesión esté autenticada

upwork_close_session

ESCRITURA — cierra la sesión del navegador

upwork_rotate_session

ESCRITURA — reinicia el contexto del navegador

upwork_view_audit_log

Visualiza las últimas N entradas del registro de auditoría

Plantillas de propuestas

Las plantillas se encuentran en ~/.upwork-mcp/templates/. La plantilla predeterminada se carga desde default.txt si existe. Pasa un nombre de archivo a través de template_name para usar una plantilla personalizada.

Variables admitidas:

{job_title}         {client_name}       {key_skill}
{estimated_timeline} {rate}             {years_experience}
{industries}        {custom_paragraph}  {start_date}
{your_name}

Ejemplo de plantilla (~/.upwork-mcp/templates/default.txt):

Hi {client_name},

I noticed you're looking for {key_skill} help on {job_title}.
I have {years_experience} years of relevant experience and can deliver {estimated_timeline}.

My rate is {rate}.

{your_name}

Búsquedas guardadas

Crea archivos JSON en ~/.upwork-mcp/searches/ para guardar configuraciones de búsqueda:

{
  "query": "devops kubernetes",
  "experience_level": "expert",
  "budget_min": 500,
  "client_rating_min": 4.5
}

Ejecuta con upwork_run_saved_search(search_name="devops").

Puntuación de empleos

Los empleos se puntúan del 1 al 10 usando un modelo ponderado:

Factor

Peso

Coincidencia de presupuesto

30%

Coincidencia de habilidades

25%

Calidad del cliente

20%

Competencia de propuestas

15%

Antigüedad

10%

Los empleos con una puntuación inferior a 4.0 se filtran de los resultados. Los empleos con una puntuación de 7.0 o superior se marcan como [HIGH PRIORITY].

Seguridad

  • Herramientas de ESCRITURA (submit_proposal, withdraw_proposal, send_message, close_session, rotate_session) requieren confirmed: true — el modelo no puede actuar sin la confirmación explícita del usuario.

  • Límite diario de propuestas — bloqueo estricto a 10 envíos por día.

  • Restricción de dominio — la navegación del navegador está restringida a upwork.com.

  • Sin exposición de credenciales — las cookies y los tokens nunca se devuelven, registran ni imprimen.

  • Protección contra recorrido de rutas — los nombres de archivo de plantillas y búsquedas guardadas se validan con Path.is_relative_to().

  • Registro de auditoría — todas las llamadas a herramientas se registran con marca de tiempo, tipo de acción, destino y estado.

Desarrollo

uv sync --extra dev
uv run pytest
uv run ruff check src
uv run mypy src

Licencia

MIT

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

View all MCP Connectors

Latest Blog Posts

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/kubegrind/upwork-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server