mcpField
M
munin

munin

远程服务
getmunin.com商业与营销211 天前更新

关于 munin

Munin 是以 MCP 为核心的客户运营平台,将知识库、对话、CRM、CMS、外联和分析整合在一个基于 Postgres 的系统中。它内置 Agent 运行器,并为提案和外发消息提供人工审核流程。

主要功能

  1. 01六个客户运营模块
  2. 02223 个 MCP 工具与 58 个技能
  3. 03内置对话与内容整理 Agent
  4. 04提案人工审核队列
  5. 05支持自托管或云端运行

适用场景

  1. 01依据知识库文章回复客户对话
  2. 02统一管理 CRM、CMS 内容与分析
  3. 03发送前审核外联草稿
  4. 04通过 Agent 技能执行跨模块工作流

MCP 相关

Munin 将模块和平台功能作为 MCP 工具提供给兼容客户端,并采用统一权限和审计日志。也可连接外部 MCP 服务作为数据连接器,并为每个连接设置工具允许列表。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.getmunin.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Munin

通过一个 MCP 端点,管理你的整个客户运营。

MIT 许可证 最近一次提交 已列入 MCP 注册表

官方网站 · 观看实际演示 · 文档 · MCP 注册表

CRM、对话、外联、CMS、知识库和分析功能共用一个 Postgres 架构,并以 MCP 工具的形式开放,供 Agent 操作,而非通过屏幕点击。它像无头 CMS 一样无头:控制台负责设置、身份验证以及需要人参与的工作——例如由人工接手对话的收件箱,以及由人工审核 Agent 提案的审核队列——但没有可供你逐步点击操作数据的管理界面。所有操作都通过 MCP 工具执行,可由任何兼容 MCP 的客户端(Claude、Cursor、ChatGPT、自定义运行器)调用;无论由人工还是 Agent 操作,使用的都是同一套工具、相同权限和相同审计日志。Munin 甚至自带一个按组织运行的进程内 Agent 运行器,可在你配置的大模型提供商支持下处理实时对话和审核队列,因此平台开箱即用,无需外部 MCP 客户端。

Munin 控制台——供人工接手对话的收件箱
控制台——设置、身份验证、收件箱和审核队列。它使用的正是 Agent 调用的 MCP 工具。

Munin 审核队列——Agent 起草的外联邮件等待人工批准
审核队列——外发内容不会自动发送。Agent 起草内容、附上草稿的依据,然后等待;按下批准键的是人工。

Munin 聊天小组件从知识库中查找内容并回答客户
可嵌入的聊天小组件——根据知识库内容回答实时客户的问题,可随时转交人工处理,之后也能由 Agent 接手。

模块一览

模块工具功能
知识库kb_*文档、混合搜索、受众范围限定
对话conv_*渠道、消息、转交
CRMcrm_*联系人、公司、交易
CMScms_*集合、条目、资源
外联outreach_*活动、草稿、仅提案
分析analytics_*页面浏览和搜索事件

这六个模块并非彼此独立的产品——它们共用一个 Postgres 架构、一套权限模型和一份审计日志。加上集成和平台基础设施,总计提供 223 个 MCP 工具和 58 个技能。了解它们如何协同工作:

观看:Munin 是什么以及它的工作方式

核心模块

知识库
  • Markdown 文章按空间组织,每个空间仅面向获准查看的受众。
  • 混合搜索,结合关键词匹配与基于语义的搜索结果。
  • 网站导入 — 抓取公开网站,并在后台将每个页面转为一篇文章;当源页面消失时,自动移除对应文章。
  • 完整的版本历史记录与还原功能,另有用于审核编辑提议的队列。
  • Agent 可通过针对性的文本替换直接修改长篇文章,而不必重写全文来更改一句话。
对话
  • 一个收件箱整合电子邮件、聊天小部件、语音(Threll.ai / Vapi)和短信(Twilio / MessageBird)。
  • 支持入站和出站 — Agent 可回复对话,也可拨打外呼电话。
  • 所有渠道均支持收发图片:客户可以发送截图,运营人员和 Agent 可以用图片回复,Agent 也能查看已发送的图片。
  • 让电子邮件像电子邮件一样运作 — 只需转发到生成的地址即可开始;从 Gmail、Outlook 和 Apple Mail 的回复中还原引用历史记录;自动回复和退信会归档,而非进入队列;记住垃圾邮件发送者;显示并重试未送达的邮件。
  • 按主题设置回复自动化:Agent 起初会针对某个主题起草回复以供审批;当你对它在该主题上的表现有信心后,可将其提升为自主发送。
  • 可分配、按主题整理、可搜索所有消息,并可按状态、来源、渠道、主题和时间筛选。
  • 内置移交给人工处理的功能;对话发生变化时,可向你自己的系统发送通知。
CRM
  • 联系人、公司、交易、活动、销售流程和细分群组。
  • AI 撰写的摘要和建议的后续行动,与人们手动编辑的内容分开保存。
  • 同意跟踪 — 记录每位联系人的合法依据和来源;将联系人加入任何外联活动前必须具备这些信息。地址的可送达性单独跟踪,因此退信地址不会被误认为是已撤回同意。
  • 自动检测重复记录并提出合并建议以供审核,另支持批量导入联系人。
CMS
  • 内容集合包含结构化字段;条目可用多种语言发布,每个语言区域都有自己的 slug。
  • 文章正文支持富内容块,包括提示框、引用、媒体等;内容块可按键寻址,因此 Agent 可以添加、替换、移除或重新排列单个内容块。
  • 支持定时发布;媒体库会保留原始图像,并提供调整尺寸后的衍生图像。
  • 完整的版本历史记录与还原功能、搜索,以及条目之间的交叉引用。
  • 公共内容 API 可为你的网站或应用提供内容;自定义前端可使用草稿预览链接,每个条目还内置互动跟踪。
外联
  • 仅提议、不自动发送的出站功能,涵盖电子邮件、短信和语音电话 — 支持营销活动、细分群组,以及首次联系和回复的草稿。
  • 支持多步骤序列和发送节奏规则,一旦对方回复便立即停止。
  • 每项提议都会报告审批后实际发送所用的确切地址或号码;获批的发送内容可以安排发送时间,而非立即发送。
  • 从回复和已完成的通话中提取结果,并写回记录。
  • 接收对象仅从已记录同意的联系人中选取(参见 CRM)。
  • 每条消息都需等待人工审批;绝不会自动发送任何内容。
分析
  • 记录你希望衡量的任何内容的页面浏览量和站内搜索;每次浏览一行,包含阅读深度,并按跟踪器分别报告。
  • 自动跟踪 CMS 页面;其他页面只需添加一小段跟踪代码。
  • 转化漏斗和逐访客历程 — 用户身份确认后,其访问记录会关联到 CRM 联系人,包括此前的匿名访问。身份识别时使用已验证的电子邮件,即可将网站和收件箱中的记录解析为同一个人。
  • 按流量来源、引荐来源和国家/地区细分,并提供“下一步写什么”的信号(热门主题、互动情况,以及没有搜索结果的查询)。

集成

三种集成,各有归属。具体选择哪种,取决于另一个系统是什么。

消息渠道——客户联系你的地方

通过 IMAP/SMTP 收发电子邮件,或生成一个转发地址,供你转发到现有邮箱。可嵌入的聊天组件支持主题自定义和深色模式,支持 23 种语言。通过 Threll.ai 或 Vapi 提供语音服务,通过 Twilio 或 MessageBird 提供 SMS 服务。每种渠道都是同一组 conv_* 工具背后的渠道适配器。

操作桥接——团队日常工作的地方

Slack 会将每段对话同步到一个线程中:团队成员在该线程中回复,客户就会收到回复;外联提案会附带批准和驳回按钮;CMS 发布后会发送公告,并附上正式文章的链接。对话、审批和审计记录都与仪表板中显示的完全相同。

数据连接器——客户的权威数据源

通过供应商的 API 实时读取数据,绝不将数据复制到 Munin,因此无需同步,也不会过时。

领域工具供应商
电商commerce_*Shopify、Magento 2 / Adobe Commerce
预订bookings_*Gastroplanner — 查询可用情况、创建、修改、取消
搜索控制台seo_*Bing Webmaster Tools、Google Search Console
任意专有系统由你提供你运行的任意 MCP 服务

电商和预订有一部分支持自助服务:聊天组件中的终端用户 Agent 可查询自己的订单或预订,并在服务端绑定到调用者的身份,而不是绑定到模型收到的任意电子邮件地址。搜索控制台仅供操作人员使用,且仅限管理员访问。连接信息经过加密存储;根据供应商的不同,通过 API 密钥或 OAuth 重定向授权;可在仪表板的“集成”页面进行管理。

如果你有某个系统没有供应商适配器支持,可以将 Munin 指向你运行的 MCP 服务,其工具便会成为连接器工具,并可为每个连接设置允许列表,控制 Agent 可以调用哪些工具。

自动化

对话循环

进程内的 Agent 运行器按组织运行,为各渠道(聊天组件、电子邮件、SMS、语音)上的实时对话提供应答,并使用你配置的大模型提供商——起草和发送回复,并在需要时转交给人工处理。

内容整理循环

进程内的 Agent 运行器还会处理持久化的后台作业队列:定期整理知识库、维护 CRM、提取联系人信息以及起草外联内容,并支持重试和死信处理。

审核

Agent 提出的所有内容和人员作出的所有决定都会进入同一个队列——知识库修订、外联提案、合并提案和起草的回复。每项决定都会保留下来,因此“已决定”动态流会持久记录谁批准了什么,而不是随着处理而清空的列表。

操作手册与技能

面向多步骤、跨模块工作流的打包 Markdown 流程(skill://module/<verb-object>),通过 MCP 提供——Munin 自己的运行器和任何在该平台上运行的外部 AI Agent 都可以使用。

平台

数据可移植性

每个模块都提供对称的 *_export / *_import MCP 工具(以及 /v1/<module>/export|import REST 端点),让 Agent 可以在任意方向上,将组织的数据在可自托管的服务和云端之间迁移。参见 skill://playbooks/data-migration。

身份

为对话另一端的人员提供统一的身份主线——聊天组件访客、来电者的电话号码、电子邮件地址以及你自有系统的用户 ID 都会解析为同一个人,并可通过 MCP 使用 identity_* 进行寻址。

审计与 Webhook

每项操作都会写入审计日志;Webhook 会将这些事件推送到你自己的端点,并提供带签名、可重放的投递。

告警与反馈

Agent 可以列出、确认和解决系统告警,以查看运行问题。产品内的反馈渠道支持提交功能请求,并为 Munin 的公开路线图投票。

身份验证与访问权限

登录和访问控制由 BetterAuth 处理,支持 OAuth 2.1 动态客户端注册和团队邀请。所有者和管理员可以访问整个控制台;成员只能访问收件箱。

实际演示

Lovable 构建前端,Munin 启动运营系统。一个提示词,一个 MCP 端点——剩下的交给 Agent。

观看 Lovable 如何根据单条提示词构建真实网站,同时 Munin 搭建背后的一切——博客读取内容的 CMS、预置的知识库、分析工具,以及一个已了解业务情况的聊天组件。无需点击操作,也无需手动配置各个界面;Agent 会通过单个 MCP 端点完成工作。随后,一段真实的客户对话展开:先从知识库中获取答案,在关键时刻转交给人工,再由 Agent 接手并完成对话。

观看:Lovable 构建前端,Munin 搭建背后的一切

两种运行方式

自托管(此仓库):单租户,仅限受邀用户。

git clone https://github.com/getmunin/munin.git
cd munin
cp .env.example .env
docker compose up

首次启动时,.env.example 中仍为占位值的密钥会自动生成,并持久化到 munin-data 卷中——适用于本地自托管。对于共享或生产部署,请改为在 .env 中设置强度足够的 MUNIN_AUTH_SECRET + MUNIN_KEY_PEPPER + MUNIN_ENCRYPTION_KEY 值(openssl rand -base64 48)。在 Docker 之外,以 NODE_ENV=production 启动的后端也会在任意一个值缺失、长度过短或仍为占位值时拒绝启动。请设置部署中已有的 pepper 和加密密钥,而不要换用新值:新的 pepper 会使所有 API 密钥和签名链接失效;新的加密密钥则会导致已存储的渠道和连接器密钥无法读取。

Postgres 仅发布到 127.0.0.1,因此其他机器无法访问。其默认密码(超级用户为 munin,应用角色为 munin_app)仍可被主机上的任何用户获知:在共享机器上,请在 .env 中设置 POSTGRES_PASSWORD 和 MUNIN_APP_PASSWORD。POSTGRES_PASSWORD 仅在首次创建 munin-pg 卷时生效;MUNIN_APP_PASSWORD 则会在每次启动时应用。

第一个注册的用户会成为组织管理员;后续用户需要邀请令牌,或使用域名包含在 MUNIN_ALLOWED_EMAIL_DOMAINS 中的邮箱。允许列表中的邮箱地址经验证邮件确认后即可加入;邀请只能由使用受邀邮箱地址登录的账号接受。

托管版(https://www.getmunin.com):多租户,每个组织注册一次。

本地试用

运行 docker compose up 后,后端会监听 :3001,仪表板会监听 :3000。

  1. 打开 http://localhost:3000,注册第一个用户——该用户会成为唯一的组织管理员。
  2. 在仪表板中前往 Settings → API keys,创建管理员密钥(mn_admin_…)。该密钥仅显示一次;请像密码一样妥善保管。
  3. 调用 API 和工具进行试用:
# REST control plane — direct, no OAuth
curl -s http://localhost:3001/v1/kb/spaces \
  -H "Authorization: Bearer mn_admin_..." | jq

# MCP tool browser (recommended for poking at tools/skills)
npx @modelcontextprotocol/inspector
# In its UI: URL = http://localhost:3001/mcp, Auth = Bearer mn_admin_...

# Raw curl over Streamable HTTP — useful for sanity-checking the transport
curl -N -X POST http://localhost:3001/mcp \
  -H "Authorization: Bearer mn_admin_..." \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

REST 控制平面的 OpenAPI 规范位于 packages/backend-core/openapi.json。如需配置 Claude 或 Cursor 等 MCP 客户端,请参阅下方的连接你的 AI Agent。

连接你的 AI Agent

注册(托管版)或运行 docker compose up(自托管版)后,将 MCP 客户端指向相应 URL——自托管版使用 http://localhost:3001/mcp,托管版使用 https://mcp.getmunin.com。

Claude Code(CLI):

claude mcp add munin http://localhost:3001/mcp

Claude Desktop — 添加到你的 MCP 配置中:

{
  "mcpServers": {
    "munin": {
      "url": "http://localhost:3001/mcp"
    }
  }
}

首次调用会在浏览器中触发 OAuth 授权界面,之后你的 Agent 即可使用完整的工具集——知识库、对话、CRM、CMS、拓展、分析,以及你接入的任何连接器。

你属于多个组织?每个组织还有自己的端点 /mcp/o/<orgId>。连接到该 URL 后,客户端就会固定使用该组织,不再跟随你上次设为活动状态的组织。

支持 MCP Apps 的宿主不仅能返回文本:提案、筛选候选项和连接器结果会以交互式面板的形式呈现,这些面板由 ui:// 资源提供,人类可以点击批准,而不必要求模型调用工具。

两种信任上下文,一个 MCP 端点

同一个 /mcp 端点会根据受众,为两种不同的调用方提供服务:

  • 管理员 Agent(Claude Desktop、Cursor、内部自动化)——由你通过 OAuth 授权。可使用完整工具集,并按 kb:*、conv:*、crm:*、cms:*、outreach:*、analytics:*、commerce:read、bookings:*、seo:*、connectors:*、identity:read、slack:*、webhooks:* 进行范围控制。
  • 终端用户 Agent(你的语音 AI、网页聊天机器人、移动应用助手)——由你的后端在服务器端签发短期委托令牌,并限定为某个终端用户。只能使用自助服务工具:读取自己的联系人信息、在自己的对话中发送消息、查询自己的订单、创建自己的预订。

令牌签发 API 参见 packages/backend-core/src/control/delegated-token.controller.ts。@getmunin/sdk Node 客户端封装了该 API。

这些工具返回的大部分内容都是你所在组织中无人撰写的文本——传入消息、CRM 字段、导入的文章、客户商店中的实时记录。Munin 会将这些内容标记为仅供自身运行器使用的数据,并在服务器指令中告知外部宿主同样的要求;真正的隔离仍由 RLS、受众限制和按技能设置的工具允许列表保障。

技术栈

层技术
语言与运行时TypeScript、Node 24 LTS
单体仓库Turborepo、pnpm
后端NestJS
前端Next.js
数据Postgres + pgvector、Drizzle
协议与身份验证MCP Streamable HTTP、BetterAuth + OAuth 2.1

文档

开发者文档位于 getmunin.com/docs,包含指南、REST API 参考、完整 MCP 工具列表和技能库。

参与贡献

欢迎贡献代码。运行 pnpm install,然后运行 docker compose up(或 pnpm dev),即可在 :3001(后端)和 :3000(仪表板)启动完整技术栈。从 main 创建分支,命名格式为 <type>/<kebab-summary>(例如 feat/website-import-reconcile),让 PR 保持聚焦,并确保 CI(lint、typecheck、test、build)通过。

上方的截图是自动生成的,并非手动截取——UI 更改后,请参阅 apps/web/capture/README.md 重新生成截图。

设置、提交规范和 PR 指南请参阅 CONTRIBUTING.md。

安全

发现漏洞?请不要提交公开问题,请发送邮件至 [email protected]。范围和响应时间请参阅 SECURITY.md。

许可证

MIT。请参阅 LICENSE。

捆绑的第三方依赖保留其各自的许可证——请参阅 THIRD_PARTY_LICENSES.md(由 pnpm licenses:generate 生成,并在 CI 中验证)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。