Skip to main content
Glama

upwork-mcp

Upwork 자동화를 위한 MCP 서버입니다. Claude Desktop이나 MCP 호환 클라이언트에서 직접 작업을 검색하고, 제안서를 작성 및 제출하며, 메시지와 계약을 관리할 수 있습니다.

기능

  • 작업 검색 — 필터(예산, 시간당 요금, 숙련도, 클라이언트 평점, 최신순)를 사용한 키워드 검색, 자동 점수 산정 및 위험 요소(red-flag) 감지

  • 제안서 워크플로우 — 템플릿을 통한 초안 작성, 미리보기, 명시적 확인 후 제출; 일일 제출 제한 적용

  • 클라이언트 검증 — 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일간 비활동 시 만료됩니다.

도구

작업 (Jobs)

도구

설명

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에 저장된 검색 실행

제안서 (Proposals)

도구

설명

upwork_get_proposals

제출된 제안서 목록 및 상태 확인

upwork_get_proposal_details

특정 제안서의 세부 정보

upwork_draft_proposal

템플릿을 사용하여 제안서 초안 작성

upwork_preview_proposal

제출 전 제안서 초안 미리보기

upwork_submit_proposal

쓰기 — 제안서 제출 (confirmed: true 필요)

upwork_withdraw_proposal

쓰기 — 제출된 제안서 철회 (confirmed: true 필요)

메시지 (Messages)

도구

설명

upwork_get_messages

읽지 않은 대화 목록 확인

upwork_get_conversation

스레드의 최근 메시지 10개 읽기

upwork_draft_message

검토를 위한 답장 초안 작성

upwork_send_message

쓰기 — 메시지 전송 (confirmed: true 필요)

계약 (Contracts)

도구

설명

upwork_get_contracts

활성 및 과거 계약 목록 확인

upwork_get_contract_details

계약 세부 정보 및 마일스톤

upwork_get_work_diary

계약에 대한 시간 및 메모 항목

프로필 (Profile)

도구

설명

upwork_get_my_profile

프로필의 이름 및 직함

upwork_get_connects_balance

현재 Connects 잔액 및 잔액 부족 경고

upwork_get_profile_stats

JSS, Top Rated 상태 및 총 수익

세션 및 감사 (Session & Audit)

도구

설명

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}

저장된 검색

~/.upwork-mcp/searches/에 JSON 파일을 생성하여 검색 설정을 저장하세요:

{
  "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으로 제한됨

  • 자격 증명 노출 방지 — 쿠키와 토큰은 절대 반환, 기록 또는 출력되지 않음

  • 경로 탐색 보호 — 템플릿 및 저장된 검색 파일명은 Path.is_relative_to()로 검증됨

  • 감사 로그 — 모든 도구 호출은 타임스탬프, 작업 유형, 대상, 상태와 함께 기록됨

개발

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

라이선스

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