Israel Hiking MCP
Currently, you can only use the ping tool to check server liveness, retrieve version and data attribution info, and optionally echo a string. The server is in early development and will eventually provide tools for place search, route search, route details, POIs along a route, and routing. All data comes from Israel Hiking Map/Mapeak and is under CC BY-NC-SA 3.0 and ODbL licenses.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Israel Hiking MCPPing the server to verify it's working."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Israel Hiking MCP
An unofficial, non-commercial, read-only MCP server exposing Israel Hiking Map / Mapeak hiking data to LLM hosts.
Status: early scaffolding (PR 5 of 9). The server speaks MCP over stdio, has its HTTP foundation — settings, typed errors, a cached and rate-capped upstream client — and exposes two tools:
search_placesandsearch_hiking_routes. Route details, POIs along a route, and routing all land in later PRs.
See LICENSE-NOTICE.md before using any output — the upstream data is CC BY-NC-SA 3.0 (non-commercial, share-alike) and ODbL.
Requirements
Python 3.11+
Related MCP server: MCP Server - Placeholder Implementation
Setup
uv syncRun
uv run israel-hiking-mcpThe server communicates over stdio and produces no stdout output of its own —
stdout is reserved for the JSON-RPC message stream. Logs go to stderr; set
IHM_LOG_LEVEL=DEBUG for verbose output.
Tests
uv run pytestThe suite runs fully offline.
Try it with MCP Inspector
npx @modelcontextprotocol/inspector uv run israel-hiking-mcpSet the working directory to this repository, connect, open the Tools tab,
and call ping, then search_places with query: "Haifa" — the first result
should be Haifa, Israel, with an ihmUrl that opens on the map site. Feed those
coordinates to search_hiking_routes with radiusKm: 15, minLengthKm: 4,
maxLengthKm: 12 and you should get the Haifa Trail segments and a set of
Nakeb routes, nearest first.
Use from an MCP host
Claude Desktop (claude_desktop_config.json) or any generic MCP client:
{
"mcpServers": {
"israel-hiking": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/israel-hiking-mcp", "run", "israel-hiking-mcp"]
}
}
}Tools
Tool | Description |
| Find places by name (Hebrew or English) and return ranked candidate coordinates, each with a |
| List hiking routes mapped near a point, nearest first, with length, any difficulty rating, and a link to the map site. |
| Liveness check returning the server version and data attribution. Placeholder; removed once the tool set is complete. |
search_places
Argument | Type | Default | Notes |
| string | — | Place name, 2–100 characters after trimming |
| boolean |
| Drop matches outside the Israel bounding box |
|
|
| Language of the returned names, and of the |
| integer |
| 1–20 |
Upstream's search is a worldwide index — "Haifa" matches places in Syria,
the United States, France and Chile before it reaches Haifa, Israel. Results
are therefore ranked by whether they fall inside an approximate bounding box
around Israel (29.3–33.4 N, 34.2–35.9 E), and by default the rest are dropped;
the warnings field always says when that happened. The box is a ranking
device, not a border: it is axis-aligned, so it also takes in parts of
neighbouring territory.
No match is not an error — the tool returns an empty places list with a
warning explaining what to try next. The tool never picks a candidate for you.
search_hiking_routes
Argument | Type | Default | Notes |
|
| — | Point to search around; |
| number |
| 1–40, measured to each route's start marker |
| number | null |
| 0–1000 |
| number | null |
| 0–1000 |
|
|
| See below |
|
|
| Language of names, descriptions and the |
| integer |
| 1–20 |
Only hiking routes are returned. The same tiles carry cycling and 4x4 routes, which this tool does not search.
Results are deterministic: the same centre, radius and constraints produce
the same routes in the same order, sorted by distance from the search centre
and then by {source, identifier}. Distances are great-circle, reported to
10 m, and are not walking distances.
Two upstream quirks the tool mirrors deliberately, and reports in warnings:
Most routes carry no difficulty rating. Upstream's own route filter keeps an unrated route whatever difficulty is asked for, and so does this tool — dropping them would empty almost every search. Each such result carries
difficulty: null, and a warning says how many were kept that way.A route the map does not name is not returned. The map site hides those features too; the count of skipped markers appears in
warnings.
A route with no length in the map data is returned with lengthKm: null, and
cannot satisfy a length range.
Nothing in a result establishes that a route is open, marked, passable,
permitted, or safe. description is the mapper's own undated note, and is
often the only place a closure or hazard is recorded.
Configuration
All settings are environment variables, read once at startup — an invalid value stops the server with a message naming the variable, rather than failing later inside a tool call.
Variable | Default | Range | Purpose |
|
| http(s) URL | API and tile host |
|
| 0 < x ≤ 60 | Applied to connect, read, write and pool |
|
| non-empty | Sent on every request |
|
| 0–86400 |
|
|
| ≥ 1 | Bounds the in-memory response cache |
|
| 1–16 | Simultaneous upstream connections |
|
| 1–500 | Tile budget for area searches |
|
| log level | Logs go to stderr only |
Area searches and the tile budget
The map's routes and points of interest have no query API; they exist only as
the vector tiles the map site draws (/vector/data/global_points/{z}/{x}/{y}.mvt,
zoom 10–14). An area search therefore costs one request per tile covering it,
which grows with the square of the radius. Searches run at zoom 12 by
default, where a 40 km radius costs 98 tiles — just inside the default budget of
100. Only tiles that actually reach into the search circle are fetched; the box
around that circle would cost 121.
Zoom 12 was chosen for that budget and then checked for completeness: sampling zoom-12 tiles over Haifa, Jerusalem, Eilat and the Golan on 2026-08-14 against all sixteen of each tile's zoom-14 children found no features dropped at the lower zoom (817 features in the densest sample, 0 missing). The tileset is not thinned by zoom, so a zoom-12 search sees every marker a zoom-14 one would.
Past the budget, a search fails with search_area_too_large naming the tile
count, the limit, and a radius that would have worked, rather than silently
returning part of the area.
Request behaviour
Every upstream request is a GET with a timeout, capped concurrency, and a short-lived in-memory cache. A request is retried once, and only after a timeout, a connection failure, or a 5xx; 4xx responses are never retried and failures are never cached. This is a personal-scale tool pointed at a volunteer-run service — please keep it that way.
Error codes
Tool failures arrive as MCP errors whose text begins with a stable code:
invalid_input · place_not_found · route_not_found · unsupported_source ·
search_area_too_large · geometry_too_large · upstream_timeout ·
upstream_unavailable · upstream_schema_changed · rate_limited
upstream_timeout, upstream_unavailable and rate_limited are transient; the
rest will not be fixed by retrying. Upstream response bodies, URLs and
tracebacks are never included in the message — those go to the stderr log.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
- pingA
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA simple MCP server that can enable MCP clients to query Bluesky instances.33MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server implementation in Python with placeholder tools, deployable to Azure Web App via GitHub Actions. Supports STDIO, HTTP REST, and WebSocket interfaces.
- AlicenseNot gradedqualityDmaintenanceAn experimental MCP server demonstrating remote calls via FastAPI, supporting ping-pong commands through API endpoints and SSE transport.2MIT
- FlicenseNot gradedqualityBmaintenanceA minimal MCP server for homelab environments, providing demo tools like ping and echo over Streamable HTTP for testing client-server integration.
Related MCP Connectors
A basic MCP server to operate on the Postman API.
MCP server for live, sourced Brazilian public data from the official IBGE APIs.
An MCP server for deep research or task groups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tisheldev/israel-hiking-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server