Check whether a company holds a UK or Netherlands work-visa sponsorship licence.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Sponsor Finder.
check_sponsor_licensePrimary tool. Resolves a company by name (typo-tolerant) and returns a verdict β `licensed`, `formerly_licensed`, `ambiguous`, or `not_found` β with routes, ratings, locations and register dates. Refuses to guess on weak matches.
search_sponsorsExploratory list search with optional filters. Returns a compact list plus a total count. For one specific company, prefer `check_sponsor_license`.
get_sponsor_detailsFull record for one organization by id: routes/ratings/locations/dates (UK) or sponsor type + KvK number (NL). Optionally includes register change history.
get_register_infoRegister statistics, data freshness, a terminology glossary, and the legal disclaimer. Use it to explain what a licence, route, rating, or sponsor type means.
An authless, read-only remote MCP server that lets AI assistants (Claude, ChatGPT, Cursor, β¦) check whether a company holds a UK or Netherlands work-visa sponsorship licence. It proxies the public SponsorFinder API, shaping responses into clean verdicts, and keeps the upstream API key server-side so clients connect with no credentials.
SponsorFinder tracks two official government registers of licensed work-visa sponsors:
This MCP server exposes that data as four tools. It is read-only and authless for clients: the upstream x-api-key is a server-side secret that MCP clients never see. There is no OAuth, no per-user state, and no write tools.
| Tool | Title | What it does | Key inputs |
|---|---|---|---|
check_sponsor_license | Check Sponsorship Licence | Primary tool. Resolves a company by name (typo-tolerant) and returns a verdict β licensed, formerly_licensed, ambiguous, or not_found β with routes, ratings, locations and register dates. Refuses to guess on weak matches. | company_name (2β100 chars, typos OK), country (uk | nl | both, default both) |
search_sponsors | Search Sponsor Register | Exploratory list search with optional filters. Returns a compact list plus a total count. For one specific company, prefer check_sponsor_license. | query?, country (uk | nl, default uk), city? (UK), route? (UK), sponsor_type? (NL: WORK | EXCHANGE | STUDY | RESEARCH), limit (1β20, default 10) |
get_sponsor_details | Get Sponsor Details | Full record for one organization by id: routes/ratings/locations/dates (UK) or sponsor type + KvK number (NL). Optionally includes register change history. | org_id (int), country (uk | nl, default uk), include_history (bool, default false) |
get_register_info | About the Sponsor Registers | Register statistics, data freshness, a terminology glossary, and the legal disclaimer. Use it to explain what a licence, route, rating, or sponsor type means. | none |
Every tool is annotated readOnlyHint: true and returns both a human-readable text block and structuredContent, each stamped with the data-freshness date and a source note.
Natural-language things you can ask an assistant once the server is connected:
A note on name matching. The fuzzy match tolerates typos (e.g. googel uk), but it needs a reasonably complete name to resolve confidently β "Google UK" or "Google UK Limited" resolves cleanly, whereas a single bare word can match many companies. The server deliberately refuses to guess on weak or tied matches: instead of silently picking one, it returns an ambiguous verdict with the candidate list and asks you to disambiguate (or to call get_sponsor_details with the right id). Absence from a register is itself a meaningful answer: it means the company cannot currently sponsor that visa type.
The server is hosted at:
Claude Code
claude.ai β Settings β Connectors β Add custom connector β paste the URL above. No authentication is required.
ChatGPT β Settings β Connectors (or a custom GPT's Actions) β Add a custom/remote MCP connector and paste the URL above.
Any MCP client that speaks Streamable HTTP can connect the same way β point it at https://mcp.sponsorfinder.io/mcp.
Prerequisites: Node.js 24 and pnpm 11.
Run one of the two transports in watch mode:
Add the local stdio build to Claude Code:
Inspect the tools interactively with the MCP Inspector against either transport:
All configuration is via environment variables (see .env.example):
| Name | Required | Default | Description |
|---|---|---|---|
SPONSORFINDER_API_BASE | yes | β | Base URL of the upstream SponsorFinder API, no trailing slash (e.g. https://api.sponsorfinder.io). |
SPONSORFINDER_API_KEY | yes | β | Upstream x-api-key header value. Server-side secret β never exposed to MCP clients, tool output, errors, or logs. |
PORT | no | 3001 | HTTP port for the Node entry (src/entry/node.ts). Ignored by stdio and Cloudflare Workers. |
UPSTREAM_TIMEOUT_MS | no | 10000 | Upstream request timeout in milliseconds (aborted via AbortSignal.timeout()). |
SPONSORFINDER_API_KEY is the one true secret. MCP clients connect authless; the key lives only on the server (a Docker env var or a Cloudflare Workers secret) and is never surfaced to clients.
The Web-standard core runs on both Node and Cloudflare Workers; only the entry file differs.
Docker (primary) β image ghcr.io/alirezahamid/sponsor-finder-mcp, config in Dockerfile and docker-compose.yml:
Put a reverse proxy (Caddy/nginx) in front of mcp.sponsorfinder.io and pass POST, GET and DELETE through to /mcp. Streamable HTTP needs response buffering off (proxy_buffering off; in nginx; Caddy's defaults are fine).
Cloudflare Workers β config in wrangler.jsonc:
| Script | What it does |
|---|---|
pnpm typecheck | Type-check with tsc --noEmit. |
pnpm lint | Lint with ESLint. |
pnpm test | Run unit tests (excludes smoke tests). |
pnpm test:smoke | Integration smoke tests against the real staging API (needs secrets). |
pnpm build | Bundle to dist/ with tsup. |
pnpm check | typecheck + lint + test in one go. |
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/sponsor-finder)<a href="https://allmcps.com/mcp/sponsor-finder"><img src="https://allmcps.com/api/badge/sponsor-finder?style=directory" alt="Sponsor Finder on AllMCPs" /></a>