mcpField
M
mainstreet-mcp

mainstreet-mcp

Local
nyclaw.ioBusiness & Marketing0Updated 1d ago

About mainstreet-mcp

mainstreet-mcp gives small-business AI assistants configured facts about a business, alongside stateless workflow review kits based on caller-supplied facts. Businesses configure details in `business.yaml`; industry presets and tools cover queries such as opening status, offerings, and booking options.

Key features

  1. 01Configure business details in `business.yaml`
  2. 02Create industry presets and validate configuration
  3. 03Look up hours, offerings, and FAQs
  4. 04Provide booking options and accept inquiries
  5. 05Review quote follow-ups, invoice discrepancies, and order handoffs

Use cases

  1. 01Let an AI assistant answer questions about hours and services
  2. 02Configure customer inquiry tools for a business industry
  3. 03Prepare quote or invoice review drafts from supplied facts
  4. 04Check order handoff details and create a review draft

MCP support

The MCP server provides universal business tools and industry-specific tools to clients, and its workflow kits can run over stdio via the CLI. The kits evaluate caller-supplied structured facts and prepare review results and unsent drafts.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository
Packages
mcpbmainstreet-mcp.mcpb0.1.4
npmmainstreet-mcp0.1.4

Tools

2

Saved tool list · updated today

This tool takes no parameters.

Details

From the project README

Main Street MCP

M8ven Score

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 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 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:

    {
      "mcpServers": {
        "my-business": {
          "command": "npx",
          "args": ["-y", "mainstreet-mcp", "--config", "/absolute/path/to/business.yaml"]
        }
      }
    }
    

    To serve over HTTP instead (e.g. for a hosted deployment), run:

    npx -y 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:

IndustryCapabilities / tools
restaurantmenu → get_menu
dentalinsurance_accepted → check_insurance_accepted
law-firmpractice_areas → list_practice_areas (always carries a not-legal-advice disclaimer)
home-servicesservice_area → check_service_area, price_estimate → get_price_estimate
salon-spaclass_schedule → get_class_schedule
fitness-studioclass_schedule → get_class_schedule
real-estate-agentlistings → search_listings
auto-repairservice_area, price_estimate, insurance_accepted
insurance-agencycoverage_lines → list_coverage_lines
churchservice_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 (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 — a folder to keep your business.yaml in. Pick any folder you can find again; Documents is fine. No Node.js install or terminal needed.

You do not need a business.yaml before you install. If the folder is empty, the server starts in setup mode: ask Claude to "set up my business", and it lists the industries, writes the starter file into that folder, and interviews you to fill in your real hours, services and prices. Turn the extension off and on again when you're done and your business tools appear. The folder you picked stays the same throughout.

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 mainstreet-mcp init --industry <yours>, from that directory.

Claude Code (direct MCP add, no plugin)
claude mcp add mainstreet -- npx -y 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):

{
  "mcpServers": {
    "my-business": {
      "command": "npx",
      "args": ["-y", "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/[email protected] (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.

Workflow kits: caller-supplied facts to a review packet

Version 0.1.4 adds three stateless kits. Each exposes exactly two tools: analyze_workflow and prepare_workflow_draft. They evaluate supplied structured facts with explicit sample policies and prepare an unsent review draft when inputs are adequate. No provider account, live source verification, storage, messages, money movement or fulfillment changes are included. Your MCP host may send tool inputs to its model provider; use fictional inputs first and follow your organization's data rules.

npx -y [email protected] kit quote-followup
npx -y [email protected] kit invoice-discrepancies
npx -y [email protected] kit order-handoff

Use one kit per configured MCP server. Try the fictional demos and request a scoped implementation. These free kits do not include connected customer systems. Check native CRM, accounting or order software before commissioning a custom integration.

{ "mcpServers": { "quote-review": { "command": "npx", "args": ["-y", "[email protected]", "kit", "quote-followup"] } } }

Ask: “Review this quote using the supplied timestamps and follow-up policy. Prepare a draft only if the tool says it is ready.” Send all required fields from the published tool schema, using null for unknown facts. needs_review means verify sources; no_action means no draft is warranted under the supplied facts/policy. Example inputs and expected states are bundled in dist/workflows/core.js. These initial kits support USD, EUR, GBP, CAD and AUD at 100 cents per major unit; other currencies require separate reviewed rules. Amounts use integer cents, currencies must match, and dates use UTC ISO seconds or three millisecond digits. The seven-day freshness window and paid-before-production rule are sample policies to review for your business. asOf is supplied by the caller, not a live clock or verification timestamp.

These CLI kits use stdio with a compatible MCP host. The desktop bundle retains the original business setup flow; it does not automatically enable workflow kits. Changing the command selects a kit. See the demo's install instructions for exact host configuration.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.