EasyOnward MCP Server
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.
Tools
check_visa
Check 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 asseverity,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_code
Helper 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.
Example
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.
Install & run
Runs on Node 18+ via npx (no install needed):
npx -y @easyonward/mcp-server
The server speaks MCP over stdio.
Claude Desktop
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?"
Cursor
Add to ~/.cursor/mcp.json (or Settings → MCP → Add new server):
{
"mcpServers": {
"easyonward": {
"command": "npx",
"args": ["-y", "@easyonward/mcp-server"]
}
}
}
Smithery
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
Configuration
| 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" }
}
}
}
Develop
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.
License
MIT