使用说明
升级MCP服务器
A. 模型上下文协议 将人工智能代理连接到Upwork的GraphQL API的服务器,实现作业发现、提案管理、档案跟踪和分析。
特性
- API官方集成:将Upwork的GraphQL API与OAuth 2.0身份验证一起使用
- 求职:使用高级条件搜索和筛选职位发布
- 提案管理:提交、更新、跟踪和撤回提案
- 保存的工作:将作业标记为书签以供以后查看,并获得个性化建议
- 配置文件管理:查看您的自由职业者简介、技能和完整性
- 合同跟踪:监控有效合约和收益
- 时间报告:查询工作历史和时间日志
- 速率限制:内置速率限制保持在API配额范围内
- 类型安全:用TypeScript编写,具有完整的类型定义
快速开始
选项1:npm(推荐)
# Install globally
npm install -g @furkankoykiran/upwork-mcp
# Or use with npx (no installation needed)
npx @furkankoykiran/upwork-mcp
选项2:使用Claude代码(单行设置)
claude mcp add upwork -- npx -y @furkankoykiran/upwork-mcp
然后设置您的凭据:
export UPWORK_CLIENT_ID="your_client_id"
export UPWORK_CLIENT_SECRET="your_client_secret"
并验证:
npx @furkankoykiran/upwork-mcp auth
选项3:来源
git clone https://github.com/furkankoykiran/upwork-mcp.git
cd upwork-mcp
npm install
npm run build
认证
1.获取API凭据
- 首选 Upwork开发者门户
- 创建新的API应用程序
- 记下您的客户端ID和客户端密码
2.配置和身份验证
# Set your credentials as environment variables
export UPWORK_CLIENT_ID="your_client_id"
export UPWORK_CLIENT_SECRET="your_client_secret"
# Run authentication
npx @furkankoykiran/upwork-mcp auth
这将:
- 使用Upwork OAuth授权页面打开浏览器
- 等待您登录并授权应用程序
- 在本地保存您的访问令牌
3.验证身份验证
npx @furkankoykiran/upwork-mcp check
配置
服务器需要以下环境变量:
| 变量 | 描述 | 必填 |
|---|---|---|
UPWORK_CLIENT_ID |
您的Upwork OAuth客户端ID | 是 |
UPWORK_CLIENT_SECRET |
您的Upwork OAuth客户端密码 | 是 |
UPWORK_API_URL |
更新GraphQL API URL(默认值:https://api.upwork.com/graphql) | 没有 |
使用克劳德代码
添加到MCP配置(~/.config/claude-code/settings.json):
{
"mcpServers": {
"upwork": {
"command": "npx",
"args": ["-y", "@furkankoykiran/upwork-mcp"],
"env": {
"UPWORK_CLIENT_ID": "your_client_id",
"UPWORK_CLIENT_SECRET": "your_client_secret"
}
}
}
}
可用工具
配置文件工具(4个工具)
| 工具 | 说明 |
|---|---|
get_profile |
获取您的自由职业者简介、技能、费率和工作成功分数 |
get_profile_completeness |
检查配置文件完整性得分和缺失字段 |
get_skills |
在个人资料中列出所有技能 |
get_connects_balance |
获得当前连接的平衡 |
求职工具(2个工具)
| 工具 | 说明 |
|---|---|
search_jobs |
使用过滤器(关键字、预算、类别等)搜索职位发布 |
get_job_details |
获取特定职位发布的完整详细信息 |
提案工具(6个工具)
| 工具 | 说明 |
|---|---|
list_proposals |
使用状态筛选器列出您提交的提案 |
get_proposal |
获取详细的提案信息,包括求职信 |
submit_proposal |
提交新提案(使用Connects) |
update_proposal |
更新现有提案(仅待定) |
withdraw_proposal |
撤回已提交的提案 |
get_proposal_stats |
获取提案统计数据和成功率 |
已保存作业工具(3个工具)
| 工具 | 说明 |
|---|---|
list_saved_jobs |
列出您保存/添加书签的作业 |
save_job |
将作业保存或不保存到书签 |
get_job_recommendations |
获得个性化的工作推荐 |
合同工具(2个工具)
| 工具 | 说明 |
|---|---|
list_contracts |
列出您当前和过去的合同 |
get_contract_details |
获取特定合同的详细信息 |
分析工具(1个工具)
| 工具 | 说明 |
|---|---|
get_time_report |
获取工作历史和记录小时数的时间报告 |
总计:18个工具
示例用法
寻找工作
Search for Upwork jobs with keyword "TypeScript" and hourly rate between $50-$100
提交建议书(含试运行)
Submit a proposal for job ~0123456789012345678 with cover letter "I am experienced..." bid amount $75 hourly, dry_run=true
列出提案
List my pending Upwork proposals
保存作业
Save job ~0123456789012345678
获取工作推荐
Get personalized job recommendations
安全特性
干运行模式
所有突变工具(submit_proposal、update_proposal、withdraw_proposal)都支持 dry_run 预览操作而不执行操作的参数:
{
"job_id": "~0123456789012345678",
"cover_letter": "Your cover letter here...",
"bid_amount": 50,
"bid_type": "hourly",
"dry_run": true
}
验证
- 求职信必须为50-5000个字符
- 投标金额必须大于0
- 提案更新仅适用于未决提案
速率限制
服务器实现保守的速率限制,以避免超过Upwork的API配额:
- 每秒10个请求
- 每分钟300个请求
- 每天40000个请求
速率限制通过令牌桶算法自动执行。
故障排除
身份验证问题
# Clear existing token
npx @furkankoykiran/upwork-mcp logout
# Re-authenticate
npx @furkankoykiran/upwork-mcp auth
令牌已过期
当令牌过期时,服务器会自动尝试刷新令牌。如果失败:
npx @furkankoykiran/upwork-mcp auth
速率限制错误
如果达到速率限制,服务器将自动以指数回退方式重试。对于持续存在的问题,请等待几分钟后重试。
发展
# Clone the repository
git clone https://github.com/furkankoykiran/upwork-mcp.git
cd upwork-mcp
# Install dependencies
npm install
# Watch mode (rebuilds on changes)
npm run dev
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run format
看 贡献.md 详细的贡献指南。
项目结构
upwork-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── auth/ # OAuth 2.0 authentication
│ ├── client/ # Upwork API client with rate limiting
│ ├── queries/ # GraphQL queries and mutations
│ ├── tools/ # MCP tool implementations
│ └── types/ # TypeScript type definitions
├── .github/
│ ├── workflows/ # CI/CD workflows (CI, CodeQL, Release, Stale)
│ ├── pull_request_template/
│ ├── ISSUE_TEMPLATE/ # Issue templates (Bug, Feature, Question)
│ ├── CONTRIBUTING.md # Contribution guidelines
│ ├── CODE_OF_CONDUCT.md # Community guidelines
│ ├── SECURITY.md # Security policy
│ └── SUPPORT.md # Support guidelines
├── dist/ # Compiled output (gitignored)
├── node_modules/ # Dependencies (gitignored)
├── eslint.config.js # ESLint configuration
├── tsconfig.json # TypeScript configuration
├── package.json # Project metadata
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
└── README.md # This file
许可证
链接
致谢
- fieldjoshua/umpwork mcp服务器 -GraphQL突变参考
- Upwork开发者门户
- 模型上下文协议