Upwork MCP Server
Enables AI assistants to interact with the Upwork freelance marketplace, including job search, proposal management, contract tracking, and earnings monitoring.
README
Upwork MCP Server
A Model Context Protocol (MCP) server for interacting with the Upwork freelance marketplace. Search jobs, manage proposals, track contracts, and monitor earnings - all through AI assistants like Claude.
Features
Job Search & Discovery
- Search Jobs: Find freelance opportunities with filters for skills, budget, category, experience level, and more
- Get Job Details: View complete job information including client history and requirements
- Save Jobs: Bookmark jobs for later review
- Get Recommendations: Personalized job suggestions based on your profile
Proposal Management
- Submit Proposals: Apply to jobs with cover letters and custom bids
- Track Proposals: Monitor proposal status (pending, accepted, declined)
- Update Proposals: Modify bids and cover letters before client response
- Withdraw Proposals: Cancel applications when needed
- View Statistics: Analyze your proposal success rates
Contract Management
- List Contracts: View all your active, paused, and completed contracts
- Contract Details: See terms, milestones, and feedback
- Work Diary: Track time logged on hourly contracts
- Milestones: Manage fixed-price project milestones
- Request Payment: Submit work and request payment
- End Contracts: Close contracts with feedback
Profile & Earnings
- View Profile: See your complete freelancer profile
- Update Profile: Modify title, skills, rate, and availability
- Earnings Reports: Detailed income breakdown by period and contract
- Transaction History: View all financial transactions
- Connects Balance: Monitor your proposal credits
- Job Success Score: Track your JSS and factors
Messaging
- List Conversations: View all message rooms with clients
- Read Messages: Access full conversation history
- Send Messages: Communicate with clients
Installation
# Clone or download the server
cd upwork-mcp-server
# Install dependencies
npm install
# Build the server
npm run build
Configuration
Getting Your Access Token
- Go to Upwork API Center
- Create a new API application or select an existing one
- Request OAuth 2.0 credentials
- Generate an access token with appropriate scopes
Environment Variables
# Required
UPWORK_ACCESS_TOKEN=your_oauth2_access_token
# Optional (for HTTP mode)
PORT=3000
TRANSPORT=http # or 'stdio' (default)
Usage
With Claude Desktop
Add to your Claude Desktop configuration (~/.config/claude/claude_desktop_config.json on macOS/Linux or %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"upwork": {
"command": "node",
"args": ["/path/to/upwork-mcp-server/dist/index.js"],
"env": {
"UPWORK_ACCESS_TOKEN": "your_token_here"
}
}
}
}
Command Line
# Run with stdio (default)
UPWORK_ACCESS_TOKEN=xxx npm start
# Run as HTTP server
UPWORK_ACCESS_TOKEN=xxx npm start -- --http
# Development mode with auto-reload
UPWORK_ACCESS_TOKEN=xxx npm run dev
HTTP API
When running in HTTP mode, the server exposes:
POST /mcp- MCP protocol endpointGET /health- Health check
Available Tools
Jobs
| Tool | Description |
|---|---|
upwork_search_jobs |
Search jobs with filters |
upwork_get_job |
Get detailed job information |
upwork_list_saved_jobs |
List your saved jobs |
upwork_save_job |
Save/unsave a job |
upwork_get_job_recommendations |
Get personalized recommendations |
Proposals
| Tool | Description |
|---|---|
upwork_list_proposals |
List your proposals |
upwork_get_proposal |
Get proposal details |
upwork_submit_proposal |
Submit a new proposal |
upwork_update_proposal |
Update an existing proposal |
upwork_withdraw_proposal |
Withdraw a proposal |
upwork_get_proposal_stats |
Get proposal statistics |
Contracts
| Tool | Description |
|---|---|
upwork_list_contracts |
List your contracts |
upwork_get_contract |
Get contract details |
upwork_get_work_diary |
Get work diary entries |
upwork_list_milestones |
List contract milestones |
upwork_submit_milestone |
Submit milestone work |
upwork_request_payment |
Request payment |
upwork_end_contract |
End a contract |
Profile & Earnings
| Tool | Description |
|---|---|
upwork_get_profile |
Get freelancer profile |
upwork_update_profile |
Update your profile |
upwork_get_earnings |
Get earnings report |
upwork_get_transactions |
Get transaction history |
upwork_get_connects |
Get Connects balance |
upwork_get_job_success_score |
Get your JSS |
Messages
| Tool | Description |
|---|---|
upwork_list_messages |
List message rooms/conversations |
upwork_send_message |
Send a message |
Examples
Search for React Jobs
Use upwork_search_jobs with:
- query: "react developer"
- skills: ["react", "javascript", "typescript"]
- job_type: "hourly"
- experience_level: "intermediate"
Submit a Proposal
Use upwork_submit_proposal with:
- job_id: "~01abc123..."
- cover_letter: "Your personalized cover letter..."
- bid_amount: 50
- bid_type: "hourly"
Check Earnings
Use upwork_get_earnings with:
- start_date: "2024-01-01"
- end_date: "2024-12-31"
API Scopes
The server requires these Upwork API scopes:
job:read- Search and view jobsproposal:read,proposal:write- Manage proposalscontract:read,contract:write- Manage contractsprofile:read,profile:write- Access and update profileearning:read- View earningsmessage:read,message:write- Access messages
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Clean build artifacts
npm run clean
License
MIT
Resources
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.