
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.
概览
本地 MCP 服务器,让助手读取小型企业配置好的营业时间、服务项目、员工、常见问题与预约方式,并提供无状态的报价、发票与订单流程审查套件。
- 可以做什么
- 读取企业简介、联系方式、政策与员工信息
- 按企业所在时区判断当前是否营业,支持跨夜时段与节假日例外
- 在配置内容中搜索服务项目并回答常见问题,无匹配时返回未找到而非猜测
- 提供预约方式,以及按行业启用的菜单、价格估算、服务范围、课程表、房源或保险受理等工具
- 接收客户留言,带内容清洗、频率限制与行业护栏
- 运行无状态流程套件,依据调用方提供的报价、发票或订单事实进行分析并生成未发送的审查草稿
- 适用场景
- 适合希望助手依据一份维护中的 business.yaml 回答客户问题的小型企业主,也适合按示例政策审查报价跟进、发票差异与订单交接。它不是托管连接器,也不连接 CRM、会计或订单系统。
- 运行要求
- 以 stdio 在本地运行;npm 包需要 Node.js 20 以上,桌面安装包可一键安装。需要一份 business.yaml 配置文件,可用 init 命令生成或在设置流程中写入。未声明任何账号、API 密钥或环境变量。可选 HTTP 模式仅绑定 127.0.0.1。
安装
在 SourceWeft 中
- 打开 控制台中的 Mainstreet Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Main Street MCP
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)
-
Install Node.js 20+ (or use the version already on your machine — check with
node -v). -
Generate a starter config for your industry:
Replace
restaurantwith 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.yamlin 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>.) -
Check your edits are valid:
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.
-
Point your AI assistant at it. For a local MCP client (e.g. Claude Desktop) that spawns stdio servers, add an entry like:
To test the business server over local HTTP instead, run:
The HTTP server only binds to
127.0.0.1and validates theHost/Originheaders 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, policiescheck_open_status— open/closed right now (or at a given time), in the business's own timezone, including overnight hours and holiday/exception overridessearch_offerings— free-text search over whatever the business sells/offersanswer_question— looks up configured FAQs; returnsfound: falserather than a guess when nothing matches confidentlylist_staff— configured staff, roles, bios, credentialsget_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:
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:
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:
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)
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):
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
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— thebusiness.yamlZod 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 bysearch_offeringsandanswer_question.src/inquiries.ts—InquirySink: sanitization, rate limiting, guardrail hook, and file/webhook delivery forsubmit_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 anyguardHooks.src/tools/universal.ts— the 7 universal tools every business gets.src/server.ts—createServer(config): builds theMcpServerfor a loaded config.src/cli.ts—mainstreet-mcpentry 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 testruns both unit tests and the E2E suite (src/test/e2e.test.ts), which spawnsdist/cli.jsas a child process viaStdioClientTransportfor every file inexamples/, callstools/list, then calls every registered tool and asserts it returnsstructuredContentwithoutisError.serve --httpbinds a local port, which some sandboxed shells block by default; test it outside such a sandbox ifEPERM/listenerrors 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.
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.
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版本历史
5- v0.1.5最新Oct 29, 2026
- v0.1.4Oct 12, 2026
- v0.1.2Sep 23, 2026
- v0.1.1Sep 18, 2026
- v0.1.0Sep 17, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分