Upwork MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP mode (default: 3000) | 3000 |
| TRANSPORT | No | Transport mode: 'stdio' (default) or 'http' | stdio |
| UPWORK_ACCESS_TOKEN | Yes | Your Upwork OAuth2 access token |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| upwork_search_jobsA | Search for freelance jobs on Upwork with various filters. This tool searches the Upwork job marketplace and returns matching job listings. Use it to find opportunities based on skills, budget, category, and more. Args:
Returns: List of matching jobs with details including title, budget, skills, client info, and posting date. Examples:
Error Handling:
|
| upwork_get_jobA | Get detailed information about a specific Upwork job. Retrieves complete job details including full description, client history, and requirements. Args:
Returns: Complete job details including description, budget, skills, client info, and application requirements. Examples:
|
| upwork_list_saved_jobsA | List jobs you've saved/favorited on Upwork. Retrieves your saved jobs list for easy access to opportunities you're interested in. Args:
Returns: List of your saved jobs with basic details. |
| upwork_save_jobA | Save a job to your favorites or remove it from saved jobs. Use this to bookmark jobs you want to apply to later. Args:
Returns: Confirmation of the save/unsave action. |
| upwork_get_job_recommendationsA | Get personalized job recommendations based on your profile and history. Returns jobs that Upwork's algorithm thinks are a good match for your skills and experience. Args:
Returns: List of recommended jobs tailored to your profile. |
| upwork_list_proposalsA | List your submitted proposals on Upwork. View all your job applications and their current status. Args:
Returns: List of proposals with job titles, bid amounts, and status. Examples:
|
| upwork_get_proposalA | Get detailed information about a specific proposal. Retrieve the full proposal including cover letter, answers to screening questions, and current status. Args:
Returns: Complete proposal details including cover letter, bid, and status. |
| upwork_submit_proposalA | Submit a proposal (application) for a job on Upwork. Apply to a job with your cover letter and bid. This will use Connects from your account. Args:
Returns: Confirmation with proposal ID and Connects used. Examples:
Important:
|
| upwork_update_proposalA | Update an existing proposal. Modify your cover letter or bid amount before the client responds. Args:
Returns: Confirmation of the update. Note: You can only update proposals that are still pending. |
| upwork_withdraw_proposalA | Withdraw a submitted proposal. Remove your application from a job. Note that some Connects may not be refunded. Args:
Returns: Confirmation of withdrawal and any Connects refunded. Important: Withdrawn proposals cannot be undone. You would need to submit a new proposal. |
| upwork_get_proposal_statsA | Get statistics about your proposal activity. View your proposal success rate, response times, and trends. Args:
Returns: Statistics including total proposals, acceptance rate, and average response time. |
| upwork_list_contractsA | List your contracts on Upwork. View all your freelance contracts with clients. Args:
Returns: List of contracts with client info, earnings, and status. Examples:
|
| upwork_get_contractA | Get detailed information about a specific contract. Retrieve complete contract details including terms, milestones, and feedback. Args:
Returns: Complete contract details including payment terms, milestones, and client feedback. |
| upwork_get_work_diaryA | Get work diary entries for an hourly contract. View time tracked, screenshots, and activity levels for hourly work. Args:
Returns: Work diary entries with time tracked, memos, and activity data. Note: Only works for hourly contracts with time tracking enabled. |
| upwork_list_milestonesA | List milestones for a fixed-price contract. View all milestones, their status, and amounts. Args:
Returns: List of milestones with descriptions, amounts, and status. |
| upwork_submit_milestoneA | Submit work for a milestone on a fixed-price contract. Mark a milestone as complete and ready for client review. Args:
Returns: Confirmation of submission. Important: Only submit when work is complete. The client will review and approve or request changes. |
| upwork_request_paymentA | Request payment for work completed. For hourly contracts, request payment for tracked hours. For fixed-price, request milestone payment. Args:
Returns: Confirmation of payment request. |
| upwork_end_contractA | End an active contract. Close a contract and optionally leave feedback for the client. Args:
Returns: Confirmation of contract closure. Important: This action cannot be undone. Make sure all work is complete and payments are settled. |
| upwork_get_profileA | Get your Upwork freelancer profile information. Retrieve your profile details including title, skills, stats, and availability. Args:
Returns: Complete profile with overview, skills, earnings stats, and availability. |
| upwork_update_profileA | Update your Upwork freelancer profile. Modify your professional title, overview, hourly rate, skills, or availability. Args:
Returns: Confirmation of profile update. Tips:
|
| upwork_get_earningsA | Get your earnings report for a time period. View earnings summary, breakdown by contract, and pending/escrow amounts. Args:
Returns: Earnings summary with totals, averages, and per-contract breakdown. |
| upwork_get_transactionsB | Get your transaction history. View all financial transactions including earnings, withdrawals, and fees. Args:
Returns: List of transactions with amounts, types, and dates. |
| upwork_get_connectsA | Get your Connects balance. View your current Connects balance and usage history. Args:
Returns: Current Connects balance and recent usage. |
| upwork_get_job_success_scoreB | Get your Job Success Score (JSS) and related metrics. View your JSS, factors affecting it, and tips for improvement. Args:
Returns: Current JSS, calculation factors, and historical trend. |
| upwork_list_messagesB | List your message conversations on Upwork. View your message rooms with clients and other freelancers. Args:
Returns: List of message rooms with participants and last message preview. |
| upwork_send_messageA | Send a message in a conversation room. Send a message to a client or in a job/contract conversation. Args:
Returns: Confirmation of message sent. Important: Keep messages professional and relevant to the work. |
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 26 tools
Every tool maps to a distinct resource+action: job discovery, proposal lifecycle, contract management, financial metrics, profile, and messaging are cleanly separated. Even close pairs like get_earnings and get_transactions are clearly differentiated as summary versus detailed ledger, so an agent should not misselect.
All tools share the upwork_ prefix and use a consistent verb_noun pattern such as search_jobs, submit_proposal, end_contract, and send_message. There are no mixed casing styles, vague action verbs, or unpredictable naming deviations.
At 26 tools, the server is at the upper edge of what is reasonable and feels heavy, but the tools span the full freelancer lifecycle from job search through proposals, contracts, payments, and messaging. Most tools earn their place, so the count is borderline rather than egregiously bloated.
The core freelancer workflow is well covered: search and save jobs, submit and manage proposals, handle contracts, track work, request payment, and review financial metrics. Minor gaps like accepting client offers or managing client reviews mean some edge workflows still have dead ends.