CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
bmlt-enabled avatar

BMLT Meetings

bmlt-enabled/bmlt-server-mcp
6 toolsHTTPregistry active
Summary

A streamable HTTP server that connects Claude and other MCP clients to the BMLT aggregator, which federates 85% of Narcotics Anonymous meetings worldwide into a single searchable directory. Exposes six read-only tools: geocoded meeting search with filters for format, venue type, and service body; single meeting lookup; format and service body enumeration; server info; and root server discovery. Built on Laravel with Nominatim or Google geocoding. Ships with Docker Compose and includes an allowlist for the optional root server override argument to prevent SSRF. Reach for this when you need AI-accessible NA meeting data without running a local stdio subprocess or when you want to host a shared instance for multiple clients.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →

Tools

Public tool metadata for what this MCP can expose to an agent.

6 tools
search_meetingsSearch Narcotics Anonymous meetings on a BMLT root server. Filter by location (address or lat/lng + radius), weekday, time of day, format, venue type (in-person / virtual / hybrid), and service body. Returns a trimmed summary by default; pass data_format='full' for the raw BML...17 params

Search Narcotics Anonymous meetings on a BMLT root server. Filter by location (address or lat/lng + radius), weekday, time of day, format, venue type (in-person / virtual / hybrid), and service body. Returns a trimmed summary by default; pass data_format='full' for the raw BML...

Parameters* required
addressstring
Free-form address to search near (geocoded server-side). Ignored if latitude+longitude are provided.
data_formatstring
"summary" returns a curated subset of fields (default). "full" returns the raw BMLT response.one of summary · fulldefault: summary
format_idsarray
BMLT format IDs to require. Use list_formats to discover IDs (e.g. Open, Closed, Speaker, Beginners).
languagestring
Language code for format names (e.g. "en", "es", "de", "fr").
latitudenumber
Latitude in decimal degrees. Pair with longitude for an exact-coordinate search.
longitudenumber
Longitude in decimal degrees. Pair with latitude for an exact-coordinate search.
pageinteger
Page number (1-indexed). Used with page_size.default: 1
page_sizeinteger
Results per page. Omit to return all matches.
radius_milesnumber
Search radius in miles. Defaults to 10. Ignored when no coordinates are provided.default: 10
recursive_servicesboolean
When service_body_ids is set, also include their children. Default true.default: true
root_server_urlstring
Override the configured BMLT root server URL. Must be allowlisted unless BMLT_ALLOW_ANY_ROOT=true.
search_textstring
Free-text search across meeting name, location, and notes.
service_body_idsarray
Restrict to specific service bodies (regions/areas). Use list_service_bodies to discover IDs.
starts_afterstring
Earliest start time as 24h "HH:MM" (e.g. "18:00").
starts_beforestring
Latest start time as 24h "HH:MM" (e.g. "21:30").
venue_typesarray
Venue type filter. 1=In-person, 2=Virtual, 3=Hybrid.
weekdaysarray
Weekday filter. 1=Sunday, 2=Monday, ..., 7=Saturday. Example: [2,4,6] for Mon/Wed/Fri.
get_meetingFetch the full record for a single meeting by its BMLT id_bigint.2 params

Fetch the full record for a single meeting by its BMLT id_bigint.

Parameters* required
idinteger
BMLT meeting id_bigint.
root_server_urlstring
Override the configured BMLT root server URL.
list_formatsList available meeting formats (Open, Closed, Speaker, Beginners, language tags, etc.) so the caller can map human-friendly format names to BMLT format IDs.5 params

List available meeting formats (Open, Closed, Speaker, Beginners, language tags, etc.) so the caller can map human-friendly format names to BMLT format IDs.

Parameters* required
format_idsarray
Restrict to specific format IDs.
include_unusedboolean
Include formats not currently assigned to any meeting. Default false.default: false
key_stringsarray
Restrict to formats matching these short codes (e.g. ["O", "C", "SP"]).
languagestring
Language code for format names (e.g. "en", "es", "fr"). Defaults to server default.
root_server_urlstring
Override the configured BMLT root server URL.
list_service_bodiesList BMLT service bodies (zones, regions, areas, groups). Useful for translating "Northern California Region" to a service body ID for use with search_meetings.4 params

List BMLT service bodies (zones, regions, areas, groups). Useful for translating "Northern California Region" to a service body ID for use with search_meetings.

Parameters* required
include_childrenboolean
Also include child service bodies of the requested IDs.default: false
include_parentsboolean
Also include parent service bodies of the requested IDs.default: false
root_server_urlstring
Override the configured BMLT root server URL.
service_body_idsarray
Restrict to specific service body IDs.
get_server_infoReturn capabilities, version, languages, and default coordinates for a BMLT root server.1 params

Return capabilities, version, languages, and default coordinates for a BMLT root server.

Parameters* required
root_server_urlstring
Override the configured BMLT root server URL.
list_root_serversList public BMLT root servers known to the BMLT aggregator. Use the returned root_server_url values with other tools to query a specific server.1 params

List public BMLT root servers known to the BMLT aggregator. Use the returned root_server_url values with other tools to query a specific server.

Parameters* required
name_containsstring
Case-insensitive substring filter applied to the server name.

bmlt-server-mcp

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 that AI assistants can call directly.

BMLT hosts approximately 85% of Narcotics Anonymous meetings worldwide; the default backend is the BMLT aggregator, which federates every public BMLT root server (server list) into a single search surface — effectively the authoritative AI-accessible source for finding NA meetings.

MCP is an open protocol, so any compatible client works: Claude (Code, Desktop, web), ChatGPT (Connectors and the Responses API), Google Gemini, Cursor, Windsurf, Zed, Cline, Continue, and others.

Unlike the npm bmlt-mcp-server (stdio-only, runs as a local subprocess), this server speaks MCP over HTTP and is meant to be hosted once and consumed remotely.

Built on Laravel + PHP 8.2+ using the official laravel/mcp package.

A live deployment runs at https://mcp.bmlt.app/ (landing page) with a tools reference at https://mcp.bmlt.app/reference.


Tools

All tools are read-only and idempotent. All tools accept an optional root_server_url argument; if omitted, the configured BMLT_ROOT_SERVER_URL is used.

ToolWhat it does
search_meetingsSearch 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).
get_meetingFetch a single meeting by its BMLT id_bigint.
list_formatsList meeting format codes (Open, Closed, Speaker, Beginners, language tags, …) so callers can map names → IDs for search_meetings.
list_service_bodiesList zones / regions / areas / groups so callers can map names → IDs for search_meetings.
get_server_infoCapabilities, version, languages, and default coordinates for the configured root server.
list_root_serversPublic BMLT root servers known to the aggregator. Useful when the caller wants to switch roots.

Quick start

Docker (recommended)

cp .env.example .env
docker compose up --build

The MCP endpoint is then live at http://localhost:8080/mcp over the Streamable HTTP transport.

Local PHP

composer install
cp .env.example .env
php artisan key:generate
php artisan serve     # http://localhost:8000/mcp

Verify with the MCP Inspector

php artisan mcp:inspector

Then connect to http://localhost:8000/mcp (or :8080 for Docker) and list tools.


Configuration

All configuration lives in .env (see .env.example). The interesting bits:

VariablePurpose
BMLT_ROOT_SERVER_URLRequired. Default BMLT root server, including /main_server path.
BMLT_ALLOWED_ROOTSComma-separated allowlist for the optional root_server_url tool argument. The default root is always implicitly allowed.
BMLT_ALLOW_ANY_ROOTtrue allows any URL via root_server_url — not recommended in production (enables SSRF-style queries). Off by default.
BMLT_AGGREGATOR_URLAggregator queried by list_root_servers. Defaults to the public aggregator.
GEOCODERnominatim (default), google, or null. null rejects address inputs and requires lat/lng.
NOMINATIM_USER_AGENTIdentifies your deployment to OSM — required by Nominatim's ToS. Always set this in production.
GOOGLE_GEOCODER_API_KEYRequired when GEOCODER=google.

Why an allowlist?

The optional root_server_url tool argument lets a single deployment serve any BMLT root, but accepting arbitrary URLs would let callers turn the server into an SSRF probe against your network. The default is a strict allowlist (the configured default root, plus anything you add to BMLT_ALLOWED_ROOTS). Set BMLT_ALLOW_ANY_ROOT=true only when the server is isolated from anything sensitive.


Connecting AI clients

The endpoint of a deployed instance is https://your-host.example.com/mcp. Replace it below with your own host (or use https://mcp.bmlt.app/mcp to try the public instance).

Claude Code (CLI)

claude mcp add --transport http bmlt https://your-host.example.com/mcp

Claude Desktop — Custom Connector (newer builds)

Settings → Connectors → Add custom connector → paste the URL.

Claude Desktop — Config file (any version, needs Node.js)

{
  "mcpServers": {
    "bmlt": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-host.example.com/mcp"]
    }
  }
}

ChatGPT / OpenAI Responses API

{
  "tools": [
    {
      "type": "mcp",
      "server_label": "bmlt",
      "server_url": "https://your-host.example.com/mcp"
    }
  ]
}

In ChatGPT itself (Pro/Business/Enterprise): Settings → Connectors → Add, using the same URL.

Cursor / Windsurf / Zed / Cline / Continue

All of these read an mcpServers block. For Cursor, edit ~/.cursor/mcp.json (or the project-local .cursor/mcp.json); other clients use a similar config file.

{
  "mcpServers": {
    "bmlt": {
      "url": "https://your-host.example.com/mcp"
    }
  }
}

For per-tool parameter documentation and BMLT-API mappings, see the live reference page. For day-to-day commands on a deployed instance (log tailing, usage summaries, cache clears, upgrades), see docs/operations.md.


Adding authentication

The default config has no auth — anyone who can reach /mcp can call the tools. To gate it:

// routes/ai.php
use Laravel\Mcp\Facades\Mcp;

Mcp::oauthRoutes();                          // OAuth 2.1 (Laravel Passport)
Mcp::web('/mcp', BmltServer::class)
    ->middleware('auth:api');

Or add a simple bearer-token check via custom middleware. See the Laravel MCP docs for the full options.


Architecture

app/
├── Mcp/
│   ├── Servers/BmltServer.php           # Registers the 6 tools
│   └── Tools/
│       ├── SearchMeetingsTool.php
│       ├── GetMeetingTool.php
│       ├── ListFormatsTool.php
│       ├── ListServiceBodiesTool.php
│       ├── GetServerInfoTool.php
│       ├── ListRootServersTool.php
│       └── Concerns/ResolvesBmltClient.php
├── Services/
│   ├── Bmlt/
│   │   ├── BmltClient.php               # Wraps client_interface/json
│   │   ├── BmltClientFactory.php        # Allowlist enforcement
│   │   └── BmltException.php
│   └── Geocoding/
│       ├── Geocoder.php                 # Interface
│       ├── GeocoderManager.php          # Driver resolver
│       ├── NominatimGeocoder.php        # OSM (rate-limited, cached)
│       ├── GoogleGeocoder.php           # Google Geocoding API
│       ├── NullGeocoder.php             # Disabled
│       ├── GeocodingResult.php
│       └── GeocodingException.php
└── Providers/BmltServiceProvider.php

config/bmlt.php                          # All knobs
routes/ai.php                            # Mcp::web('/mcp', BmltServer::class)

The HTTP API wrapped by BmltClient is formally specified by the BMLT Semantic OpenAPI document (OpenAPI 3.1) — refer to it for every parameter, response shape, and field definition that BMLT itself supports, even if this MCP server doesn't yet expose it as a tool argument.


License

MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
ego lite browserego lite browser
ego lite browser
Fastest browser for AI agents to run web automation tasks, always free.
Download Free life-time →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Agent, connect blockchain
Agent, connect blockchain
Connect your Claude agent to live crypto prices and trading routes via 1inch
Get the MCP →
inference shell
inference shell
create and run specialised agents in minutes
build now →
CodeHealth MCP ServerCodeHealth MCP Server
CodeHealth MCP Server
Protect your code quality, stop the AI slop.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Categories
Search & Web Crawling
Registryactive
TransportHTTP
UpdatedMay 18, 2026
View on GitHub

Related Search & Web Crawling MCP Servers

View all →
bouch avatar
govuk

bouch/govuk

MCP server for GOV.UK — search, content drill-down, organisations, and postcode lookup.
bouch avatar
What Do They Know?

bouch/whatdotheyknow

Search UK FOI requests, public authorities, and responses. Draft and submit Freedom of Information requests.
bouch avatar
What Do They Know?

bouch/whatdotheyknow-cc61df84

Search UK FOI requests, public authorities, and responses. Draft and submit Freedom of Information requests.
brightwayai avatar
Video Analyzer

brightwayai/video-analyzer

Analyze videos: extract frames, transcribe audio, generate storyboard breakdowns.
brunosrz avatar
Vectora

brunosrz/vectora

AI assistant with RAG, web search, filesystem and memory. MCP sub-agent for Claude Code.
budgetfitter avatar
BudgetFitter

budgetfitter/budgetfitter

BudgetFitter is a free UK deal discovery platform with a public MCP server. Search verified discount codes, look up brand intelligence, and navigate deals — no auth required.