@chinchillaenterprises/mcp-upwork
Version:
Modular Upwork MCP server for job search and proposal management via Upwork API
242 lines (180 loc) • 7.17 kB
Markdown
# MCP Upwork Server
[](https://www.npmjs.com/package/@chinchillaenterprises/mcp-upwork)
A comprehensive Model Context Protocol (MCP) server for Upwork API integration, providing 20+ powerful tools for managing freelancer and client workflows through natural language interactions with Claude.
## 🚀 Quick Start
```bash
# Install the server
claude mcp add upwork -s user \
-e UPWORK_API_KEY=your_api_key \
-e UPWORK_API_SECRET=your_api_secret \
-e UPWORK_ACCESS_TOKEN=your_access_token \
-- npx @chinchillaenterprises/mcp-upwork
# Start Claude and try it out
claude
# Try: "Search for JavaScript jobs on Upwork" or "Show me my active contracts"
```
## 📋 Available Tools
### 🔍 Job Search & Discovery
- **`upwork_search_jobs`** - Search for jobs with advanced filters (skills, budget, duration, etc.)
- **`upwork_get_job_details`** - Get detailed information about a specific job
### 📝 Proposals Management
- **`upwork_submit_proposal`** - Submit proposals with cover letters and pricing
- **`upwork_list_proposals`** - List your submitted proposals with status filters
### 📄 Contracts Management
- **`upwork_list_contracts`** - View your active and completed contracts
- **`upwork_get_contract_details`** - Get detailed contract information
### ⏰ Work Diary & Time Tracking
- **`upwork_get_work_diary`** - View work diary entries for specific dates
- **`upwork_log_time`** - Log time for hourly contracts
### 💬 Messages & Communication
- **`upwork_list_messages`** - List conversations and messages
- **`upwork_send_message`** - Send messages to clients or freelancers
### 💰 Earnings & Reports
- **`upwork_get_earnings`** - Get earnings reports for different periods
### 👤 Profile Management
- **`upwork_get_profile`** - View your Upwork profile
- **`upwork_update_profile`** - Update profile information (title, skills, rates)
### 🎯 Milestones (Fixed-Price Projects)
- **`upwork_create_milestone`** - Create milestones for fixed-price contracts
- **`upwork_release_milestone`** - Release milestone payments (clients)
### 🔗 Connects Management
- **`upwork_get_connects_balance`** - Check your current connects balance
- **`upwork_purchase_connects`** - Purchase additional connects
### 👥 Client Tools
- **`upwork_search_freelancers`** - Search for freelancers (client feature)
- **`upwork_post_job`** - Post new jobs (client feature)
## 🔧 Installation
### Prerequisites
- An Upwork account with API access
- Claude Code installed
- Your Upwork API credentials (Key, Secret, Access Token)
### Getting API Credentials
1. **Create an Upwork App**:
- Go to [Upwork Developers](https://developers.upwork.com/)
- Create a new app to get your API Key and Secret
- Request API access if you haven't already
2. **OAuth 2.0 Flow**:
- Use the API Key and Secret to initiate OAuth 2.0 flow
- Get the Access Token after user authorization
- Store the Access Token securely
### Environment Variables
```bash
UPWORK_API_KEY=your_api_key_here
UPWORK_API_SECRET=your_api_secret_here
UPWORK_ACCESS_TOKEN=your_access_token_here
```
## 🎯 Use Cases
### For Freelancers
- **Job Discovery**: "Find React development jobs under $50/hour"
- **Proposal Management**: "Submit a proposal for job ID 12345 with my standard cover letter"
- **Time Tracking**: "Log 4 hours of work for today on contract ABC123"
- **Earnings Analysis**: "Show me my earnings for this month"
- **Profile Optimization**: "Update my hourly rate to $75"
### For Clients
- **Talent Search**: "Find Node.js experts with 90%+ job success score"
- **Job Posting**: "Post a new WordPress development job"
- **Project Management**: "Show me the work diary for my developer"
- **Milestone Management**: "Release the milestone payment for project XYZ"
## 🔒 Security Features
- Environment variable-based credential management
- OAuth 2.0 token authentication
- Rate limiting compliance
- Error handling for API failures
- Input validation with Zod schemas
## 📚 API Coverage
This MCP server implements tools for all major Upwork API endpoints:
### Core Areas Covered
- **Jobs API**: Search, details, posting
- **Contracts API**: Listing, details, management
- **Proposals API**: Submission, tracking
- **Time Reports API**: Work diary, time logging
- **Messages API**: Communication management
- **Financial Reports API**: Earnings, payments
- **Profiles API**: User information, updates
- **HR API**: Milestones, releases
### Authentication
- OAuth 2.0 flow support
- Token refresh handling
- Secure credential storage
## 🚦 Rate Limits
The server respects Upwork's API rate limits:
- Standard rate limits apply per endpoint
- Automatic error handling for 429 responses
- Graceful degradation on rate limit exceeded
## 🔍 Example Queries
```bash
# Search for specific jobs
"Find Python jobs with budgets over $1000"
# Manage proposals
"List my active proposals and their status"
# Track earnings
"Show me my earnings breakdown for last month"
# Time management
"Log 3 hours of frontend development work for today"
# Profile updates
"Update my profile to include React and TypeScript skills"
# Client management
"Find freelancers with 5-star ratings in graphic design"
```
## 🛠️ Development
```bash
# Clone and install
git clone <repository>
cd mcp-upwork
npm install
# Build
npm run build
# Development mode
npm run dev
```
## 📄 API Documentation
For detailed API information, visit:
- [Upwork Developer Documentation](https://developers.upwork.com/)
- [OAuth 2.0 Setup Guide](https://developers.upwork.com/api/authentication)
- [API Rate Limits](https://developers.upwork.com/api/rate-limits)
## 🔧 Configuration
### Claude Desktop Config
Add to your Claude Desktop configuration:
```json
{
"mcpServers": {
"mcp-upwork": {
"command": "npx",
"args": ["@chinchillaenterprises/mcp-upwork"],
"env": {
"UPWORK_API_KEY": "your_api_key",
"UPWORK_API_SECRET": "your_api_secret",
"UPWORK_ACCESS_TOKEN": "your_access_token"
}
}
}
}
```
### Claude Code Project Config
```bash
claude mcp add upwork -s project \
-e UPWORK_API_KEY=your_api_key \
-e UPWORK_API_SECRET=your_api_secret \
-e UPWORK_ACCESS_TOKEN=your_access_token \
-- npx @chinchillaenterprises/mcp-upwork
```
## 🤝 Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## 📝 License
MIT License - see LICENSE file for details.
## 🆘 Support
- [Issue Tracker](https://github.com/ChinchillaEnterprises/ChillMCP/issues)
- [Upwork API Documentation](https://developers.upwork.com/)
- [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
## 🎉 What's Next?
This MCP server provides comprehensive Upwork integration. Future enhancements may include:
- Webhook support for real-time notifications
- Advanced analytics and reporting
- Automated proposal templates
- Integration with calendar apps for time tracking
- Team management features for agencies
Happy freelancing! 🚀