mcp-nextdoor
README.md
# @striderlabs/mcp-nextdoor
MCP (Model Context Protocol) server for Nextdoor — the local community platform. Automate neighborhood feed browsing, marketplace search, event discovery, and local service finding using Playwright with Browserbase.
## Requirements
- Node.js 18+
- A [Browserbase](https://browserbase.com) account with a CDP-enabled session URL
- A Nextdoor account
## Environment Variables
| Variable | Required | Description |
|---|---|---|
| `BROWSERBASE_CDP_URL` | Yes | Browserbase CDP WebSocket URL for browser connection |
| `NEXTDOOR_EMAIL` | Yes | Your Nextdoor account email |
| `NEXTDOOR_PASSWORD` | Yes | Your Nextdoor account password |
## Installation
```bash
npm install @striderlabs/mcp-nextdoor
```
Or from tarball:
```bash
npm install ./striderlabs-mcp-nextdoor-1.0.0.tgz
```
## MCP Configuration
Add to your MCP client config (e.g., Claude Desktop `~/.claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"nextdoor": {
"command": "node",
"args": ["/path/to/node_modules/@striderlabs/mcp-nextdoor/dist/index.js"],
"env": {
"BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY&sessionId=YOUR_SESSION",
"NEXTDOOR_EMAIL": "you@example.com",
"NEXTDOOR_PASSWORD": "yourpassword"
}
}
}
}
```
## Tools
### `get_feed`
Get posts from your Nextdoor neighborhood feed.
**Parameters:**
- `limit` (number, 1-50, default: 10) — Number of posts to retrieve
- `category` (string, default: "all") — Filter by: `all`, `crime_safety`, `lost_found`, `free_stuff`, `recommendations`, `general`
**Example:**
```json
{ "limit": 5, "category": "crime_safety" }
```
---
### `create_post`
Draft a new post in your Nextdoor neighborhood. The post is loaded into the composer but not auto-submitted (safety measure).
**Parameters:**
- `title` (string, required) — Post title
- `body` (string, required) — Post body content
- `category` (string, default: "general") — Category: `general`, `crime_safety`, `lost_found`, `free_stuff`, `recommendations`
**Example:**
```json
{ "title": "Lost black cat - Maple St area", "body": "Missing since Tuesday evening...", "category": "lost_found" }
```
---
### `search_marketplace`
Search Nextdoor's For Sale & Free marketplace.
**Parameters:**
- `query` (string, required) — Search terms
- `max_price` (number, optional) — Maximum price
- `min_price` (number, optional) — Minimum price
- `limit` (number, 1-50, default: 10) — Number of listings
**Example:**
```json
{ "query": "bicycle", "max_price": 200, "limit": 5 }
```
---
### `get_events`
Get upcoming local events from Nextdoor.
**Parameters:**
- `limit` (number, 1-50, default: 10) — Number of events
- `days_ahead` (number, 1-90, default: 30) — Days ahead to look
**Example:**
```json
{ "limit": 10, "days_ahead": 14 }
```
---
### `get_recommendations`
Get local business recommendations from neighbors.
**Parameters:**
- `category` (string, default: "all") — Business type (e.g., `restaurant`, `plumber`, `dentist`)
- `limit` (number, 1-50, default: 10) — Number of recommendations
**Example:**
```json
{ "category": "restaurant", "limit": 5 }
```
---
### `find_services`
Search for local service providers.
**Parameters:**
- `service_type` (string, required) — Service to find (e.g., `plumber`, `electrician`, `babysitter`)
- `limit` (number, 1-50, default: 10) — Number of providers
**Example:**
```json
{ "service_type": "house cleaner", "limit": 5 }
```
## How It Works
The server uses Playwright to connect to a Browserbase-managed Chromium browser via CDP (Chrome DevTools Protocol). It navigates to Nextdoor, authenticates with your credentials, and scrapes or interacts with the page to fulfill tool requests.
```
MCP Client → mcp-nextdoor server → Playwright CDP → Browserbase → Chromium → nextdoor.com
```
## Notes
- **Authentication**: The server logs in using email/password on first use. Sessions are reused across tool calls.
- **Post creation**: `create_post` drafts content into the composer but does not submit automatically to prevent accidental posts.
- **Selectors**: Nextdoor's frontend changes periodically. If extraction returns empty results, the page structure may have changed.
- **Rate limiting**: Be respectful of Nextdoor's terms of service and avoid excessive automated requests.
## License
MIT — Strider Labs
TDQS
A4/5.0
Scored across 6 tools
Disambiguation5/5
Each tool targets a distinct function: posting, services, events, feed, recommendations, marketplace. There is no overlap in purpose, and descriptions clearly differentiate them.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern (create_post, find_services, get_events, get_feed, get_recommendations, search_marketplace). The verbs vary but are appropriate and predictable.
Tool Count5/5
Six tools cover the core features of a neighborhood app without being excessive. Each tool serves a distinct and essential purpose.
Completeness4/5
The set covers major actions like posting, browsing feed, events, services, recommendations, and marketplace. Missing update/delete for posts, but the core workflow is functional.
Maintenance
ActivityInactive
ResponsivenessNo issues