upwork-mcp
upwork-mcp
Сервер протокола контекста модели (MCP), который подключает Claude к Upwork, позволяя ИИ-агентам автономно искать вакансии, анализировать возможности, отправлять предложения и управлять общением с клиентами.
Подходит для любой фриланс-ниши: разработка, дизайн, копирайтинг, маркетинг, автоматизация и многое другое.
Функции
Инструмент | Описание |
| Поиск вакансий на Upwork по ключевым словам, типу, бюджету, уровню опыта |
| Получение полного описания вакансии, проверочных вопросов и истории клиента |
| Оценка вакансии от 0 до 100 по соответствию нише, качеству клиента, бюджету, конкуренции и ясности |
| Автоматическое написание и отправка предложения с индивидуальным сопроводительным письмом и ставкой |
| Список отправленных предложений и их текущий статус |
| Чтение переписки и проверка непрочитанных сообщений |
| Ответ клиентам в текущих диалогах |
| Просмотр профиля фрилансера, рейтинга JSS и баланса Connects |
| Обновление заголовка, описания и навыков в профиле фрилансера |
| Захват сессионных cookie из уже авторизованной вкладки Chrome |
Related MCP server: offer-quest mcp
Архитектура
Claude Agent
│
▼
MCP Gateway (stdio, never restarts)
│ HTTP POST /tool
▼
Worker Server (port 47821, hot-reloads on code changes)
│
▼
CDP Proxy (port 9223, rewrites Host headers)
│
▼
Chrome on host (port 9222, Playwright CDP connection)
│
▼
Upwork Web UIРазделение на шлюз (gateway) и рабочий процесс (worker) означает, что вы можете обновлять логику инструментов без перезапуска Claude или вашего MCP-клиента.
Предварительные требования
Node.js 20+
Docker + Docker Compose
Установленный Google Chrome
Аккаунт фрилансера на Upwork
Быстрый старт (Docker)
1. Клонирование и настройка
git clone https://github.com/zcrossoverz/upwork-mcp.git
cd upwork-mcp
cp .env.example .envОтредактируйте .env:
UPWORK_EMAIL=your@email.com
UPWORK_PASSWORD=yourpassword
FREELANCER_NAME=Your Name
FREELANCER_TITLE=Your Professional Title
FREELANCER_NICHE=your,skills,here
BID_RATE_DEFAULT=40
BID_RATE_MIN=25
BID_RATE_MAX=1002. Запуск Chrome с CDP
connect-chrome-docker.batЭто запускает Chrome с удаленной отладкой и прокси-сервером CDP, который позволяет Docker подключиться к нему.
3. Запуск рабочего процесса (worker)
docker compose up -d4. Захват сессии
В Claude вызовите manual_login — он извлечет cookie из вашей авторизованной вкладки Chrome и сохранит сессию. Это нужно сделать только один раз (или после истечения срока действия сессии).
Подключение к Claude Code
Добавьте в конфигурацию MCP (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"upwork": {
"command": "node",
"args": ["/absolute/path/to/upwork-mcp/dist/gateway.js"],
"env": {
"WORKER_PORT": "47821"
}
}
}
}Или через CLI:
claude mcp add upwork node /absolute/path/to/upwork-mcp/dist/gateway.jsЛокальная разработка (Hot Reload)
npm install
npm run worker # starts tsc --watch + nodemon on dist/worker.jsШлюз (dist/gateway.js) работает отдельно и проксирует запросы к локальному рабочему процессу — изменения в любом файле инструмента мгновенно перезагружают рабочий процесс без перезапуска Claude.
Рекомендуемый рабочий процесс агента
1. manual_login → Capture session (first time / session expired)
2. get_profile → Check connects balance before bidding
3. search_jobs → Find relevant jobs by keyword
4. get_job_details → Get full description + screening questions
5. analyze_job → Score the opportunity (skip grade D or F)
6. submit_proposal → Auto-bid with personalized cover letter
7. get_messages → Check for client responses
8. send_message → Reply to clients
9. get_proposals → Track active proposalsПример промпта для агента
Search for freelance jobs matching my skills posted in the last 3 days.
For each job with grade A or B:
1. Get full job details
2. Analyze the opportunity
3. Write a personalized proposal highlighting my relevant experience
4. Submit at the recommended bid rateОценка вакансий
Инструмент analyze_job оценивает каждую вакансию по 5 параметрам:
Параметр | Макс. баллов | Что измеряет |
Соответствие нише | 30 | Совпадение ключевых слов вакансии и вашего |
Качество клиента | 25 | Рейтинг, общие расходы, процент найма, подтвержденный способ оплаты |
Соответствие бюджету | 20 | Бюджет против вашей целевой ставки, оценочная стоимость проекта |
Конкуренция | 10 | Количество существующих предложений (меньше — лучше) |
Ясность проекта | 10 | Детализация описания, указанные навыки, определенный бюджет |
«Красные флаги» | -5 за каждый | Размытый объем работ, признаки низкого бюджета, отсутствие истории клиента |
Оценки:
Оценка | Баллы | Действие |
A+ | 90–100 | ОТКЛИКНУТЬСЯ СЕЙЧАС — высокий приоритет |
A | 75–89 | ОТКЛИКНУТЬСЯ — отличная возможность |
B | 60–74 | ОТКЛИКНУТЬСЯ — стоит рассмотреть |
C | 45–59 | ПОДУМАТЬ — частичное соответствие |
D | 30–44 | ПРОПУСТИТЬ |
F | <30 | ИЗБЕГАТЬ |
Структура проекта
upwork-mcp/
├── src/
│ ├── gateway.ts # MCP stdio gateway (thin proxy, never restarts)
│ ├── worker.ts # HTTP tool server (hot-reloads via nodemon)
│ ├── config.ts # Environment configuration
│ ├── browser/
│ │ ├── browser-manager.ts # Playwright CDP connection manager
│ │ └── upwork-auth.ts # Session management
│ └── tools/
│ ├── search-jobs.ts
│ ├── get-job-details.ts
│ ├── analyze-job.ts # Scoring engine
│ ├── submit-proposal.ts
│ ├── get-proposals.ts
│ ├── get-messages.ts
│ ├── send-message.ts
│ ├── get-profile.ts
│ ├── update-profile.ts
│ └── manual-login.ts # CDP cookie extractor
├── cdp-proxy.cjs # Host-side proxy: Docker → Chrome (fixes Host header)
├── connect-chrome-docker.bat # Launch Chrome + CDP proxy (for Docker use)
├── connect-chrome.bat # Launch Chrome only (for local use)
├── Dockerfile
├── docker-compose.yml
└── .env.exampleПримечания
Управление сессией
Вход в систему осуществляется вручную через manual_login. Откройте Chrome, войдите в Upwork обычным способом (включая 2FA), затем вызовите manual_login — он захватит все cookie и сохранит их для повторного использования в Playwright.
Обнаружение ботов
Upwork может обнаруживать необычную активность. Используйте разумные интервалы между запросами и не запускайте агента непрерывно. Сервер подключается к вашему реальному профилю Chrome через CDP, что ведет себя больше как реальный браузер, чем headless-автоматизация.
Стабильность селекторов
Интерфейс Upwork периодически меняется. Селекторы на основе браузера в src/tools/ могут потребовать обновления в случае редизайна интерфейса.
Этичное использование
Автоматизируйте только свой собственный аккаунт
Соблюдайте Условия использования Upwork
Проверяйте предложения перед отправкой при использовании в реальных условиях
Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables seamless interaction with LinkedIn for job applications, profile retrieval, feed browsing, and resume analysis through natural language commands.31
- AlicenseBqualityDmaintenanceA fast, secure, and LLM-friendly Model Context Protocol (MCP) server that scrapes job listings from major platforms (LinkedIn, Indeed, Google) and converts them into structured Markdown format.11MIT
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server for automating Upwork workflows including job search, proposal submission, client communication, and contract management. It provides tools for client vetting, template-based proposals, and session safety with audit logging.
- AlicenseAqualityFmaintenanceMCP server for Upwork via browser automation. Enables Claude Code to search jobs, manage proposals, messages, and contracts on Upwork.1855Apache 2.0
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
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/zcrossoverz/upwork-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server