upwork-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BID_RATE_MAX | No | The maximum hourly rate or bid amount allowed. | |
| BID_RATE_MIN | No | The minimum hourly rate or bid amount allowed. | |
| UPWORK_EMAIL | Yes | Your Upwork account email address. | |
| UPWORK_PASSWORD | Yes | Your Upwork account password. | |
| BID_RATE_DEFAULT | No | The default hourly rate or bid amount to use for proposals. | |
| BROWSER_HEADLESS | No | Whether to run the browser in headless mode. Set to 'false' for initial login or 2FA handling. | true |
| FREELANCER_NICHE | No | Your freelancer niche keywords, separated by commas (e.g., n8n,workflow automation,make.com). | |
| FREELANCER_TITLE | No | Your freelancer title (e.g., n8n Workflow Automation Expert). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| manual_loginA | Step 1: Open a visible browser window at Upwork login page. Returns immediately — you then login manually in the browser (solve CAPTCHA, enter credentials, handle 2FA). After login is complete, call save_session to persist the session. |
| save_sessionA | Step 2: After manually logging in via manual_login, call this to save the browser session. Checks if login was successful and saves cookies/storage for future headless use. Must be called AFTER you have fully logged in to Upwork in the browser window. |
| update_profileA | Update your Upwork freelancer profile fields. Can update: title, description/bio, hourly_rate, skills. Each field is optional — only provide what you want to change. Uses the edit buttons on your profile page (requires browser via connect-chrome.bat). |
| search_jobsB | Search for jobs on Upwork. Optimized for n8n workflow automation niche. Returns a list of jobs with title, budget, description snippet, required skills, client info, and proposal count. Use this to find potential clients and opportunities. |
| get_job_detailsA | Get full details of a specific Upwork job posting. Returns complete description, all screening questions, client history (jobs posted, hire rate, spend), required skills, budget, and proposal stats. ALWAYS call this before submitting a proposal to get screening questions and understand client context. |
| submit_proposalA | Submit a proposal/bid for an Upwork job. Before calling this:
The agent will automatically type and submit the proposal. |
| get_proposalsA | Get list of your submitted proposals on Upwork. Shows status, bid rate, submission date, and whether the client is interviewing you. Use this to track which proposals need follow-up. |
| get_messagesA | Read Upwork messages.
Use this to check for client responses, new invitations, and ongoing contract discussions. |
| send_messageA | Send a message in an Upwork conversation. Use this to:
Keep messages professional, specific to the project, and value-adding. |
| get_profileA | Get your Upwork freelancer profile, stats, and connects balance. Returns: name, title, skills, hourly rate, JSS score, Top Rated status, total earnings, connects balance. Use this to understand your current standing and available connects before bidding. |
| analyze_jobA | Analyze a job opportunity and score it across 5 dimensions to decide whether to apply. Scoring breakdown (100 pts max):
Returns: grade (A+/A/B/C/D/F), recommendation (APPLY NOW/APPLY/CONSIDER/SKIP/AVOID), suggested bid, estimated project value, key selling points, and proposal tips. RECOMMENDED WORKFLOW:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct action and resource: job analysis, details retrieval, messaging, profile, proposals, login, search, sending messages, proposal submission, and profile updates. No two tools overlap in purpose.
All tool names follow a clear verb_noun pattern with underscores (e.g., analyze_job, get_job_details, submit_proposal). The naming is uniform and predictable across the entire set.
With 11 tools, the server is well-scoped for its purpose of automating Upwork freelancer operations. Each tool serves a necessary function without redundancy or unnecessary bloat.
The tool set covers the full workflow from job search to proposal submission, messaging, and profile management. A minor gap is the lack of tools for withdrawing proposals or managing contracts, but the core operations are complete.