upwork-mcp
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 chromiumpipを使用する場合
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環境変数
変数 | デフォルト | 説明 |
|
| プロファイル、ログ、テンプレート用のデータディレクトリ |
|
| レッドフラグ検出のための最低許容時給 |
認証
このサーバーは永続的なChromiumブラウザプロファイルを使用します。初回実行時に手動で認証を行ってください:
uv run upwork-mcp --no-headlessブラウザウィンドウが開きます。通常通りUpworkにログインしてください。セッションは ~/.upwork-mcp/profile/ に保存され、次回以降の実行で再利用されます。セッションは7日間操作がないと期限切れになります。
ツール
求人 (Jobs)
ツール | 説明 |
| フィルター付きキーワード検索。スコア付け・ランク付けされた結果を返します |
| クライアント履歴や面接率を含む求人の詳細 |
| 特定の求人を1〜10でスコアリング |
| 7つのレッドフラグ条件に基づいてクライアントをチェック |
|
|
提案書 (Proposals)
ツール | 説明 |
| 提出済み提案書のリストとステータス |
| 特定の提案書の詳細 |
| テンプレートから提案書をドラフト作成 |
| 提出前にドラフトをプレビュー |
| 書き込み — 提案書を提出( |
| 書き込み — 提出済み提案書を取り下げ( |
メッセージ (Messages)
ツール | 説明 |
| 未読会話のリスト |
| スレッド内の最新10件のメッセージを読み込み |
| 確認用に返信をドラフト作成 |
| 書き込み — メッセージを送信( |
契約 (Contracts)
ツール | 説明 |
| アクティブおよび過去の契約のリスト |
| 契約の詳細とマイルストーン |
| 契約の労働時間とメモの記録 |
プロファイル (Profile)
ツール | 説明 |
| プロファイルの名前とタイトル |
| 現在のConnects残高(残高不足警告付き) |
| JSS、Top Ratedステータス、総収益 |
セッションと監査 (Session & Audit)
ツール | 説明 |
| セッションが認証されているか確認 |
| 書き込み — ブラウザセッションを終了 |
| 書き込み — ブラウザコンテキストを再起動 |
| 直近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
Related MCP Connectors
The official Upwork MCP server, letting AI agents connect to Upwork and act on your behalf.
Free hosted MCP server: new Upwork jobs for your agent and Telegram alerts within a minute.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows