mcpField
M
Munim

Munim

本地服务
github.com云与基础设施65 周前更新

关于 Munim

Munim 是面向多客户业务运营者的本地 MCP 服务,可同时保持多个云服务商账户的会话。它隔离各客户凭据,并支持跨账户查询及按指定客户调用工具。

主要功能

  1. 01并行保持多个客户账户会话
  2. 02按命名空间提供服务商工具
  3. 03按客户凭据调用服务商 API
  4. 04确定性检查与审计日志
  5. 05可选的 AI 辅助分析

适用场景

  1. 01检查多个客户账户的域名
  2. 02为指定客户运行服务商工具
  3. 03调用服务商 MCP 未提供的 API 操作

MCP 相关

Munim 向客户端提供工具,用于列出和调用各已连接服务商的 MCP 工具,并为指定客户提供凭据。它还提供跨客户查询和直接调用服务商 API 的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vishalsg42-munim": {
"command": "uvx",
"args": [
"munim"
]
}
}
}
启动命令uvx munim

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimunim0.8.2

工具

16

收录的工具列表 · 更新于 2 周前

参数类型必填说明
checkboolean否询问每个提供方会话是否仍可打开。False 表示仅报告已存储的内容,响应即时返回。

详细介绍

Munim

PyPI Python Tests Licence Glama

一个 MCP 服务,同时与每个客户端的账户保持实时会话。

编码 Agent 可以登录一个 Cloudflare 账户、一个 Vercel 账户、一个 Resend 账户。连接第二个客户端,第一个客户端就会断开。因此,负责 十几家小型企业的人需要运行十几个 Agent 会话,而这些会话都无法 回答涉及多个客户端的问题。

Munim 将所有账户集中在一起。每个客户端在服务提供商处都有自己的 注册信息、自己的令牌,以及在工具列表中的独立命名空间,因此一个 Agent 可以读取所有客户端的信息,并在你指定的客户端中写入数据。

Kloudfirst       -> [email protected]'s Account   (3 tools)
Ivy & Fern       -> [email protected]'s Account        (3 tools)

both sessions opened concurrently, one process, no logout

这是对两个真实 Cloudflare 账户进行的真实运行,并非示意图。第二个账户属于一位客户,其地址在此处已替换:他们没有同意将信息公开在代码库中,而且此文件也会显示在 PyPI 页面上。 你可以用自己的两个账户复现: scripts/cross_account_probe.py。

安装

需要 Python 3.10+。除此之外无需任何东西:不需要 Node、不需要构建步骤,也不需要预先创建账户。

uv tool install munim          # or: pipx install munim, or: pip install munim
claude mcp add munim -- munim-mcp

如果由编码 Agent 帮你安装,请让它参考 llms-install.md。其中说明了无人看管终端时容易出错的环节,以及它必须停下来交还控制权的地方。

启动

munim clients                          # who you look after, and what is connected
munim clients add "Ivy & Fern"         # write one down, connect nothing yet
munim connect "Ivy & Fern" cloudflare  # a browser opens; that is the whole setup

顺序无所谓。先连接,登录的账户会成为客户端;也可以先记下客户端,再随时连接。两种方式最终都会到达同一个位置。

然后向你的编码 Agent 提出一个单个已登录会话无法回答的问题:

which of my clients has a domain expiring this quarter?
check ivyandfern.co.uk for Ivy & Fern Studio

做实际工作,而不只是诊断

Munim 不会用自己定义的动词封装每个提供方。这里的每个提供方都运行自己的 MCP 服务,并提供自己的工具,因此 Munim 会转发这些工具并提供凭据:

munim tools "Ivy & Fern" cloudflare          # what that account can be asked to do
munim call  "Ivy & Fern" cloudflare execute --args '{"code": "..."}'

你的编码 Agent 会通过 list_provider_tools 和 call_provider_tool 获得同样的两个工具。这条路径中没有模型,因此即使关闭 Agent 也能运行,而且每次调用都会连同工具及其参数一起写入运行日志。一次调用只会指定一个客户端,并且只解析该客户端的凭据。

当提供方自己的 MCP 服务没有发布你需要的功能时,call_provider_api 会深入一层,使用同一客户端的凭据向该提供方的 API 发起一次 HTTP 调用。Vercel 没有提供环境变量写入功能,也没有提供将域名关联到项目的方式,而这正是此工具的用途。它接受路径,不接受 URL,并会拒绝任何可能将凭据发送到其他主机的请求。

Munim 默认在本地运行。 检查、审计和邮件计划都是确定性的:它们从未需要模型,也不会调用模型,上述直通功能也一样。三个工具还可以对发现的内容进行推理(check、work_on_client、ask_across_clients),但除非你主动启用,否则这些功能会保持关闭状态。因此,手头有密钥并不等于同意使用它。

munim config ai key gemini   # prompts, stored in ~/.munim/credentials.json
munim config ai on           # takes effect on the next call, no reconnect
munim config ai              # what is on, on what, and where each came from

支持的主机包括开箱即用的 Amazon Bedrock,以及作为 Strands 附加组件提供的 Google Gemini 和 Anthropic:pip install 'munim[gemini]'。

有一点不会因此改变:Munim 作为 MCP 服务运行,因此其工具返回的任何内容都会进入你的编码 Agent 上下文,进而传给该 Agent 使用的模型。关闭 Agent 可以阻止 Munim 调用自己的模型,但无法改变 MCP 的工作方式。隐私政策对此有明确说明。

munim doctor 会说明哪些内容已设置、哪些尚未设置,以及修复每个问题的确切命令。遇到不清楚的情况时,就从这里开始。

在哪里可以找到

演示视频https://youtu.be/-9xnJVLzO18
代码仓库https://github.com/vishalsg42/munim
软件包https://pypi.org/project/munim/
项目页面https://glama.ai/mcp/servers/vishalsg42/munim
收录于awesome-mcp-servers

视频展示了针对真实客户端域名进行的一次实际运行:十五项确定性检查发现了两个问题,Strands Agent 用网站所有者的语言解释了这些问题;由于该客户端未连接到修复所需的提供方,修复流程在边界条件处停止。视频没有任何摆拍内容,这也是镜头中没有展示修复的原因。

如果不想安装任何内容,也可以自行运行:scripts/check_client.py 会对一个客户端运行检查目录并写入报告,scripts/fix_client.py 会运行修复图。两者使用的代码路径与 check 和 fix MCP 工具相同,且不会经过 Agent。

文档

命令完整的 CLI
工具编码 Agent 可用的内容,以及它有意无法执行的操作
提供方每个提供方各有一页:设置方法、连接后授予的权限、验证内容
架构构建方式,以及塑造它的四项决策
决策每项设计决策及其理由,包括错误的决策
路线图尚未完成的内容及其原因
开发运行测试,以及复现上文所述的验证结果

存在的原因

一个人负责维护十几家小型企业的网站和电子邮件配置。客户拥有这些账户;运营者获得委派访问权限并负责处理事务。每家服务提供商都只允许同时登录一个账户,因此只能为每位客户单独开一个 Agent 会话。

代价高的不是切换操作,而是邮件配置出错时,不会有任何明显的问题。A 记录填错,网站几分钟内就会宕机。SPF 记录填错,客户的发票邮件就会悄悄停止送达,而没人会注意到,直到几周后才发现。

munim 是企业主信任的管家,负责打理账目、处理事务,而无需每次都征求同意。

披露

借助 AI 完成。未使用任何现成代码;此代码库是在提交期间创建的。

许可证

MIT。参见 LICENSE。

贡献

CONTRIBUTING.md 说明了如何运行两套测试,以及在这里怎样才算优质的变更,而重点通常是写清楚原因。docs/DECISIONS.md 是记录这些原因的编号日志,其中有几条记录推翻了早先的决定。

**添加服务提供商无需使用 Python。**目前已内置 11 家,只有第一家需要编写代码:这里的服务提供商就是表格中的一行,而 munim servers add <name> <url> 会通过询问服务器来判断其身份验证方式。然后,munim servers export <name> 会打印出该行,供提交拉取请求使用。这种方式只需要提供该行、一份从 docs/providers/TEMPLATE.md 复制的页面,以及你进行的测量结果。无需提交失败测试,因为如果新增行却没有对应页面,tests/test_provider_docs.py 已经会失败。

安全问题请通过私密公告提交,而不要创建问题单。SECURITY.md 说明了受理范围,并列出已知且有意保留的问题,方便报告者略过这些内容。

评论

支持 Markdown

第一次接触 MCP?

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

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