Passport visa, entry & transit requirements for any country pair, with official government sources.
A read-only Model Context Protocol server that lets any MCP-capable AI assistant (Claude Desktop, Cursor, ChatGPT desktop, …) check passport visa, entry, and transit requirements for a country pair — with official government sources and a deep link to the full EasyOnward analysis.
It wraps EasyOnward's public, unauthenticated visa-pair endpoint. It is read-only, sends no PII, and requires no API key.
Not legal or immigration advice. Results are a generic analysis for any citizen of the passport country. Always verify with your airline and the destination's authorities before travel.
check_visaCheck whether a traveler holding a given passport needs a visa, and what entry & transit requirements apply, for a destination country — with official government sources.
Inputs
| Field | Description |
|---|---|
passport_country | The traveler's passport country. ISO 3166-1 alpha-2 code (US) or name (United States). |
destination_country | The destination country. ISO 3166-1 alpha-2 code (KE) or name (Kenya). |
Output — both human-readable text and a structured object containing:
verdict — a one-line plain-language summary (restricted / conditional / straightforward).worst_severity — BLOCK | WARN | INFO | NONE.requirements[] — each flagged requirement as severity, title, detail.official_sources[] — deduped official government source URLs.deep_link — https://easyonward.com/visa/{ORIGIN}-{DEST} for the full analysis.prepare_link — the same page tagged ?ref=mcp, comparing visa services, travel insurance, and eSIM options alongside the official/free path.disclaimer.country_codeHelper that resolves a country name (or an existing ISO-2 code) to its uppercase ISO 3166-1
alpha-2 code — e.g. Kenya → KE. Handy before calling check_visa.
Calling check_visa with { "passport_country": "US", "destination_country": "KE" }:
Travel from United States to Kenya is conditional — see requirements.
Requirements:
[INFO] US travel advisory: Kenya — Level 2 (Exercise Increased Caution) — …
[INFO] Be ready to show proof of funds for Kenya (KE) — …
[WARN] An electronic travel authorization (eta) for Kenya on your United States (US) passport — …
Official government sources:
- https://www.etakenya.go.ke
- https://immigration.go.ke
- https://travel.state.gov/…/kenya-travel-advisory.html
…
Full details: https://easyonward.com/visa/US-KE
Generic analysis for any United States citizen. Not legal or immigration advice — verify with
your airline and the destination's authorities before travel.
Two ways to connect, same tools:
https://mcp.easyonward.com/mcp (Streamable HTTP). Best for most
users.npx (no install needed):
npx -y @easyonward/mcp-server
The server speaks MCP over stdio. Best for offline/air-gapped setups or
clients without remote transport.claude mcp add --transport http easyonward https://mcp.easyonward.com/mcp
Or in a client config that supports remote servers:
{
"mcpServers": {
"easyonward": {
"type": "streamable-http",
"url": "https://mcp.easyonward.com/mcp"
}
}
}
The hosted server is read-only, stateless, and PII-free — same two tools as the local build.
Add to claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json,
Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"easyonward": {
"command": "npx",
"args": ["-y", "@easyonward/mcp-server"]
}
}
}
Restart Claude Desktop, then ask: "Do I need a visa to fly from the US to Kenya?"
Add to ~/.cursor/mcp.json (or Settings → MCP → Add new server):
{
"mcpServers": {
"easyonward": {
"command": "npx",
"args": ["-y", "@easyonward/mcp-server"]
}
}
}
This server ships a smithery.yaml manifest, so it can be installed from the
Smithery registry:
npx -y @smithery/cli install @easyonward/mcp-server --client claude
Any client that supports local stdio MCP servers uses the same block —
command: npx, args: ["-y", "@easyonward/mcp-server"]. In Windsurf it's
Settings → Cascade → MCP Servers; in Cline it's the MCP settings JSON. No
client-specific setup.
| Env var | Default | Purpose |
|---|---|---|
EASYONWARD_API_BASE | https://easyonward.com/api/v1 | API base URL. Point at a dev/staging host for testing. |
Example (point at a dev host):
{
"mcpServers": {
"easyonward": {
"command": "npx",
"args": ["-y", "@easyonward/mcp-server"],
"env": { "EASYONWARD_API_BASE": "https://dev.easyonward.com/api/v1" }
}
}
}
npm install # install deps
npm run build # tsc -> dist/
npm test # unit tests (mocked fetch)
npm start # run the built server on stdio
This package lives in its own directory and is intentionally isolated from the EasyOnward frontend/backend tooling and CI.
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @easyonward/mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-easyonward-mcp-server": {
"command": "npx",
"args": [
"-y",
"@easyonward/mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@easyonward/mcp-servernpmcom.easyonward/mcp-server works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.