upwork-mcp
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 chromiumUsando pip
git clone https://github.com/kubegrind/upwork-mcp
cd upwork-mcp
pip install -e .
playwright install chromiumConfiguració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-mcpVariables de entorno
Variable | Predeterminado | Descripción |
|
| Directorio de datos para perfil, registros y plantillas |
|
| 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-headlessSe 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 |
| Busca por palabra clave con filtros; devuelve resultados puntuados y clasificados |
| Detalles completos del empleo, incluyendo historial del cliente y tasa de entrevistas |
| Puntúa un empleo específico del 1 al 10 |
| Comprueba un cliente frente a 7 condiciones de alerta |
| Ejecuta una búsqueda guardada desde |
Propuestas
Herramienta | Descripción |
| Lista de propuestas enviadas con estado |
| Detalles de una propuesta específica |
| Redacta una propuesta a partir de una plantilla |
| Previsualiza un borrador antes de enviarlo |
| ESCRITURA — envía una propuesta (requiere |
| ESCRITURA — retira una propuesta enviada (requiere |
Mensajes
Herramienta | Descripción |
| Lista de conversaciones no leídas |
| Lee los últimos 10 mensajes en un hilo |
| Redacta una respuesta para revisión |
| ESCRITURA — envía un mensaje (requiere |
Contratos
Herramienta | Descripción |
| Lista de contratos activos y pasados |
| Detalles del contrato e hitos |
| Horas y entradas de notas para un contrato |
Perfil
Herramienta | Descripción |
| Nombre y título de tu perfil |
| Saldo actual de connects con advertencia de saldo bajo |
| JSS, estado Top Rated y ganancias totales |
Sesión y Auditoría
Herramienta | Descripción |
| Verifica que la sesión esté autenticada |
| ESCRITURA — cierra la sesión del navegador |
| ESCRITURA — reinicia el contexto del navegador |
| 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) requierenconfirmed: 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 srcLicencia
MIT
Related MCP Connectors
The official Upwork MCP server, letting AI agents connect to Upwork and act on your behalf.
Free hosted MCP server: new Upwork jobs for your agent and Telegram alerts within a minute.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows