MCP server for Upwork
Your Upwork feed, inside Claude.
Stop tabbing out to a dashboard. Connect Vibeworker as an MCP server and your ranked, scored job feed becomes something Claude can read, reason about, and draft against — in the editor you already have open.
Works with Claude Code, Cursor, and Windsurf. Setup is one command.
What it looks like in practice.
Once connected, you talk to your feed instead of scrolling it. Claude calls the tools it needs, chains them, and hands you back something you can act on.
The last one is the part nobody else does — the same connection that reads your feed can reconfigure it.
> What's worth bidding on this morning?
⏺ list_jobs(sort: "match", limit: 5)
Found 5 jobs:
1. [vw_b797267068b2] Build a Next.js dashboard
with Supabase backend
Fixed · $800 | Match: 91% | QuickWin: 8/10
Web Development
2. [vw_2f10ac4491de] Fix broken Stripe webhook
handler on a live store
Fixed · $250 | Match: 88% | QuickWin: 9/10
Web Development
...
The Stripe one is the better first move — smaller
scope, verified client, and it's the freshest of
the five. Want me to draft against it?
> yes
⏺ get_proposal_context(id: "vw_2f10ac4491de")
Here's a draft, 180 words, leading with their
webhook failure rather than your background...Setup
It's a hosted server, so there's nothing to install. Point your client at the URL with your API key as a Bearer token. Grab the key from Settings → Developer.
Claude Code
claude mcp add vibeworker https://tryvibeworker.com/api/mcp \ --header "Authorization: Bearer vw_your_api_key"
Cursor, Windsurf, and other MCP clients
Add this to your MCP config file:
{
"mcpServers": {
"vibeworker": {
"url": "https://tryvibeworker.com/api/mcp",
"headers": {
"Authorization": "Bearer vw_your_api_key"
}
}
}
}Then try it
Ask “what Upwork jobs match my profile right now?” If your profile isn't set up yet, ask Claude to do that too — it has the tools.
13 tools
Five for reading your feed, eight for configuring it.
Read
list_jobsYour ranked feed — sort by match, newest, budget, or quick win
get_jobFull details for one job: description, client history, scores, Upwork URL
search_jobsKeyword search across recent job titles and descriptions
get_profileYour skills, niche, and scoring mode
get_proposal_contextJob + profile + writing instructions, packaged in one call
Configure
list_filtersEvery filter preset you have, and which is active where
create_filterBuild a new filter from scratch — budget, keywords, client quality
update_filterChange one field without touching the rest
update_filter_notificationsWire up push, email, Telegram, or webhook alerts
assign_filterSet the active filter for your dashboard or your notifications
reorder_filtersReorder your dashboard tabs
delete_filterRemove a preset
update_profileRewrite your profile text or switch scoring mode
Let Claude do the setup.
Filters are where a job feed goes right or wrong — budget floors, client quality gates, keyword excludes, which categories count. Describing what you want in a sentence is faster than finding eight settings.
The configuration tools are never rate-limited, on any plan. Setting up your account through Claude costs you nothing.
How it works, with real prompts →> Set up a filter for Python automation
work — at least $400, verified clients
only, no "urgent" or "asap" posts. Send
it to push notifications.
⏺ create_filter(
name: "Python automation",
categories: ["Web Development",
"Data Science & Analytics"],
keywordsInclude: ["python",
"automation",
"scraping"],
keywordsExclude: ["urgent", "asap"],
budgetMin: 400,
requirePaymentVerified: true
)
Created filter "Python automation".
Feed is ready.
⏺ update_filter_notifications(
id: "fp_9c1e",
notifyChannels: { push: { enabled: true } }
)
⏺ assign_filter(
presetId: "fp_9c1e",
surface: "notification"
)
Done — you'll get a push when something
matches.Limits & access
Free access doesn't expire — it goes stale. You keep querying the feed indefinitely, just not the part of it that's still worth bidding on.
Where the freshness matters
Proposals sent in the first hour get read. By 24 hours the client has a shortlist. That's the whole reason the free tier is shaped this way — the feed is only valuable while the jobs on it are.
See pricingOne command away.
Sign up, copy your key from Settings → Developer, and run the add command. The first thing you ask can be “set me up.”
Get your API key