Munim

io.github.vishalsg42由 GitHub 帳號 vishalsg42 發布v0.8.2更新於 Oct 24, 2026

One MCP server holding a live session with every client's account at once.

概覽

AI 產生的概覽

本機 MCP 伺服器,為每個客戶分別維持 Cloudflare、Vercel、Resend 工作階段,讓一個助理跨帳戶讀取並在指定客戶內操作。

可以做什麼
  • 列出並管理客戶,每個客戶有獨立的服務商註冊、權杖與工具命名空間
  • 列出某客戶的服務商工具,並透過服務商自帶的 MCP 伺服器呼叫
  • 當服務商 MCP 缺少所需能力時,以該客戶的憑證直接呼叫其 API
  • 對客戶的網域、郵件等設定執行確定性的檢查與修復
  • 可選擇讓模型分析結果,使用 check、work_on_client、ask_across_clients
適用情境
適合同時維護多家小型企業網站與郵件設定的營運者或代理公司,尤其是各服務商一次只允許一個登入、問題又橫跨多個客戶帳戶時。
執行需求
需要 Python 3.10+ 並在本機安裝(uv tool、pipx 或 pip),不需要 Node 或建置步驟。每個客戶的服務商帳戶透過瀏覽器登入連接。選用的 AI 推理需要 Amazon Bedrock、Google Gemini 或 Anthropic 的金鑰,存放在本機憑證檔案中。
安裝前請注意
在同一個行程中持有數個客戶帳戶的委派憑證,呼叫時必須指明正確的客戶。工具可寫入服務商並變更 DNS、郵件或部署設定,郵件設定出錯可能很久都不會被發現。選用的 AI 功能會呼叫模型;工具輸出仍會進入程式助理的上下文並傳給該助理所用的模型。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

Munim

[PyPI] [Python] [Tests] [Licence] [Glama]

One MCP server holding a live session with every client's account at once.

A coding agent can be logged in to one Cloudflare account. One Vercel. One Resend. Connect a second client and the first goes away. So the person looking after a dozen small businesses runs a dozen agent sessions, and none of them can answer a question about more than one client.

Munim holds them all. Each client gets its own registration with the provider, its own token and its own namespace in the tool list, so one agent can read across every client and write inside the one you named.

Kloudfirst       -> [email protected]'s Account   (3 tools)Ivy & Fern       -> [email protected]'s Account        (3 tools)
both sessions opened concurrently, one process, no logout

That is a real run against two real Cloudflare accounts, not a diagram. The second account is a client's and their address is replaced here: they did not consent to a public repository, and this file is also the PyPI page. Reproduce it with your own two: scripts/cross_account_probe.py.

Install

Requires Python 3.10+. Nothing else: no Node, no build step, no account to create first.

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

If a coding agent is doing the install for you, point it at llms-install.md, which says the parts that are easy to get wrong when nobody is watching the terminal, and where it has to stop and hand back.

Start

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

There is no wrong order. Connect first and the account you sign in to names the client, or write the client down first and connect whenever. Both arrive in the same place.

Then ask your coding agent something a single logged-in session cannot answer:

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

Doing the work, not just the diagnosis

Munim does not wrap each provider in verbs of its own. Every provider here runs its own MCP server with its own tools, so Munim forwards them and supplies the credential:

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

Your coding agent gets the same two as list_provider_tools and call_provider_tool. There is no model in this path, so it works with agents off, and every call is written to the run log with the tool and its arguments. A call names one client and resolves that client's credentials alone.

When a provider's own MCP server does not publish what you need, call_provider_api goes a layer down and makes one HTTP call to that provider's API with the same client's credential. Vercel publishes no environment-variable write and no way to attach a domain to a project, which is what this is for. It takes a path and never a URL, and refuses anything that would send the credential to another host.

Munim is local by default. The checks, the audit and the mail plan are deterministic: they never needed a model and never call one, and neither does the passthrough above. Three tools can also reason about what they find (check, work_on_client, ask_across_clients), and that is switched off until you ask for it, so having a key lying around is not the same as consenting to use it.

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

Hosts are Amazon Bedrock, which works out of the box, plus Google Gemini and Anthropic, which Strands ships as extras: pip install 'munim[gemini]'.

One thing this does not change: Munim runs as an MCP server, so whatever its tools return goes into your coding agent's context and therefore to whichever model that agent runs on. Turning agents off stops Munim calling a model of its own; it cannot change how MCP works. The privacy policy says so plainly.

munim doctor says what is set up, what is not, and the exact command to fix each gap. Start there whenever something is unclear.

Where to find it

The video is a real run against a real client's domain: fifteen deterministic checks find two faults, a Strands agent explains them in the owner's language, and the repair stops at an edge condition because that client is not connected to the provider a repair would need. Nothing in it is staged, which is also why there is no repair on camera.

To run it yourself without installing anything: scripts/check_client.py runs the check catalogue against one client and writes the report, and scripts/fix_client.py runs the repair graph. Both use the same code paths as the check and fix MCP tools, with no agent in front of them.

Documentation

Commandsthe whole CLI
Toolswhat your coding agent gets, and what it deliberately cannot do
Providersa page each: setup, what connecting grants, what is verified
Architecturehow it is built, and the four decisions that shape it
Decisionsevery design decision and its reasoning, including the wrong ones
Roadmapwhat is not done, and why
Developmentrunning the tests, and reproducing the claim above

Why this exists

One person maintains the web and email setup of a dozen small businesses. The clients own the accounts; the operator holds delegated access and does the work. Every provider allows one login at a time, so the workaround is a separate agent session per client.

The costly part is not the switching. It is that a mistake in mail setup breaks nothing visible. Get an A record wrong and the site is down in minutes. Get the SPF record wrong and the client's invoices quietly stop arriving, and nobody notices for weeks.

A munim is the steward a business owner trusts to keep their books and handle their affairs without being asked each time.

Disclosure

Built with AI assistance. No pre-existing code was incorporated; the repository was created during the submission period.

Licence

MIT. See LICENSE.

Contributing

CONTRIBUTING.md says how to run the two suites and what a good change looks like here, which is mostly about writing down why. docs/DECISIONS.md is the numbered log those reasons live in, and several of its entries reverse an earlier one.

Adding a provider needs no Python. Eleven ship and only the first needed any: a provider here is a row in a table, and munim servers add <name> <url> works out how that server authenticates by asking it. munim servers export <name> then prints the row for a pull request. That lane asks for the row, a page copied from docs/providers/TEMPLATE.md, and the measurement you took. It does not ask for a failing test, because tests/test_provider_docs.py already fails when a row arrives without a page.

Security issues go in a private advisory rather than an issue. SECURITY.md says what is in scope, and lists what is already known and deliberate so a report can skip it.

來源:README.md,提交 48f988a

工具

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

版本歷史

1
  1. v0.8.2最新Sep 23, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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