Free MCP starter kits for small businesses: one business.yaml, AI assistants answer from your real info
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add mainstreet-mcp -- npx -y github{
"mcpServers": {
"mainstreet-mcp": {
"command": "npx",
"args": ["-y", "github"]
}
}
}MCP Servers overview
# Main Street MCP
A free, industry-specific MCP server that gives a small business's AI assistants
(ChatGPT, Claude, etc.) reliable answers about the business itself — hours, menu/services,
FAQs, staff, and how to book — instead of hallucinating them. One `business.yaml` file per
business; no code changes required to run it.
## Quickstart (business owner)
1. Install Node.js 20+ (or use the version already on your machine — check with `node -v`).
2. Generate a starter config for your industry:
```
npx -y github:gbrussich52/mainstreet-mcp init --industry restaurant
```
Replace `restaurant` with your industry. Supported industries: `restaurant`, `dental`,
`law-firm`, `home-services`, `salon-spa`, `fitness-studio`, `real-estate-agent`,
`auto-repair`, `insurance-agency`, `church`.
This writes `business.yaml` in the current directory — edit it with your business's
real name, hours, menu/services, FAQs, etc. (Use `--out <path>` for a different name;
every other command then needs `--config <path>`.)
3. Check your edits are valid:
```
npx -y github:gbrussich52/mainstreet-mcp validate
```
A broken file (bad YAML, a typo'd industry, a field that doesn't fit) prints a specific,
readable error instead of a stack trace.
4. Point your AI assistant at it. For a local MCP client (e.g. Claude Desktop) that spawns
stdio servers, add an entry like:
```json
{
"mcpServers": {
"my-business": {
"command": "npx",
"args": ["-y", "github:gbrussich52/mainstreet-mcp", "--config", "/absolute/path/to/business.yaml"]
}
}
}
```
To serve over HTTP instead (e.g. for a hosted deployment), run:
```
npx -y github:gbrussich52/mainstreet-mcp serve --http --port 3000
```
The HTTP server only binds to `127.0.0.1` and validates the `Host`/`Origin` headers on
every request — put a reverse proxy in front of it for anything beyond local testing.
## What it gives an AI assistant
Every business gets 7 **universal tools** regardless of industry:
- `get_business_profile` — name, description, contact info, address, policies
- `check_open_status` — open/closed right now (or at a given time), in the business's own
timezone, including overnight hours and holiday/exception overrides
- `search_offerings` — free-text search over whatever the business sells/offers
- `answer_question` — looks up configured FAQs; returns `found: false` rather than a guess
when nothing matches confidently
- `list_staff` — configured staff, roles, bios, credentials
- `get_booking_options` — how to actually book (phone/online/walk-in/email)
- `submit_inquiry` — lets a customer leave a message; rate-limited, sanitized, and screened
by industry-specific guardrails before it's accepted
On top of that, each **industry preset** turns on a handful of **capabilities** — pluggable
tool modules — matched to that industry:
| Industry | Capabilities / tools |
|---|---|
| restaurant | `menu` → `get_menu` |
| dental | `insurance_accepted` → `check_insurance_accepted` |
| law-firm | `practice_areas` → `list_practice_areas` (always carries a not-legal-advice disclaimer) |
| home-services | `service_area` → `check_service_area`, `price_estimate` → `get_price_estimate` |
| salon-spa | `class_schedule` → `get_class_schedule` |
| fitness-studio | `class_schedule` → `get_class_schedule` |
| real-estate-agent | `listings` → `search_listings` |
| auto-repair | `service_area`, `price_estimate`, `insurance_accepted` |
| insurance-agency | `coverage_lines` → `list_coverage_lines` |
| church | `service_times` → `get_service_times` |
Every tool ships an `outputSchema` and returns `structuredContent`, so a calling agent gets
typed data back, not just prose to parse.
### Guardrails
Some presets screen `submit_inquiry` messages before accepting them, on top of the universal
sanitization (HTML/control-char stripping, length caps, rate limiting):
- **dental** — rejects messages containing an SSN-shaped pattern, and long messages with
clinical/health detail keywords (tells the patient to call the office instead).
- **law-firm** — caps the message to one line / 280 characters (a topic, not case details).
- **salon-spa** / **fitness-studio** — rejects messages containing health/medical detail
keywords (pregnancy, injury, medication, etc.), directing the customer to tell staff
in person instead.
`price_estimate` outputs always carry `is_estimate: true` plus a disclaimer — never present
as a firm quote.
## Install
### Claude Desktop (one-click, no terminal)
Download the latest `mainstreet-mcp.mcpb` from the [releases page](https://github.com/gbrussich52/mainstreet-mcp/releases)
(or build it yourself — see `mcpb/` below), then double-click it. Claude Desktop opens it as
a Desktop Extension install prompt; it asks for one thing — the path to your
`business.yaml` — then installs. No Node.js install or terminal needed.
To build the `.mcpb` yourself:
```
npx @anthropic-ai/mcpb pack mcpb build/mainstreet-mcp.mcpb
```
### Claude Code (plugin)
Install the bundled plugin, which registers the MCP server and adds a `setup-my-business`
skill that interviews you and writes `business.yaml` for you:
```
claude plugin install ./plugin
```
The plugin's MCP config expects `business.yaml` at your project root
(`${CLAUDE_PROJECT_DIR}/business.yaml`), which is exactly what `init` writes — run the
`setup-my-business` skill, or `npx -y github:gbrussich52/mainstreet-mcp init --industry <yours>`,
from that directory.
### Claude Code (direct MCP add, no plugin)
```
claude mcp add mainstreet -- npx -y github:gbrussich52/mainstreet-mcp --config /absolute/path/to/business.yaml
```
### Generic JSON config (any MCP client)
For any client that spawns stdio servers from a JSON config (Claude Desktop's manual config,
other MCP clients):
```json
{
"mcpServers": {
"my-business": {
"command": "npx",
"args": ["-y", "github:gbrussich52/mainstreet-mcp", "--config", "/absolute/path/to/business.yaml"]
}
}
}
```
## Example configs
`examples/` has one working `<industry>.business.yaml` per supported industry — the same
files `init` copies from and the E2E test suite runs against.
## Development
```
npm install
npm run build # tsc -> dist/
npm test # builds, then runs node --test against dist/test/*.test.js
```
Stack: `@modelcontextprotocol/server@2.0.0` (MCP spec 2026-07-28), TypeScript strict/ESM,
Zod for all schemas and config validation, `yaml` for parsing `business.yaml`. All
dependencies are pinned to exact versions (no `^`).
### Project layout
- `src/config/schema.ts` — the `business.yaml` Zod schema (`BusinessConfigSchema`) and types.
- `src/config/load.ts` — loads + validates a config file, including per-capability config and
the industry/capability compatibility check.
- `src/hours.ts` — timezone-aware open/closed logic (`Intl`-based), overnight ranges, date
exceptions, forward-scanning for the next open/close time.
- `src/search.ts` — the recall-first free-text search used by `search_offerings` and
`answer_question`.
- `src/inquiries.ts` — `InquirySink`: sanitization, rate limiting, guardrail hook, and
file/webhook delivery for `submit_inquiry`.
- `src/capabilities/*` — the 9 pluggable capability modules (config schema + tool registration
each).
- `src/presets/*` — the 10 industry presets: which capabilities are on, the instructions text
injected into the server, and any `guardHooks`.
- `src/tools/universal.ts` — the 7 universal tools every business gets.
- `src/server.ts` — `createServer(config)`: builds the `McpServer` for a loaded config.
- `src/cli.ts` — `mainstreet-mcp` entry point (stdio default, `init`, `validate`,
`serve --http`).
- `src/test/*.test.js` (compiled from `.ts`) — unit tests (schema, search, hours, inquiries/
guardrails) plus an E2E suite that spawns the built stdio server for every example config
and drives it with the real MCP client SDK.
### Testing notes
- `npm test` runs both unit tests and the E2E suite (`src/test/e2e.test.ts`), which spawns
`dist/cli.js` as a child process via `StdioClientTransport` for every file in `examples/`,
calls `tools/list`, then calls every registered tool and asserts it returns
`structuredContent` without `isError`.
- `serve --http` binds a local port, which some sandboxed shells block by default; test it
outside such a sandbox if `EPERM`/`listen` errors appear.
## Status
Presets, capabilities, universal tools, CLI, and all 10 example configs are built and
verified (build, unit tests, E2E stdio tests, CLI validate success/failure paths, and an
HTTP smoke test all pass — see the build's final report for exact output). This is a
first build, not yet published or deployed anywhere.
What people ask about mainstreet-mcp
What is gbrussich52/mainstreet-mcp?
+
gbrussich52/mainstreet-mcp is mcp servers for the Claude AI ecosystem. Free MCP starter kits for small businesses: one business.yaml, AI assistants answer from your real info It has 0 GitHub stars and its last recorded update is dated 2026-09-17.
How do I install mainstreet-mcp?
+
You can install mainstreet-mcp by cloning the repository (https://github.com/gbrussich52/mainstreet-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is gbrussich52/mainstreet-mcp safe to use?
+
Our security agent has analyzed gbrussich52/mainstreet-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains gbrussich52/mainstreet-mcp?
+
gbrussich52/mainstreet-mcp is maintained by gbrussich52. The last recorded GitHub activity is dated 2026-09-17, with 0 open issues.
Are there alternatives to mainstreet-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy mainstreet-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/gbrussich52-mainstreet-mcp)<a href="https://claudewave.com/repo/gbrussich52-mainstreet-mcp"><img src="https://claudewave.com/api/badge/gbrussich52-mainstreet-mcp" alt="Featured on ClaudeWave: gbrussich52/mainstreet-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ
The fastest path to AI-powered full stack observability, even for lean teams.