{
  "markdown": "# EasyOnward MCP Server\n\nA read-only [Model Context Protocol](https://modelcontextprotocol.io) server that lets any\nMCP-capable AI assistant (Claude Desktop, Cursor, ChatGPT desktop, …) check **passport visa,\nentry, and transit requirements** for a country pair — with **official government sources** and a\ndeep link to the full [EasyOnward](https://easyonward.com) analysis.\n\nIt wraps EasyOnward's public, unauthenticated visa-pair endpoint. It is **read-only**, sends **no\nPII**, and requires **no API key**.\n\n> **Not legal or immigration advice.** Results are a generic analysis for *any* citizen of the\n> passport country. Always verify with your airline and the destination's authorities before\n> travel.\n\n## Tools\n\n### `check_visa`\n\n> Check whether a traveler holding a given passport needs a visa, and what entry & transit\n> requirements apply, for a destination country — with official government sources.\n\n**Inputs**\n\n| Field                  | Description                                                                 |\n| ---------------------- | --------------------------------------------------------------------------- |\n| `passport_country`     | The traveler's passport country. ISO 3166-1 alpha-2 code (`US`) or name (`United States`). |\n| `destination_country`  | The destination country. ISO 3166-1 alpha-2 code (`KE`) or name (`Kenya`).  |\n\n**Output** — both human-readable text and a structured object containing:\n\n- `verdict` — a one-line plain-language summary (restricted / conditional / straightforward).\n- `worst_severity` — `BLOCK` | `WARN` | `INFO` | `NONE`.\n- `requirements[]` — each flagged requirement as `severity`, `title`, `detail`.\n- `official_sources[]` — deduped official government source URLs.\n- `deep_link` — `https://easyonward.com/visa/{ORIGIN}-{DEST}` for the full analysis.\n- `prepare_link` — the same page tagged `?ref=mcp`, comparing visa services, travel insurance, and eSIM options alongside the official/free path.\n- `disclaimer`.\n\n### `country_code`\n\nHelper that resolves a country name (or an existing ISO-2 code) to its uppercase ISO 3166-1\nalpha-2 code — e.g. `Kenya` → `KE`. Handy before calling `check_visa`.\n\n## Example\n\nCalling `check_visa` with `{ \"passport_country\": \"US\", \"destination_country\": \"KE\" }`:\n\n```\nTravel from United States to Kenya is conditional — see requirements.\n\nRequirements:\n  [INFO] US travel advisory: Kenya — Level 2 (Exercise Increased Caution) — …\n  [INFO] Be ready to show proof of funds for Kenya (KE) — …\n  [WARN] An electronic travel authorization (eta) for Kenya on your United States (US) passport — …\n\nOfficial government sources:\n  - https://www.etakenya.go.ke\n  - https://immigration.go.ke\n  - https://travel.state.gov/…/kenya-travel-advisory.html\n  …\n\nFull details: https://easyonward.com/visa/US-KE\n\nGeneric analysis for any United States citizen. Not legal or immigration advice — verify with\nyour airline and the destination's authorities before travel.\n```\n\n## Install & run\n\nTwo ways to connect, same tools:\n\n- **Hosted (remote)** — no install, nothing to run. Point any HTTP-capable MCP\n  client at `https://mcp.easyonward.com/mcp` (Streamable HTTP). Best for most\n  users.\n- **Local (stdio)** — runs on Node 18+ via `npx` (no install needed):\n  ```bash\n  npx -y @easyonward/mcp-server\n  ```\n  The server speaks MCP over **stdio**. Best for offline/air-gapped setups or\n  clients without remote transport.\n\n### Hosted (remote) — Claude Code / any HTTP client\n\n```bash\nclaude mcp add --transport http easyonward https://mcp.easyonward.com/mcp\n```\n\nOr in a client config that supports remote servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"easyonward\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://mcp.easyonward.com/mcp\"\n    }\n  }\n}\n```\n\nThe hosted server is read-only, stateless, and PII-free — same two tools as\nthe local build.\n\n### Claude Desktop (local stdio)\n\nAdd to `claude_desktop_config.json`\n(macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`,\nWindows: `%APPDATA%\\Claude\\claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"easyonward\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@easyonward/mcp-server\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop, then ask: *\"Do I need a visa to fly from the US to Kenya?\"*\n\n### Cursor\n\nAdd to `~/.cursor/mcp.json` (or **Settings → MCP → Add new server**):\n\n```json\n{\n  \"mcpServers\": {\n    \"easyonward\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@easyonward/mcp-server\"]\n    }\n  }\n}\n```\n\n### Smithery\n\nThis server ships a [`smithery.yaml`](./smithery.yaml) manifest, so it can be installed from the\n[Smithery](https://smithery.ai) registry:\n\n```bash\nnpx -y @smithery/cli install @easyonward/mcp-server --client claude\n```\n\n### Windsurf, Cline & other stdio clients\n\nAny client that supports local stdio MCP servers uses the **same block** —\n`command: npx`, `args: [\"-y\", \"@easyonward/mcp-server\"]`. In Windsurf it's\n*Settings → Cascade → MCP Servers*; in Cline it's the MCP settings JSON. No\nclient-specific setup.\n\n## Configuration\n\n| Env var               | Default                          | Purpose                                              |\n| --------------------- | -------------------------------- | ---------------------------------------------------- |\n| `EASYONWARD_API_BASE` | `https://easyonward.com/api/v1`  | API base URL. Point at a dev/staging host for testing. |\n\nExample (point at a dev host):\n\n```json\n{\n  \"mcpServers\": {\n    \"easyonward\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@easyonward/mcp-server\"],\n      \"env\": { \"EASYONWARD_API_BASE\": \"https://dev.easyonward.com/api/v1\" }\n    }\n  }\n}\n```\n\n## Security & privacy\n\n- **Read-only.** The server only performs GET lookups against the public EasyOnward\n  API — it never writes, books, or mutates anything.\n- **No secrets, no auth.** There's no API key or token to configure, so there's\n  nothing to leak.\n- **No PII.** It sends only a passport country + a destination country (ISO-2 codes\n  or country names). It never asks for or transmits passport numbers, names, dates\n  of birth, or any personal data.\n- **Public data only.** Everything returned is public visa/entry/transit reference\n  information, with links to official government sources.\n- **Fail-safe.** An unreachable API or an uncatalogued country pair returns a clear\n  message, not a crash. Requests are subject to the public API's rate limits.\n\n## Develop\n\n```bash\nnpm install      # install deps\nnpm run build    # tsc -> dist/\nnpm test         # unit tests (mocked fetch)\nnpm start        # run the built server on stdio\n```\n\nThis package lives in its own directory and is intentionally isolated from the EasyOnward\nfrontend/backend tooling and CI.\n\n## License\n\nMIT\n",
  "bytes": 6712,
  "sha": "a380e530a076a5d896cf50925d26b94ee005ce17bc2047d12faafc6be8c0ab02",
  "repo_slug": "easyonward/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_easyonward_mcp_server_5c933374/readme"
}