SponsorFinder MCP Server

SponsorFinder MCP Server

Checks whether a company holds a UK or Netherlands work-visa sponsorship licence via the SponsorFinder API.

Category
访问服务器

README

SponsorFinder MCP Server

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.

License: MIT Node >=24 Built with MCP

What it does

SponsorFinder tracks two official government registers of licensed work-visa sponsors:

  • UK — the Home Office register of licensed sponsors, rebuilt from the CSVs the Home Office publishes (checked daily). Carries routes (e.g. Skilled Worker), ratings (A/B) and locations.
  • Netherlands — the IND public register of recognised sponsors, checked daily. Lists recognised sponsors and their sponsor type (WORK / EXCHANGE / STUDY / RESEARCH); much thinner than the UK data — no routes, ratings, or locations.

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.

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.

Example prompts

Natural-language things you can ask an assistant once the server is connected:

  • "Does Google hold a UK sponsorship licence?"
  • "Is ASML a recognised sponsor in the Netherlands?"
  • "Search UK Skilled Worker sponsors in Manchester."
  • "List Dutch WORK-type sponsors matching 'shell'."
  • "What does a B rating mean?"

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.

Use it (hosted)

The server is hosted at:

https://mcp.sponsorfinder.io/mcp

Claude Code

claude mcp add --transport http sponsorfinder https://mcp.sponsorfinder.io/mcp

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.

Run locally

Prerequisites: Node.js 24 and pnpm 11.

pnpm install
cp .env.example .env
# then edit .env and fill in:
#   SPONSORFINDER_API_BASE   e.g. https://api.sponsorfinder.io
#   SPONSORFINDER_API_KEY    your upstream x-api-key (server-side secret)

Run one of the two transports in watch mode:

pnpm dev:stdio   # stdio transport (Claude Desktop / Claude Code / MCP Inspector)
pnpm dev:http    # Streamable HTTP on http://localhost:3001/mcp

Add the local stdio build to Claude Code:

pnpm build
claude mcp add sponsorfinder -- node dist/entry/stdio.js

Inspect the tools interactively with the MCP Inspector against either transport:

npx @modelcontextprotocol/inspector

Configuration

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.

Self-host / deploy

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:

docker compose up -d

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:

wrangler secret put SPONSORFINDER_API_KEY
pnpm deploy:worker

Development

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.

Analytics (optional)

The server can report usage to Google Analytics 4 via the server-side Measurement Protocol. Because an MCP server has no browser, a GA/GTM JavaScript tag cannot run in it — the server sends events over HTTP instead. It works on both Node and Cloudflare Workers.

Analytics are off unless both GA_MEASUREMENT_ID and GA_API_SECRET are set. Each tool call emits one mcp_tool_call event with categorical parameters only — tool, status, verdict, country, mcp_client, latency_bucket, error_kind. No company names or free-text queries are ever sent to GA.

Setup:

  1. Create a GA4 property (free) and a Web data stream.
  2. In Admin → Data streams → your stream → Measurement Protocol API secrets, create a secret. Copy the stream's Measurement ID (G-XXXXXXXXXX) and the secret value.
  3. Set GA_MEASUREMENT_ID and GA_API_SECRET (env / Docker / wrangler secret).
  4. In GA4, register the event params above as custom dimensions (Admin → Custom definitions) so they appear in reports. Use GA_DEBUG=true to send to GA's validation endpoint while testing.

Unmet-demand analysis: setting CAPTURE_QUERY_NAMES=true additionally records searched company names for not_found / ambiguous results to the server's own structured logs (never to GA), useful for spotting data gaps and content ideas. Off by default.

How it works

The server is a thin, stateless proxy with response shaping. An MCP client connects over stdio or stateless Streamable HTTP; a small Hono app (with @hono/mcp) constructs an MCP server per request, calls the SponsorFinder API with the server-side key, validates every response with zod (a contract-drift guard), and shapes it into a compact verdict. Register stats and filter values are cached in-process with a short TTL. Because the core uses only Web-standard APIs (fetch, URL), the same code runs on Node and Cloudflare Workers — only src/entry/* differs.

MCP client (Claude / ChatGPT / Cursor)
        │  stdio  or  stateless Streamable HTTP
        ▼
SponsorFinder MCP server  (Hono + @hono/mcp)
   • 4 read-only tools, zod-validated
   • x-api-key added server-side
   • cached /status + /filters
        │  HTTPS  (x-api-key)
        ▼
SponsorFinder API  →  UK Home Office register + Dutch IND register

Data & disclaimer

The data comes from the official UK gov.uk register of licensed sponsors and the Dutch IND public register of recognised sponsors, refreshed daily.

This tool is informational only and is not legal advice. Register data can lag official publications, and a licence does not guarantee a company will sponsor any given role. Always verify against the official sources before making decisions.

Contributing

Issues and pull requests are welcome at github.com/alirezahamid/sponsor-finder-mcp. Please run pnpm check before opening a PR.

Publishing note: server.json is the manifest for the official MCP registry. Before running mcp-publisher publish, confirm the exact $schema URL against the current registry.modelcontextprotocol.io docs — the schema version pinned here may have moved on.

License

MIT © 2026 Alireza Hamid

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选