Skip to main content
Glama

upwork-mcp

MCP-сервер для автоматизации работы на Upwork. Ищите вакансии, составляйте и отправляйте заявки, управляйте сообщениями и контрактами — всё это из Claude Desktop или любого MCP-совместимого клиента.

Возможности

  • Поиск вакансий — поиск по ключевым словам с фильтрами (бюджет, почасовая ставка, уровень опыта, рейтинг клиента, свежесть), автоматическая оценка и обнаружение «красных флагов»

  • Рабочий процесс с заявками — создание черновиков по шаблонам, предварительный просмотр и отправка с явным подтверждением; действует суточный лимит

  • Проверка клиентов — проверка по 7 критериям «красных флагов» (верификация платежей, рейтинг, история найма, возраст аккаунта, количество повторных публикаций, объем заявок, минимальная почасовая ставка)

  • Сообщения — список непрочитанных диалогов, чтение переписки, создание черновиков и отправка ответов

  • Контракты — список активных/прошлых контрактов, просмотр деталей и записей в рабочем дневнике

  • Безопасность сессии — постоянный профиль Chromium, обнаружение Cloudflare, истечение срока действия через 7 дней бездействия, ограничение домена upwork.com

  • Журнал аудита — каждый вызов инструмента записывается в ~/.upwork-mcp/audit.log (только метаданные, без содержимого)

Требования

  • Python 3.11+

  • uv (рекомендуется) или pip

  • Действующая учетная запись Upwork

Установка

Использование uv (рекомендуется)

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

Использование pip

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

Конфигурация

Claude Desktop

Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %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

Переменные окружения

Переменная

По умолчанию

Описание

UPWORK_MCP_HOME

~/.upwork-mcp

Директория данных для профиля, логов, шаблонов

UPWORK_MCP_MIN_HOURLY_RATE

25

Минимальная приемлемая почасовая ставка для обнаружения «красных флагов»

Аутентификация

Сервер использует постоянный профиль браузера Chromium. При первом запуске выполните аутентификацию вручную:

uv run upwork-mcp --no-headless

Откроется окно браузера. Войдите в Upwork обычным способом. Сессия сохраняется в ~/.upwork-mcp/profile/ и используется повторно при последующих запусках. Сессии истекают через 7 дней бездействия.

Инструменты

Вакансии

Инструмент

Описание

upwork_search_jobs

Поиск по ключевым словам с фильтрами; возвращает оцененные и ранжированные результаты

upwork_get_job_details

Полные детали вакансии, включая историю клиента и процент приглашений на интервью

upwork_score_job

Оценка конкретной вакансии от 1 до 10

upwork_flag_client

Проверка клиента по 7 критериям «красных флагов»

upwork_run_saved_search

Запуск сохраненного поиска из ~/.upwork-mcp/searches/<name>.json

Заявки

Инструмент

Описание

upwork_get_proposals

Список отправленных заявок со статусами

upwork_get_proposal_details

Детали конкретной заявки

upwork_draft_proposal

Создание черновика заявки по шаблону

upwork_preview_proposal

Предварительный просмотр черновика перед отправкой

upwork_submit_proposal

ЗАПИСЬ — отправка заявки (требуется confirmed: true)

upwork_withdraw_proposal

ЗАПИСЬ — отзыв отправленной заявки (требуется confirmed: true)

Сообщения

Инструмент

Описание

upwork_get_messages

Список непрочитанных диалогов

upwork_get_conversation

Чтение последних 10 сообщений в ветке

upwork_draft_message

Создание черновика ответа для проверки

upwork_send_message

ЗАПИСЬ — отправка сообщения (требуется confirmed: true)

Контракты

Инструмент

Описание

upwork_get_contracts

Список активных и прошлых контрактов

upwork_get_contract_details

Детали контракта и этапы

upwork_get_work_diary

Часы и записи в рабочем дневнике для контракта

Профиль

Инструмент

Описание

upwork_get_my_profile

Имя и заголовок из вашего профиля

upwork_get_connects_balance

Текущий баланс Connects с предупреждением о низком остатке

upwork_get_profile_stats

JSS, статус Top Rated и общий заработок

Сессия и аудит

Инструмент

Описание

upwork_check_session

Проверка аутентификации сессии

upwork_close_session

ЗАПИСЬ — закрытие сессии браузера

upwork_rotate_session

ЗАПИСЬ — перезапуск контекста браузера

upwork_view_audit_log

Просмотр последних N записей журнала аудита

Шаблоны заявок

Шаблоны хранятся в ~/.upwork-mcp/templates/. Шаблон по умолчанию загружается из default.txt, если он существует. Передайте имя файла через template_name, чтобы использовать пользовательский шаблон.

Поддерживаемые переменные:

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

Пример шаблона (~/.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}

Сохраненные поиски

Создавайте JSON-файлы в ~/.upwork-mcp/searches/ для сохранения конфигураций поиска:

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

Запуск через upwork_run_saved_search(search_name="devops").

Оценка вакансий

Вакансии оцениваются по шкале 1–10 с использованием взвешенной модели:

Фактор

Вес

Соответствие бюджету

30%

Соответствие навыкам

25%

Качество клиента

20%

Конкуренция заявок

15%

Свежесть

10%

Вакансии с оценкой ниже 4.0 фильтруются из результатов. Вакансии с оценкой 7.0 и выше помечаются как [HIGH PRIORITY].

Безопасность

  • Инструменты ЗАПИСИ (submit_proposal, withdraw_proposal, send_message, close_session, rotate_session) требуют confirmed: true — модель не может действовать без явного подтверждения пользователя

  • Суточный лимит заявок — жесткое ограничение в 10 заявок в день

  • Ограничение домена — навигация в браузере ограничена upwork.com

  • Отсутствие утечки учетных данных — файлы cookie и токены никогда не возвращаются, не записываются в логи и не выводятся на экран

  • Защита от обхода путей — имена файлов шаблонов и сохраненных поисков проверяются с помощью Path.is_relative_to()

  • Журнал аудита — все вызовы инструментов записываются с указанием времени, типа действия, цели и статуса

Разработка

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

Лицензия

MIT

Related MCP Connectors