Skip to main content
Glama

UberSync MCP Server

Open the local UberSync ride-booking UI here:

http://localhost:3001/ride-home

Open the live UberSync ride-booking UI here:

https://long-kids-call.loca.lt/ride-home

UberSync is an Uber-style MCP experience for choosing pickup and destination, comparing ride options, selecting solo or shared rides with ShareMatch AI, tracking a moving driver with live ETA updates, and completing the ride with payment and receipt details.

Related MCP server: MI PANA APP MCP Server

Product overview

UberSync brings a complete ride-booking workflow to an interactive MCP application. It connects a polished frontend experience with NitroStack server tools for locations, pricing, ride lifecycle management, driver tracking, and trip receipts.

Key features

  • Pickup and destination selection with Chennai demo locations

  • Route, fare, ride-option, and travel-time estimates

  • Solo rides and ShareMatch AI shared-ride fare splitting

  • Driver assignment with vehicle details and dynamic ETA

  • Simulated real-time driver movement and trip progress

  • Start trip, cancel ride, complete ride, payment, and receipt flows

  • Trip history, saved places, safety information, and support tools

Technology stack

  • NitroStack MCP for server tools, resources, prompts, and widgets

  • TypeScript for the MCP server

  • React and Next.js for the widget application

  • Tailwind CSS for the frontend styling

Demo workflow

  1. Open the local UberSync MCP application.

  2. Select a pickup location and destination.

  3. Review the route, duration, fare, and ride options.

  4. Choose a solo ride or use ShareMatch AI.

  5. Confirm the ride and view the assigned driver.

  6. Track the driver, start the trip, and follow its progress.

  7. Complete the ride and view payment and receipt details.

MCP capabilities

The server exposes tools for location search, ride estimates, ride selection, booking, driver information, ride status, driver location, trip completion, cancellation, trip history, receipts, saved places, payments, safety, and support. Resources and prompts provide pricing information, service-area data, safety guidance, help instructions, and guided ride workflows. Widget source and the widget manifest are available under src/widgets.

Demo-mode disclaimer

The default demo mode uses safe, deterministic simulated locations, drivers, ride movement, payment methods, and receipts. It does not book a real Uber ride or charge a real payment method. The optional live API adapter requires valid authorization and should be tested only with the appropriate sandbox settings.

Buildathon positioning

I built UberSync MCP using NitroStack.

Credits

Built as an Uber-inspired MCP proof of concept for the NitroStack Buildathon.

Quick start

npm install
npm run dev

For the presentation, run npm run demo and keep DEMO_MODE=true. This gives a deterministic, shared UberSync ride state with no external credentials. To use the official API instead, set DEMO_MODE=false and UBER_ACCESS_TOKEN. The official Uber API uses OAuth 2.0 rather than a normal API key. Request the scopes needed by the tools you use: request for booking and live ride status, history for trip history, request_receipt for receipts, and places for Home/Work saved places. Use UBER_API_ENV=sandbox while testing; the production request endpoint may create a real ride and charge the rider. This optional integration adapter has not been verified here with authorized Uber credentials.

Production build

npm run build
npm run start:prod

The NitroStack CLI defaults to STDIO in development. Set NODE_ENV=production or MCP_TRANSPORT_TYPE=http when an HTTP transport is needed.

NitroStudio

The installed NitroStack CLI v1.0.15 does not start Studio or serve a Studio page. npm run dev starts the TypeScript watcher and the widget dev server on http://localhost:3001; it reports STDIO because the standalone NitroStudio client launches/connects to the MCP project subprocess.

Open the standalone NitroStudio app (download page: https://nitrostack.ai/studio), select this project folder, and click Connect. Studio uses local project access for STDIO and loads the widget iframe from port 3001. There is no CLI tunnel or bridge in this CLI version. The hosted download page itself cannot execute this local project.

The widget app can also be built on its own:

npm --prefix src/widgets run build

For an HTTP MCP client, use:

MCP_TRANSPORT_TYPE=http HOST=127.0.0.1 PORT=31337 DEMO_MODE=true npm run start:prod

The endpoint is http://127.0.0.1:31337/mcp.

In live mode, the Uber Rider API does not expose arbitrary nearby-driver lists, standalone driver profiles, or payment-method CRUD. Demo mode supplies safe fictional drivers and Cash/Demo Wallet payment choices for presentation only. Input locations include coordinates; the base app does not require a paid geocoder or map API key.

Available Tools

39 tools
add_payment_methodAdd Payment MethodA

Add a payment method. The Uber Rider API does not expose this operation; use the Uber app to manage payment methods.

Inputs: type (required), token (required), label.

book_rideBook RideA

Book a demo ride using the selected estimate. Returns a consistent ride ID, fare, driver, vehicle, and ETA.

Inputs: pickup (required), destination (required), rideType, estimateId, +1 more.

cancel_rideCancel RideA
DestructiveIdempotent

Cancel an active ride and return its cancellation fee and final status.

Inputs: rideId (required), reason.

choose_payment_methodChoose Payment MethodB

Choose Cash or Demo Wallet for the next demo ride.

Inputs: paymentMethodId (required).

complete_rideComplete Demo RideA

Development/demo control that completes an active ride immediately so the receipt flow can be presented.

Inputs: rideId (required).

contact_driverContact DriverB

Return a harmless demo contact action with the driver phone masked. This never calls or messages anyone.

Inputs: rideId (required).

emergency_helpEmergency HelpA

Show safe emergency guidance. This demo does not contact emergency dispatch.

Inputs: rideId.

estimate_rideEstimate RideA

Resolve a pickup and destination into route distance, duration, pickup ETAs, and dynamic fares for Moto, Auto, Go, Premier, and XL.

Inputs: pickup (required), destination (required).

get_current_locationGet Current LocationA

Return the configured demo pickup location. This does not access browser GPS.

Inputs: no named parameters.

get_driver_detailsGet Driver DetailsA

Get the assigned driver, rating, vehicle, registration, completed trips, and masked phone for a ride.

Inputs: rideId (required).

get_driver_locationGet Driver LocationA
Read-onlyIdempotent

Get the current Uber driver location and ride status for an active ride.

Inputs: rideId (required).

get_driver_profileGet Driver ProfileA
Read-onlyIdempotent

Get the assigned driver details for a ride. Standalone driver-profile lookup is not available in Uber’s Rider API.

Inputs: driverId (required).

get_fare_breakdownGet Fare BreakdownA

Return the detailed fare line items for a completed demo ride.

Inputs: rideId (required).

get_nearby_driversGet Nearby DriversA
Read-onlyIdempotent

Get real Uber product availability and pickup ETAs near a location. Uber does not expose a list of nearby driver identities.

Inputs: location (required), category, radiusKm.

get_payment_methodsGet Payment MethodsA

List safe demo payment choices: Cash and Demo Wallet.

Inputs: no named parameters.

get_price_estimateGet Price EstimateB
Read-onlyIdempotent

Get a current Uber fare range, route distance, duration, currency, and surge multiplier between two locations.

Inputs: pickup (required), destination (required), riders, category, +1 more.

get_recent_ridesGet Recent RidesC

Return the most recent completed and cancelled rides from the shared ride store.

Inputs: limit, status.

get_ride_detailsGet Ride DetailsB

Return the complete current ride record, route, fare, driver, vehicle, ETA, and status.

Inputs: rideId (required).

get_ride_optionsGet Ride OptionsC
Read-onlyIdempotent

List the real Uber products and current pickup ETAs available at a location.

Inputs: pickup, destination.

get_ride_receiptGet Ride ReceiptA

Return the completed ride route, fare, fees, total, payment method, driver, vehicle, and date.

Inputs: rideId (required).

get_ride_statusGet Ride StatusB
Read-onlyIdempotent

Get the latest status, route, driver assignment, ETA, and fare estimate for a ride.

Inputs: rideId (required).

get_saved_placesGet Saved PlacesB

Return Home, Work, SRM, and other saved demo places.

Inputs: no named parameters.

get_surge_statusGet Surge StatusA
Read-onlyIdempotent

Check the current Uber demand multiplier at a pickup location.

Inputs: location (required).

get_trip_detailsGet Trip DetailsA
Read-onlyIdempotent

Get the route, driver, category, timestamps, payment method, and receipt for a trip.

Inputs: tripId (required).

get_trip_receiptGet Trip ReceiptA
Read-onlyIdempotent

Get the fare line items, taxes, tip, total, and currency for a completed trip.

Inputs: tripId (required).

list_payment_methodsList Payment MethodsA
Read-onlyIdempotent

List demo payment methods and identify the default method used for demo rides.

Inputs: no named parameters.

list_saved_placesList Saved PlacesA
Read-onlyIdempotent

List the rider’s real Uber Home and Work saved places.

Inputs: no named parameters.

list_tripsList TripsB
Read-onlyIdempotent

List recent completed or cancelled trips, optionally filtered by status.

Inputs: limit, status.

remove_payment_methodRemove Payment MethodA
DestructiveIdempotent

Remove a saved payment method. At least one payment method must remain on the account.

Inputs: paymentMethodId (required).

remove_saved_placeRemove Saved PlaceC
DestructiveIdempotent

Remove a saved place. Uber’s Rider API currently does not expose saved-place deletion, so this tool reports that limitation.

Inputs: placeId (required).

request_rideRequest RideB

Book a ride from a pickup location to a destination. In DEMO_MODE it uses the shared deterministic demo store; live mode uses Uber when authorized.

Inputs: pickup (required), destination (required), riders, category, +3 more.

safety_detailsSafety DetailsC

Return safety information for a demo ride.

Inputs: rideId (required).

save_placeSave PlaceA
Idempotent

Create or update a named saved place with a validated address and coordinates.

Inputs: name (required), location (required).

search_locationsSearch LocationsA

Search known Chennai pickup and destination locations using real seeded coordinates in demo mode.

Inputs: query (required).

select_rideSelect RideB

Select one ride type from an estimate before booking it.

Inputs: rideTypeId (required), estimateId.

set_default_payment_methodSet Default Payment MethodA
Idempotent

Choose which saved payment method should be used when request_ride omits a payment method ID.

Inputs: paymentMethodId (required).

share_tripShare TripC

Create a safe demo share representation without exposing private contact information.

Inputs: rideId (required).

track_driverTrack DriverA

Return driver coordinates, pickup, destination, progress, ETA, and current ride status.

Inputs: rideId (required).

update_ride_destinationUpdate Ride DestinationA
DestructiveIdempotent

Change the destination of an active Uber ride and return the updated live request.

Inputs: rideId (required), destination (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 39 tools

    Disambiguation1/5

    Multiple tools are near-synonyms: get_trip_receipt, get_ride_receipt, and get_fare_breakdown overlap heavily; get_saved_places overlaps with list_saved_places; book_ride overlaps with request_ride; and get_ride_status overlaps with get_ride_details, get_driver_location, and track_driver. An agent cannot reliably distinguish these tools without reading full descriptions, and several differ only in demo-vs-real mode.

    Naming Consistency4/5

    Tool names generally follow a verb_noun snake_case pattern such as get_*, list_*, cancel_*, request_*, and save_*. There are minor deviations like emergency_help and safety_details, and the heavy reuse of get_* makes names less informative, but the overall naming convention is predictable.

    Tool Count2/5

    At 39 tools, the surface is well beyond the 25-tool threshold and feels bloated for the actual domain. Most of the extra count comes from overlapping operations, not from genuinely distinct capabilities; the set could likely be reduced to 15-20 coherent tools.

    Completeness4/5

    The core ride lifecycle is well covered: search, estimate, select, book, track, update destination, cancel, complete, and receipt. Minor gaps exist, such as stub demo actions for emergency help, contacting drivers, and adding payment methods, plus no explicit rating or tipping flow, but agents can generally accomplish the main workflows.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to interact with the Uber API for ride management, including requesting rides, obtaining price and time estimates, and tracking active trip status. It supports comprehensive journey features such as viewing ride history, cancelling requests, and rating drivers through a secure OAuth 2.0 integration.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables agents to search places, get live fares and route previews, list payment methods, book rides, monitor ride and vehicle status, preview and confirm cancellations, and retrieve ride history for Tesla Robotaxi rider accounts.
      8
      MIT