Mainstreet Mcp

io.github.gbrussich52由 GitHub 帳號 gbrussich52 發布v0.1.5更新於 Oct 29, 2026

Free small-business facts and stateless workflow review kits: quotes, invoices and order handoffs.

已驗證STDIO僅桌面效率與工作流商業與電商

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理讀取小型企業設定好的營業時間、服務項目、員工、常見問題與預約方式,並提供無狀態的報價、發票與訂單流程審查套件。

可以做什麼
  • 讀取企業簡介、聯絡方式、政策與員工資訊
  • 依企業所在時區判斷目前是否營業,支援跨夜時段與假日例外
  • 在設定內容中搜尋服務項目並回答常見問題,找不到時回傳未找到而非猜測
  • 提供預約方式,以及依產業啟用的菜單、價格估算、服務範圍、課程表、房源或保險受理等工具
  • 接收客戶留言,具備內容清理、頻率限制與產業護欄
  • 執行無狀態流程套件,依呼叫端提供的報價、發票或訂單事實進行分析並產生未送出的審查草稿
適用情境
適合希望助理依一份持續維護的 business.yaml 回答客戶問題的小型企業主,也適合依範例政策審查報價追蹤、發票差異與訂單交接。它不是託管連接器,也不連接 CRM、會計或訂單系統。
執行需求
以 stdio 在本機執行;npm 套件需要 Node.js 20 以上,桌面安裝包可一鍵安裝。需要一份 business.yaml 設定檔,可用 init 指令產生或在設定流程中寫入。未宣告任何帳號、API 金鑰或環境變數。選用的 HTTP 模式僅綁定 127.0.0.1。
安裝前請注意
回答的準確性完全取決於 business.yaml,營業時間或價格寫錯會直接傳遞出去。submit_inquiry 是非冪等的寫入操作,可投遞到本機檔案或 webhook。工具輸入可能被 MCP 主機送往其模型供應商,建議先使用虛構資料。價格估算不是正式報價,流程套件不含即時查核、儲存或資金操作。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mainstreet Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Main Street MCP

[M8ven Score]

A free, industry-specific MCP server that gives a small business's AI assistants (such as Claude Desktop and Claude Code) configured facts about hours, menu/services, FAQs, staff and booking. One business.yaml file per business; no code changes required to run it. Answers depend on the accuracy of that file and the assistant using it.

The published package supports compatible local MCP clients over stdio. It is not a hosted ChatGPT app or connector. The optional HTTP mode listens on loopback and validates localhost Host/Origin headers; remote hosting, authentication and client compatibility must be configured and verified separately. A reverse proxy alone does not establish those requirements.

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:

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

    To test the business server over local HTTP instead, 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. No public endpoint, remote authentication or hosted deployment is included. A remote deployment needs a separate review of those controls and the intended client's transport requirements.

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, price_estimate → get_price_estimate
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-spaprice_estimate → get_price_estimate, class_schedule → get_class_schedule
fitness-studioclass_schedule → get_class_schedule
real-estate-agentlistings → search_listings, service_area → check_service_area
auto-repairservice_area, price_estimate, insurance_accepted
insurance-agencycoverage_lines → list_coverage_lines, service_area → check_service_area
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 marketplace add gbrussich52/mainstreet-mcpclaude plugin install mainstreet@mainstreet

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

json
{  "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 installnpm 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.

The submit_inquiry tool advertises openWorldHint: true when configured for webhook delivery and false for local file delivery. It remains a non-idempotent write tool in both modes.

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). Version 0.1.4 is published on npm, in the GitHub release and in the official MCP registry as io.github.gbrussich52/mainstreet-mcp. These are package distribution channels; they do not provide a hosted endpoint or prove a particular customer's integration. The desktop bundle opens business setup; workflow kits use the CLI configuration below.

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.

sh
npx -y [email protected] kit quote-followupnpx -y [email protected] kit invoice-discrepanciesnpx -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.

json
{ "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.

來源:README.md,提交 3a1e763

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

5
  1. v0.1.5最新Oct 29, 2026
  2. v0.1.4Oct 12, 2026
  3. v0.1.2Sep 23, 2026
  4. v0.1.1Sep 18, 2026
  5. v0.1.0Sep 17, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分