runwayMCP
runwayMCP enables job seekers to evaluate US job postings by automatically checking a company's H-1B sponsorship history using real USCIS data, helping them avoid wasting time on roles that won't sponsor visas.
README
runwayMCP
An MCP server that gives Claude Code real data for job search decisions.
When you paste a job posting URL into Claude Code, it can automatically check whether the company has a history of H-1B sponsorship — so you know before you spend hours on an application.
Built for job seekers who need visa sponsorship for US roles.
How it works
Claude Code launches this server over stdio and calls its tools when relevant. You don't invoke the tools directly — Claude decides when to call them based on the conversation.
You: "Evaluate this role for me: https://jobs.example.com/swe-123"
Claude:
1. fetch_job_posting(url) → job title, company, country, full JD
2. check_visa_sponsorship(company) → H-1B history, approval rate, verdict
3. [reasons over the data] → fit analysis, red flags, application advice
The visa check only runs for US roles — Claude skips it for positions in other countries.
Status
| Tool | Status |
|---|---|
check_visa_sponsorship |
✅ Working — real USCIS data |
fetch_job_posting |
✅ Working — Ashby and Greenhouse |
Tools
check_visa_sponsorship(company: str) -> VisaResult
Looks up a company's H-1B petition history via the USCIS H-1B Employer Data Hub.
Pass the full employer name as it appears in the job posting (e.g. "Google LLC", "Microsoft Corporation"). Abbreviated names may match subsidiaries.
Returns: company, total_filings, approval_rate (0–1), verdict (green/yellow/red), source.
Verdict thresholds (calibrated against FY2026 data, ~36k employers):
green— ≥ 5 filings AND approval rate ≥ 80% (active sponsor, top ~10%)yellow— ≥ 1 filing AND approval rate ≥ 50% (has sponsored before)red— no record or rate below threshold
Data is downloaded and cached at ~/.cache/runway-mcp/uscis_h1b.csv on first call (~2MB).
fetch_job_posting(url: str) -> JobPostingResult
Fetches and parses a job posting from a URL.
Returns: title, company, country, location, description, posted_date, source_url.
The country field in the output is what Claude uses to decide whether to call check_visa_sponsorship.
Supported job boards
| Board | Status | Hosts |
|---|---|---|
| Ashby | ✅ Supported | jobs.ashbyhq.com |
| Greenhouse | ✅ Supported | boards.greenhouse.io, job-boards.greenhouse.io |
| 🔜 Coming soon | linkedin.com/jobs |
|
| Lever | ⬜ Not yet | jobs.lever.co |
| Workday | ⬜ Not yet | *.myworkdayjobs.com |
| Rippling | ⬜ Not yet | app.rippling.com/jobs |
Setup
1. Clone and install
git clone https://github.com/satovarb16/runwayMCP
cd runwayMCP
pip install -e ".[dev]"
2. Configure Claude Code
Add to your Claude Code settings.json (.claude/settings.json in the project, or ~/.claude/settings.json globally):
{
"mcpServers": {
"runway-mcp": {
"command": "python",
"args": ["-m", "server"],
"cwd": "/absolute/path/to/runwayMCP"
}
}
}
Replace the cwd with your actual path. On Windows use double backslashes: "C:\\Users\\you\\runwayMCP".
3. Use it
Open Claude Code and ask it to evaluate a job posting. On first call, the server downloads the USCIS dataset (~2MB) to ~/.cache/runway-mcp/.
Updating USCIS data
The server downloads FY2023 data automatically on first run. For newer data:
- Go to https://www.uscis.gov/tools/reports-and-studies/h-1b-employer-data-hub
- Click Crosstab View → select fiscal year → Download to Excel → CSV
- Replace
~/.cache/runway-mcp/uscis_h1b.csvwith the downloaded file
The parser auto-detects encoding and column format across fiscal year versions.
Tool vs. reasoning boundary
These tools only fetch and shape data. Claude handles all reasoning:
- Whether to call
check_visa_sponsorship(only for US roles) - How to interpret the verdict in context
- Whether the role is a good fit overall
This is intentional — tools that encode judgment make Claude less useful, not more.
Tests
pytest -m contract # fast contract tests
pytest -m integration # server tool registration
pytest # full suite (50 tests)
Contributing
Next useful changes: LinkedIn support in fetch_job_posting, and additional job boards. PRs welcome.
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.