upwork-mcp
upwork-mcp
一个将 Claude 连接到 Upwork 的 模型上下文协议 (MCP) 服务器 —— 使 AI 智能体能够自主搜索工作、分析机会、提交提案并管理客户沟通。
适用于任何自由职业领域:开发、设计、写作、营销、自动化等。
功能
工具 | 描述 |
| 按关键词、类型、预算、经验水平搜索 Upwork 工作 |
| 获取完整的工作描述、筛选问题和客户历史记录 |
| 对工作进行 0–100 分的评分,涵盖领域契合度、客户质量、预算、竞争和清晰度 |
| 自动撰写并提交带有自定义求职信和报价的提案 |
| 列出已提交的提案及其当前状态 |
| 阅读对话并检查未读消息 |
| 在正在进行的对话中回复客户 |
| 查看您的自由职业者资料、JSS 分数和 Connects 余额 |
| 更新您的自由职业者资料标题、概述和技能 |
| 从已登录的 Chrome 标签页中捕获会话 Cookie |
架构
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网关/工作进程分离意味着您可以在不重启 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. 使用 CDP 启动 Chrome
connect-chrome-docker.bat这将启动带有远程调试功能的 Chrome 以及允许 Docker 连接的 CDP 代理。
3. 启动工作进程
docker compose up -d4. 捕获您的会话
在 Claude 中,调用 manual_login —— 它会从您已登录的 Chrome 标签页中提取 Cookie 并保存会话。您只需执行一次(或在会话过期后执行)。
连接到 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本地开发 (热重载)
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 可能会检测到异常活动。请使用合理的请求间隔,不要持续运行智能体。服务器通过 CDP 连接到您真实的 Chrome 配置文件,这比无头自动化更像真实的浏览器行为。
选择器稳定性
Upwork 的 UI 会定期更改。如果 UI 重新设计,src/tools/ 中的基于浏览器的选择器可能需要更新。
合理使用
仅自动化您自己的账户
遵守 Upwork 的服务条款
在生产环境使用前,请先审查提案
许可证
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/zcrossoverz/upwork-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server