Na Meetings
@bmlt-enabled
About Na Meetings
Search Narcotics Anonymous meetings worldwide via the BMLT directory.
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"bmlt": {
"url": "https://mcp.bmlt.app/mcp"
}
}
}Tools
6Search meetings by address (geocoded server-side) or lat/lng + radius, filtered by weekday, time, format, venue type (in-person / virtual / hybrid), service body, and free text. Returns a curated summary by default (`data_format=full` for the raw BMLT response).
Fetch a single meeting by its BMLT `id_bigint`.
List meeting format codes (Open, Closed, Speaker, Beginners, language tags, …) so callers can map names → IDs for `search_meetings`.
List zones / regions / areas / groups so callers can map names → IDs for `search_meetings`.
Capabilities, version, languages, and default coordinates for the configured root server.
Public BMLT root servers known to the aggregator. Useful when the caller wants to switch roots.
Overview
What is Na Meetings?
A streamable HTTP Model Context Protocol server that exposes BMLT (Basic Meeting List Toolbox — the Narcotics Anonymous meeting directory) as a set of read‑only tools for AI assistants. BMLT hosts approximately 85% of NA meetings worldwide; the default backend is the BMLT aggregator, which federates every public root server into a single search surface.
How to use Na Meetings?
Deploy via Docker (docker compose up --build) or local PHP (composer install && php artisan serve), then configure .env with BMLT_ROOT_SERVER_URL. Any MCP‑compatible client (Claude, ChatGPT, Google Gemini, Cursor, Windsurf, Zed, Cline, Continue) can connect to the endpoint at http://localhost:8080/mcp (or your hosted URL) and call the six built‑in tools.
Key features of Na Meetings
- Six read‑only, idempotent tools: search_meetings, get_meeting, list_formats, list_service_bodies, get_server_info, list_root_servers.
- Supports geocoding (Nominatim, Google, or lat/lng) and filtering by weekday, time, format, venue type, service body, free text.
- Optional
root_server_urlargument lets callers query any allowed BMLT root server. - Strict allowlist for
root_server_urlprevents SSRF; default permits only the configured root. - Built on Laravel + PHP 8.2+ and designed for hosted, remote consumption (not local subprocess).
Use cases of Na Meetings
- An AI assistant finds NA meetings near a user's address or current location.
- A caller fetches the full details of a specific meeting by its BMLT ID.
- An assistant lists meeting format codes and service bodies to help users refine searches.
- A developer explores the capabilities and languages of a BMLT root server.
- A remote MCP client queries the aggregator without needing a local BMLT installation.
FAQ from Na Meetings
How does this server differ from the npm bmlt-mcp-server?
The npm package is stdio‑only and runs as a local subprocess; this server speaks MCP over HTTP and is meant to be hosted once and consumed remotely.
What are the runtime requirements?
PHP 8.2+ and Laravel. Docker is the recommended deployment method; local PHP development is also possible with Composer.
Where does the meeting data live?
No local storage — all data is fetched in real‑time from the configured BMLT root server (or the public aggregator). The server is a read‑only proxy.
Can I add authentication?
Yes. The default configuration has no auth. You can add OAuth 2.1 via Laravel Passport or a simple bearer‑token middleware.
What is the purpose of the BMLT_ALLOWED_ROOTS allowlist?
It prevents SSRF by restricting root_server_url to a defined set of trustable BMLT root servers. Setting BMLT_ALLOW_ANY_ROOT=true is not recommended in production.
Frequently asked questions
How does this server differ from the npm `bmlt-mcp-server`?
The npm package is stdio‑only and runs as a local subprocess; this server speaks MCP over HTTP and is meant to be hosted once and consumed remotely.
What are the runtime requirements?
PHP 8.2+ and Laravel. Docker is the recommended deployment method; local PHP development is also possible with Composer.
Where does the meeting data live?
No local storage — all data is fetched in real‑time from the configured BMLT root server (or the public aggregator). The server is a read‑only proxy.
Can I add authentication?
Yes. The default configuration has no auth. You can add OAuth 2.1 via Laravel Passport or a simple bearer‑token middleware.
What is the purpose of the `BMLT_ALLOWED_ROOTS` allowlist?
It prevents SSRF by restricting `root_server_url` to a defined set of trustable BMLT root servers. Setting `BMLT_ALLOW_ANY_ROOT=true` is not recommended in production.
Basic information
More Other MCP servers
MCP Toolbox for Databases
googleapisMCP Toolbox for Databases is an open source MCP server for databases.

EverArt
modelcontextprotocolModel Context Protocol Servers

YOUB
Connect your AI assistant to your own YOUB endurance training account. Read recorded activities with full analysis, planned sessions, race goals, wellness (HRV, sleep, resting HR) and your athletic profile. Create or mov

Lemon.io
lemon-ioRequest dedicated senior developers to work on your project, write job descriptions, and prep technical interviews — all without leaving your Claude chat. Just describe what you need, and Lemon.io MCP does the rest. 1–3
MCP Go 🚀
mark3labsA Go implementation of the Model Context Protocol (MCP), enabling seamless integration between LLM applications and external data sources and tools.
Comments