Skip to main content

Getting Started

Upwork Job Search MCP is a Model Context Protocol server that lets your AI assistant search and filter Upwork jobs with 40+ parameters. No SDK required — just add a config snippet and start searching.


Prerequisites


Minimal Example

The simplest possible search returns the 100 most recently posted jobs with no filters applied. This is a great way to verify your setup is working.

Minimal search_jobs input
{
  "limit": 100
}

Quick Start

1. Sign up and get your API key

Create an account at app.getmany.com.ua and generate an API key from your dashboard. Keys use the gm_ prefix.

2. Add to your MCP client configuration

Add the following to your client's MCP config file. Replace gm_your_api_key_here with your actual key. The configuration is the same for all clients:

claude_desktop_config.json
{
  "mcpServers": {
    "mcpp": {
      "url": "https://mcp.getmany.com.ua/mcp",
      "headers": {
        "Authorization": "Bearer gm_your_api_key_here"
      }
    }
  }
}

3. Start searching Upwork jobs

Open your AI assistant and start searching for Upwork jobs. Try these prompts:

Find React and TypeScript jobs posted in the last 24 hours
Search for expert-level AI/ML jobs paying $80+/hr
Show me fixed-price jobs over $5,000 from US clients with verified payment
Find Python jobs from clients who spent over $50K with 4.5+ rating
Get the 100 most recent jobs and summarize the top skills in demand
Find remote web development jobs that accept agencies, not just freelancers

What Data You Get

Every search returns an array of job objects with rich, structured data. Here is a complete example of what a single job looks like in the response:

search_jobs response
{
  "jobs": [
    {
      "uid": "1955020056847176693",
      "title": "React Developer for SaaS Platform",
      "description": "We are looking for an experienced React Developer...",
      "createdAt": "2025-01-15T10:30:00.000Z",
      "skills": ["React", "TypeScript", "Node.js", "Redux"],
      "externalLink": "https://www.upwork.com/jobs/~021955020056847176693",
      "applicationCost": 6,
      "featured": false,
      "category": "Web Development",
      "ciphertext": "~021955020056847176693",
      "budget": {
        "fixedBudget": 5000,
        "hourlyRate": { "min": 40, "max": 80 }
      },
      "client": {
        "name": "TechStartup Inc",
        "timezone": "America/New_York",
        "countryCode": "US",
        "paymentMethodVerified": true,
        "stats": {
          "totalSpent": 125000,
          "totalHires": 42,
          "hireRate": 85,
          "feedbackRate": 4.95
        }
      },
      "vendor": {
        "hireType": "FREELANCER",
        "experienceLevel": "EXPERT",
        "englishLevel": "FLUENT"
      },
      "customJobScore": 4.8
    }
  ],
  "total": 142
}

Core Fields

FieldDescription
uidUnique job identifier
titleJob posting title
descriptionFull job description text
createdAtISO 8601 timestamp when the job was posted
skillsArray of required skill tags
externalLinkDirect URL to the Upwork job listing
applicationCostCost in connects to apply
featuredWhether the job is a featured listing
categoryUpwork job category name
ciphertextJob ciphertext identifier (used in URLs)
customJobScoreRelevance score (0-5)

Budget Object

FieldDescription
budget.fixedBudgetFixed price amount in USD (null if hourly)
budget.hourlyRate.minMinimum hourly rate in USD
budget.hourlyRate.maxMaximum hourly rate in USD

Client Object

FieldDescription
client.nameClient or company name
client.timezoneIANA timezone identifier
client.countryCodeISO 3166-1 alpha-2 country code
client.paymentMethodVerifiedWhether payment method is verified
client.stats.totalSpentTotal amount spent on Upwork in USD
client.stats.totalHiresNumber of freelancers hired
client.stats.hireRatePercentage of jobs resulting in a hire
client.stats.feedbackRateAverage feedback rating (0-5)

Vendor Object

FieldDescription
vendor.hireTypeFREELANCER or AGENCY
vendor.experienceLevelBEGINNER, INTERMEDIATE, or EXPERT
vendor.englishLevelBASIC, CONVERSATIONAL, FLUENT, or NATIVE

How It Works

Upwork Job Search MCP uses the Streamable HTTP transport — your AI client sends POST requests to https://mcp.getmany.com.ua/mcp with your API key as a Bearer token. The server is fully stateless: no SSE connections, no session tokens, no sidecar processes.

Each search query runs against a pre-indexed database of Upwork jobs, refreshed every 5-15 minutes. Results are returned in milliseconds.


Next Steps