Skip to main content
Glama

upwork-mcp

一个将 Claude 连接到 Upwork 的 模型上下文协议 (MCP) 服务器 —— 使 AI 智能体能够自主搜索工作、分析机会、提交提案并管理客户沟通。

适用于任何自由职业领域:开发、设计、写作、营销、自动化等。


功能

工具

描述

search_jobs

按关键词、类型、预算、经验水平搜索 Upwork 工作

get_job_details

获取完整的工作描述、筛选问题和客户历史记录

analyze_job

对工作进行 0–100 分的评分,涵盖领域契合度、客户质量、预算、竞争和清晰度

submit_proposal

自动撰写并提交带有自定义求职信和报价的提案

get_proposals

列出已提交的提案及其当前状态

get_messages

阅读对话并检查未读消息

send_message

在正在进行的对话中回复客户

get_profile

查看您的自由职业者资料、JSS 分数和 Connects 余额

update_profile

更新您的自由职业者资料标题、概述和技能

manual_login

从已登录的 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=100

2. 使用 CDP 启动 Chrome

connect-chrome-docker.bat

这将启动带有远程调试功能的 Chrome 以及允许 Docker 连接的 CDP 代理。

3. 启动工作进程

docker compose up -d

4. 捕获您的会话

在 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

工作与您的 FREELANCER_NICHE 之间的关键词匹配度

客户质量

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/ 中的基于浏览器的选择器可能需要更新。

合理使用


许可证

MIT

Install Server
F
license - not found
A
quality
C
maintenance

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