MCP.so
Sign In
N

Na Meetings

@bmlt-enabled

About Na Meetings

Search Narcotics Anonymous meetings worldwide via the BMLT directory.

Basic information

Category

Other

Transports

stdio

Publisher

bmlt-enabled

Submitted by

pjaudiomv

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "bmlt": {
      "url": "https://mcp.bmlt.app/mcp"
    }
  }
}

Tools

6

Search 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_url argument lets callers query any allowed BMLT root server.
  • Strict allowlist for root_server_url prevents 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.

Comments

More Other MCP servers