Agent-first directory for Indians from India in the USA β restaurants, temples, events & more.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Agent-first, agent-only data layer for the Indian-American diaspora. Phase 1: Indian restaurants (USA). This repo is the walking skeleton from the architecture blueprint:
get_indian_restaurants,
get_restaurant_details, search_restaurants_by_text, find_unclaimed_restaurants,
draft_claim_outreach, submit_correction), temple capabilities
(get_indian_temples, get_temple_details, search_temples_by_text) and grocery
capabilities (get_indian_groceries, get_grocery_details, search_groceries_by_text)
professional capabilities (get_indian_professionals, β¦), salon capabilities
(get_indian_salons, β¦), and a cross-vertical search_all that searches every vertical
at once (each result tagged with its vertical).pgvector for future embedding search) via Docker Compose.The hosted server is remote (no install) over streamableβHTTP:
https://namasteamerica.us/mcp (transport: streamable-http, auth: none, readβonly)https://namasteamerica.us/.well-known/mcp.json Β· Docs: https://namasteamerica.us/for-agentsTools (per vertical: restaurants, temples, groceries, professionals, salons, events, apparel,
sweets, studios, services, community, legal, education, real estate, finance):
get_indian_<category>, search_<category>_by_text, get_<category>_details, and a crossβvertical
search_all. Each result is JSON with address, geo, hours, contact, ratings, and languages.
Publishing to the official MCP registry: the manifest is
server.json(namespaceus.namasteamerica, verified via DNS). Install the CLI (mcp-publisher), authenticate the domain (mcp-publisher login dns --domain namasteamerica.us, then add the TXT record it prints), and runmcp-publisher publish.
Low-risk new inserts are auto-applied (configurable); updates to claimed/featured listings are routed to the human approval queue.
Requires Docker Desktop and Python 3.11+.
| Command | Purpose |
|---|---|
init-db | Apply SQL migrations (extensions, tables, indexes). |
scrape --metro <name> | Run the OSM scraper for a metro bbox into restaurant_raw. |
process | Clean/score unprocessed raw rows; auto-apply low-risk, queue high-risk. |
approvals | List pending approval-queue items. |
approve <id> / reject <id> | Resolve an approval item. |
outreach [--limit N] | Draft claim outreach for unclaimed restaurants (creates claim links + messages). |
verify-claim <token> | Owner-side: verify a claim token and take ownership. |
agents | List the registered autonomous agents. |
agent <name> | Run one agent now (audited in agent_runs). |
agents-loop [--once] | Run the scheduler (worker loop over due agents). |
query [--city/--text/--lat --lng/--id/...] | Call the MCP tool functions from the terminal. |
seed | Load fictional seed restaurants for local testing (no scrape needed). |
enrich | Backfill region/dietary cultural tags on under-tagged restaurants. |
deactivate-stale [--days 60] | Mark unclaimed listings not seen recently as inactive. |
approval-digest | Human-readable summary of the pending approval queue. |
feedback --id N --field F --value V | Submit a field correction (applied by the feedback agent). |
scrape --metro usa | Nationwide sweep (occasional; slower than a single metro). |
feature --id N [--days 30 | --permanent] | Mark a paid featured listing. |
unfeature --id N | Remove a featured listing. |
backfill-embeddings [--all] | (Re)compute embeddings for canonical rows. |
stats | Row counts and coverage summary. |
feature/unfeature) β a paid tier; effectively-featured rows
(flagged and within their featured_until window) surface first in every tool result./stripe/webhook) auto-features them. Disabled
until STRIPE_SECRET_KEY is set (then it's pay-per-sale, no monthly fee). See DEPLOY.md..env (see .env.example) and the Outreach Agent will auto-send claim emails to
restaurants that have a public email; otherwise it stays draft-only.Coverage spans 15 metros (Bay Area, NYC/NJ, Dallas, Houston, Chicago, LA, Seattle, Atlanta,
Phoenix, Austin, Boston, Philadelphia, Raleigh, Detroit, Central NJ) plus an on-demand
nationwide sweep (scrape --metro usa).
WhatsApp outreach is delivered as free click-to-send wa.me links (message pre-filled);
true auto-send WhatsApp needs a paid API and is intentionally not used.
Then exercise the MCP tools (e.g. get_indian_restaurants near the Bay Area, or
search_restaurants_by_text "vegetarian dosa").
Records are optimized for agent retrieval:
description per record (e.g. "Saffron House is a Gujarati Indian
restaurant in Edison, NJ. Offers vegetarian, jain options. Price: $$.") β generated from
the structured fields, returned to agents, and used as the text that gets embedded.city/state are filled offline from coordinates
(reverse_geocoder), so "near me / in " queries work for every record.tags (e.g. biryani, dosa, halal, delivery, takeout,
outdoor-seating, wheelchair-accessible, wifi, cards-accepted, organic) β derived
from names and rich OSM attributes; agents filter with tag=..., and they boost embedding
recall + appear in the description ("Amenities: β¦").open_now β opening_hours are parsed into structured per-day intervals; each result
carries an open_now flag (true/false/null) and the tools accept an open_now=true filter,
enabling "what's open near me right now".search_*_by_text ranks by embedding cosine distance (pgvector <=>), falling back to
trigram. Providers (EMBEDDING_PROVIDER):
hashing (default) β feature-hashing, zero extra deps; lexical.fastembed (recommended, prod default) β real semantic embeddings via
BAAI/bge-small-en-v1.5 (384-dim, ONNX, no torch). The Docker image includes it and the
prod compose defaults EMBEDDING_PROVIDER=fastembed; after deploying run
python -m indo_usa_mcp.cli enhance-data once to re-embed existing rows. Set
EMBEDDING_PROVIDER=hashing if the VPS is RAM-constrained.sentence_transformers β all-MiniLM-L6-v2 (heavier, pulls torch).none β trigram only.enhance-data (re)generates descriptions, fills geocoding, and re-embeds existing rows β
run it after enabling a new embedder. New records get all of this automatically on ingest.
After claiming, owners get an edit page (/manage?token=...) to update their phone,
hours, menu, price, dietary tags, etc. β changes go live immediately and are protected from
scraper overwrites (scraper updates to claimed listings route to the approval queue).
Stale listings not re-seen for 60 days are auto-deactivated (is_active=false) and
reactivated if they reappear in a later scrape.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/namaste-america)<a href="https://allmcps.com/mcp/namaste-america"><img src="https://allmcps.com/api/badge/namaste-america?style=directory" alt="Namaste America on AllMCPs" /></a>