Skip to main content

Istanbul MCP

io.github.Batu1-1an/istanbul-mcpVersion 0.2.6

Read-only Istanbul open city data: transport, parking, water, nearby services and datasets.

Status

Responds139 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:36 UTC
Latency
139 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://istanbulmcp-production.up.railway.app/mcp/Responds139 ms
No sign-in

Claude Code

claude mcp add --transport http istanbul-mcp https://istanbulmcp-production.up.railway.app/mcp/

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: istanbul-mcp
Remote MCP server URL: https://istanbulmcp-production.up.railway.app/mcp/

Cursor

{
  "mcpServers": {
    "istanbul-mcp": {
      "url": "https://istanbulmcp-production.up.railway.app/mcp/"
    }
  }
}

VS Code

code --add-mcp '{"name":"istanbul-mcp","type":"http","url":"https://istanbulmcp-production.up.railway.app/mcp/"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

21 tools

Tools of Istanbul MCP
Read-only
Idempotent
Open world
istanbul_city_services_nearbySummarize WiFi near a static reference point and district-level libraries/culture. district (all 39 Istanbul districts) is exclusive with place/coordinates; district-only place names also return district address lists, without WiFi or invented distances. Radius applies only to WiFi with a point. For Acıbadem, specify 'Acıbadem, Kadıköy' or 'Acıbadem, Üsküdar'. Not full address geocoding. NoYesYesYes
istanbul_datastore_queryRun a bounded SELECT over records from one allowlisted CKAN resource. SQLite dialect: use table records and published column names. GROUP BY and aggregates are supported; no writes, arbitrary functions or application DB. A complete bounded capture is required, never partial counts. The server enforces an outer result limit (default 20, max 100) even if SQL omits LIMIT. Only resources configured in CKAN_SQL_ALLOWED_RESOURCE_IDS are available. Local query syntax and bounds: https://github.com/Batu1-1an/istanbulmcp/blob/main/docs/datastore-sql.md Source API: https://docs.ckan.org/en/latest/maintaining/datastore.html NoYesYesYes
istanbul_event_detailInspect a search event_id or performance_id: sessions, observed offers and provenance. IDs must come from event search, never a URL. Biletinial detail is refreshed with bounded caching when configured. Ticketmaster details use the latest indexed feed; prices and ticket availability remain unknown. Missing or retired catalogue coverage is not cancellation. Preserve start_time_basis, source_time_conflict and per-performance warnings; published HTML session times can resolve inconsistent JSON-LD offsets. Flexible-entry tickets have start_at=null; use event_date and do not present source_start_at as an appointment, opening hour or scheduled visit. Preserve admission_window and excluded_weekdays. entry_date_restricted=true marks an explicitly prohibited ticket date; it is not a cancellation claim. catalogue_retired means retained local sessions are inactive; source_unavailable means active local records exist but their source snapshot is unusable. not_found without retained history cannot explain whether a deploy reset or provider change removed an earlier record. participation_conditions contains bounded source statements from the event's description/rules/facts, with provenance, observation time, expired/unknown status and unverified_topics. These are provider claims, not legal rights, venue-wide accessibility guarantees or personal eligibility confirmations. offers[].terms distinguishes admission count, price profile and unknown units. Optional party_size/ticket_profile or mixed party and budget_includes_fees produce price_quote for each source session without changing its selection or filtering the series. Party prices remain observed subtotals, not checkout. Use description or each performance's about.text to explain the event topic in 1–2 sentences. Missing text does not establish a plot or theme. A short/truncated description does not replace the extracted source rNoYesYesYes
istanbul_events_planBuild deterministic one-day event options, with ICS and calendar links. Each performance includes about.text when published; explain its topic in 1–2 short sentences, preserving uncertainty when a description is unavailable. min_events (1–max_events) expresses a REQUIRED minimum; for exactly two stops set min_events=2,max_events=2. required_categories requires one of each named type, unlike interests (only allowed types). Complete options satisfy both; partial_options separately list missing_events/missing_categories and do not generate calendars. fulfillment.status/reason_codes explain complete, partial, unverified-budget or unmet requests; never present a partial as a full plan. party_size/ticket_profile or a mixed party map price the whole group at every stop. max_price_try is the total observed party basket across ALL stops, not a per-person cap. budget_includes_fees keeps unknown fee totals unverified. price_quote ticket quantities, total_price_scope and checkout_total_verified separate observed subtotals from live checkout/seat guarantees. date: YYYY-MM-DD or today/tomorrow, default today in Europe/Istanbul. Use selected event_ids (1–20 from search/detail) or district discovery. A selected performance_id keeps that exact session; an event_id allows its series sessions. Missing/ambiguous replacements require a new selection. Selected IDs still respect date and the 18:00–23:59 default window; provide the session's date and explicit start_time/end_time for daytime selections. interests accepts up to five search categories. Window is same-day HH:MM. interests restricts allowed categories; unrelated fallback is never added. When the user is explicitly participating as an adult, exclude_child_only=true removes known upper age limits below 18 before the 20-candidate plan budget; selected child-only sessions are rejected with child_only_age_range. Default false preservNoYesYesYes
istanbul_events_searchSearch indexed Istanbul event sessions; use event_detail for full verification. Dates: YYYY-MM-DD or today/tomorrow (Europe/Istanbul), default next 7 days, maximum 31 days. Times: HH:MM within a day. Started sessions are excluded by default, even for explicit dates. Use include_past=true for retained active past sessions; this is not an archive and expired prices stay unknown. result_info.filter_counts explains exclusions. start_time_basis records the source of the time. source_time_conflict=true means published Istanbul HTML session times took precedence over conflicting JSON-LD times; preserve per-event warnings and verify the ticket page. timing_kind=flexible_entry has event_date but start_at=null: its source_start_at is catalogue metadata, never a visit or reservation time. Show the date and ticket link, and verify opening hours/admission conditions. Clock-filtered searches exclude date-only flexible tickets; excluded_unverified_time counts them. admission_window holds published opening/last-entry/closing clocks, not an appointment. Source excluded_weekdays uses Monday=0..Sunday=6; restricted dates are excluded and counted in excluded_entry_date. Detail retains them for inspection with entry_date_restricted=true, never an admission guarantee. Categories: concert, theatre, opera_ballet, standup, family, festival, exhibition, workshop, sport, seminar, other. District: one of Istanbul's 39 districts. Coordinates must be paired; Turkish aliases such as tiyatro, konser, çocuk, atölye are accepted. query searches titles by default; query_scope=all also searches venue names. Empty/whitespace query means no text filter. match_mode=words (default) matches complete normalized words, so Sıla does not match Silahşör. Use match_mode=prefix explicitly for stems/autocomplete; prefix matches are related title matches, never proof of artist identity. radius defaults to 5000m, maxNoYesYesYes
istanbul_get_datasetReturn metadata and resources for one IBB dataset.NoYesYesYes
istanbul_get_resource_schemaReturn DataStore field schema for a resource.NoYesYesYes
istanbul_gtfs_snapshot_statusInspect local GTFS load age, calendar validity, row counts and skipped rows. No upstream request or refresh is made. A missing or warming snapshot is unavailable, not an empty timetable. Cache age is not feed publication age; a loaded snapshot does not prove live arrivals or transport service. NoYesYesYes
istanbul_healthReturn Istanbul MCP service readiness.NoYesYesYes
istanbul_market_scheduleReturn the published weekly İBB market schedule, optionally by district/day. day accepts Turkish/English weekdays, today/yesterday/tomorrow, or an ISO date. Results are a static weekly schedule, not proof a market is open today; coordinates are source points and maps_url is a map search link. NoYesYesYes
istanbul_metro_accessibility_statusReturn official Metro İstanbul equipment/total counts and current equipment fault details, optionally filtered by line, station, or equipment type. This is not an end-to-end accessibility guarantee.NoYesYesYes
istanbul_mobility_nearbySummarize mobility near a static place reference or coordinates. district (all 39 Istanbul districts) is exclusive with place/coordinates and returns parking only, without distances. District-only place names do the same. For Acıbadem specify 'Acıbadem, Kadıköy' or 'Acıbadem, Üsküdar'. Not address geocoding. NoYesYesYes
istanbul_nearbyFind city services by kind and coordinates, or parking/pharmacy by district. bbox and types apply only to city_feature (parking, metro_station, air_quality_station, public_transport_stop, wifi, ev_charging, taxi_stand, market). air_quality includes latest readings; city_feature has station locations only. Static layers return published locations, not live status. District lists have no distances. Pharmacy records include name, district, address, phone, map links, provenance and freshness; maps_search_url is address search, not a verified pin. Pharmacy duty-end times are not guaranteed. Card/social locations are static, not live operating status. NoYesYesYes
istanbul_neighborhood_profileReturn a joined neighborhood profile from social, building, and earthquake scenario records.NoYesYesYes
istanbul_next_departuresSearch GTFS stop names or return published departures for selected stops. Use stop_query with limit only to discover stop_id candidates by name, including Turkish/ASCII spellings (Kadıköy/kadikoy). This mode returns stops, NOT departures. Same-name stops remain separate; never choose the first automatically. Approximate spelling suggestions are labeled, not matches. Ask the user to select a candidate using name/map, then call with stop_id. stop_code identifies the published stop sign when present. stop_desc and platform_direction_text preserve source text; they are not inferred route directions. Missing metadata stays null; districts are not inferred. at is an ISO datetime with a UTC offset; omitted means now in Europe/Istanbul. The search covers 24 hours. stop_id and coordinates are mutually exclusive. line matches the published route short name. Times are scheduled, never live ETA, delays or proof of service. Outside-calendar queries are unavailable. NoYesYesYes
istanbul_query_resourceQuery IBB CKAN DataStore records with guarded filters and limits. API reference: https://docs.ckan.org/en/latest/maintaining/datastore.html Uses datastore_search, not SQL; field names come from the resource schema. NoYesYesYes
istanbul_search_datasetsSearch the IBB open data catalog.NoYesYesYes
istanbul_traffic_statusReturn Istanbul citywide traffic index.NoYesYesYes
istanbul_transit_lineGet IETT line info, ordered stops or planned main-terminal departures. limit applies only to departures. This is not live intermediate-stop ETA. Cross-operator service notices are provided by istanbul_transport_disruptions. NoYesYesYes
istanbul_transport_disruptionsReturn current official disruptions and service announcements across supported transport operators.NoYesYesYes
istanbul_water_statusGet ISKI active faults (district or fault_number) or dam occupancy. Dam filters apply only to dams; fault_number is exclusive with district. Nearby faults are provided by istanbul_nearby(kind="water_fault"). Results carry fallback freshness and approximate fault locations; no restoration guarantee. NoYesYesYes

Details

Registry status
Active
Published
Oct 25, 2026
Updated
Oct 25, 2026
Categories (suggested)
Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing