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
This server cannot be installed
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.
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/kubegrind/upwork-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server