CTRQuko/mimir-mcp

GitHub: CTRQuko/mimir-mcp

Mimir 是一个声明式 MCP 路由器,通过声明式插件契约、清单与插件分离、LLM 引导的配置流程和分层安全模型,将多个 MCP 服务器安全聚合后统一暴露给 LLM 客户端。

Stars: 0 | Forks: 0

# Mimir [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/2bbd639511224715.svg)](https://github.com/CTRQuko/mimir-mcp/actions/workflows/ci.yml) [![PyPI version](https://img.shields.io/pypi/v/mimir-router-mcp.svg)](https://pypi.org/project/mimir-router-mcp/) [![Python versions](https://img.shields.io/pypi/pyversions/mimir-router-mcp.svg)](https://pypi.org/project/mimir-router-mcp/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 🇬🇧 您正在阅读英文版本 · 🇪🇸 [Léeme en español](README.es.md) **Mimir 是一个声明式 MCP 路由器**,基于 FastMCP 3.x 构建。只需在任何 MCP 服务器旁放置一个 `plugin.toml` 文件,Mimir 就会发现它,将其 挂载到自己的命名空间下,限定其凭据范围,过滤其工具,并 将集合暴露给你的客户端(Claude Desktop、循环中的 Agent, 以及任何通过 stdio 通信 MCP 的程序)。 Mimir 与其他 MCP 聚合器的不同之处: - **声明式插件契约** — 每个插件都附带自己的 `plugin.toml`,用于描述身份、运行时、安全性和需求。 无需保持中央配置同步。 - **清单与插件分离** — 运维人员在 `inventory/*.yaml` 中描述其 基础设施(主机、服务)。插件向 路由器询问“给我类型为 X 的主机”——它们从不硬编码 IP 或 主机名。 - **LLM 引导的引导流程** — 当插件需要运维人员 尚未提供的主机或凭据时,路由器会暴露一个 `setup_()` 元工具。LLM 会逐个对话引导运维人员补充 缺失的信息。 - **分层安全** — manifest 隔离、审计日志、范围化的 凭据保管库、配置文件门控、工具白名单/黑名单,以及 子进程中的跨插件环境作用域。参见 [`docs/security-model.md`](docs/security-model.md)。 ## 快速安装 ``` git clone https://github.com/CTRQuko/mimir-mcp cd mimir-mcp uv sync uv run python router.py --dry-run ``` 试运行会打印出 Mimir 的视图:清单、已发现的插件、 技能/Agent。在没有配置的情况下,它只提供元工具——这是 有意为之。将你的第一个插件放在 `plugins/` 下并重新运行即可。 ## Hello world — 最小化插件 查看 [`examples/echo-plugin/`](examples/echo-plugin/) 以了解约 30 行代码中的完整 契约。要挂载它: ``` ln -s "$(pwd)/examples/echo-plugin" plugins/echo uv run python router.py --dry-run ``` 输出: ``` [mimir] router — profile: default [mimir] Core: inventory, secrets, audit, memory(noop) [mimir] Inventory: 0 hosts, 0 services [mimir] Plugins discovered: 1 [mimir] Skills: 0 Agents: 0 ``` 现在,客户端可以在 `router_*` 元工具旁边 看到 `echo_echo` 和 `echo_reverse`。 ## 对比 目前市面上已经有几个 MCP 聚合器。Mimir 占据了一个特定的 位置: | 工具 | 它的作用 | Mimir 的不同之处 | |------|--------------|---------------------| | **FastMCP `mount()`** | 在代码中挂载子服务器的库 | Mimir 在此基础上增加了发现、manifest schema 和安全层 | | **MetaMCP** | Docker 中的聚合器 + 中间件,三级层次结构 | Mimir 是一个单进程 Python 路由器,专注于声明式插件契约和 LLM 引导的引导流程 | | **Local MCP Gateway** | 带有 Web UI、OAuth、配置文件的聚合器 | Mimir 是 CLI 优先并专注于插件契约——(目前)没有 UI,没有 OAuth | | **mcp-proxy-server** | 将请求路由到后端服务器 | Mimir 增加了清单层和语义需求 | | **mxcp** | 通过 YAML/SQL/Python 构建 MCP 服务器 | Mimir 聚合已构建的服务器;两者是互补而非竞争关系 | ## 文档 - [`docs/naming-guide.md`](docs/naming-guide.md) — 插件、仓库和工具的 规范命名约定。 - [`docs/plugin-contract.md`](docs/plugin-contract.md) — `plugin.toml` schema 的 完整参考。 - [`docs/inventory-schema.md`](docs/inventory-schema.md) — 运维人员用来 声明主机和服务的 YAML 格式。 - [`docs/security-model.md`](docs/security-model.md) — 详述七层 安全的文档。 - [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — 路由器、 核心模块和插件是如何组合在一起的。 - [`docs/INSTALL.md`](docs/INSTALL.md) — 上述“快速安装”之外的 安装路径。 - [`docs/operator-notes/`](docs/operator-notes/) — 来自一个真实 部署(作者的 homelab)的笔记。可作为实际的 操作示例;但**不是**公共契约的一部分。 ## 状态 Mimir 是一个可用的框架,包含 280 多个测试,覆盖了核心 模块、加载器、路由器连接、安全模型、 示例插件和切换清单。作者已在真实的 homelab 中将其用于 生产环境。`refactor/generify-naming` 分支 (此代码)尚未发布; 公开发布将取决于 `docs/operator-notes/cutover/` 下 描述的切换工作。 ## 项目目标(及非目标) **目标:** - 一个小巧、易读的路由器,任何人都能在一个晚上审计完。 - 插件是真正独立的 MCP 服务器——可独立使用也可 挂载。 - 由 LLM 引导运维人员完成的引导流程。 - 运维人员可以理解的默认安全设置。 **非目标:** - 完整的 PaaS 或沙箱。Mimir 信任操作系统来实现进程隔离; 第 5 层第 2 级(文件系统/网络/执行拦截器)被明确 推迟,直到出现真正的沙箱。 - Web UI。CLI + LLM 是受支持的控制平面。 - 替代 FastMCP。Mimir 是建立在它之上的。 ## 许可证 MIT。参见 [`LICENSE`](LICENSE)。 ## 致谢 - Anthropic 的 [Model Context Protocol](https://modelcontextprotocol.io) 团队 提供了此标准。 - [FastMCP](https://github.com/jlowin/fastmcp) 提供了 Python 的构建 基础模块。 - 作者的首席 Claude,在恰当的时机问了 “这是为了一个 homelab 还是为了一个生态系统?”
标签:Claude Desktop, DNS解析, FastMCP, LLM引导, MCP聚合器, MCP路由, Python, Python安全, StruQ, 作用域插件, 元工具, 凭据保险库, 分层安全模型, 基础设施管理, 声明式路由, 安全沙箱, 审计日志, 开源项目, 插件管理, 无后门, 清单与资产管理, 清单隔离, 白名单与黑名单, 自动化配置, 跨平台集成, 逆向工具