Skip to main content
Glama

upwork-mcp

Upwork自動化のためのMCPサーバーです。Claude DesktopやMCP互換クライアントから、求人検索、提案書のドラフト作成・提出、メッセージや契約の管理をすべて行えます。

機能

  • 求人検索 — フィルター(予算、時給、経験レベル、クライアント評価、新着順)を使用したキーワード検索、自動スコアリング、レッドフラグ検出

  • 提案書ワークフロー — テンプレートからのドラフト作成、プレビュー、明示的な確認を伴う提出。1日の提出制限あり

  • クライアント審査 — 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 を必要とします。ユーザーの明示的な確認なしにモデルが操作を行うことはできません。

  • 1日の提案制限 — 1日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