PM

pikatenor/mcp-manager

开发工具

本页由 AI 翻译,技术细节请以原文为准。 查看原文

0 stars 0 forks 质量 50 趋势 20

macOS 菜单栏应用,将许多 MCP 服务器配置转换为本地主机可流式 HTTP 端点。

概览

macOS 菜单栏应用,将许多 MCP 服务器配置转换为本地主机可流式 HTTP 端点。 聚合器将工具前缀为 {serverName}{toolName},隐藏私有工具,并将工具/调用路由到原始服务器。 v1 是 。操作系统的 I/O(钥匙串、路径、浏览器)位于 crates/mcp 平台的特性后面,以便以后可以添加 Linux。 - 本地标准MCP服务器、远程可流式HTTP和传统HTTP+SSE远程 - 启动/停止/自动启动,含env和承载值在macOS密钥链中(绝不使用SQLite)- 按客户端持有令牌(mcpm_...,tokens.db中的SHA-256,仅显示一次)- 每个工具的公私切换- 远程MCP OAuth(PKCE S256,回环http://127.0.0.1: /oauth/callback)- 关闭时隐藏托盘;退出并从菜单栏复制端点 项目、编写客户端 mcp.json、市场、OAuth 启动刷新、跨平台 mcp 平台 impl(Linux、Windows),作为我们的公共运输 SSE 服务,标准 CLI 桥接。 捆绑绑定码:net.p1kachu.mcp-manager。

概述(AI 翻译)

macOS 菜单栏应用,将许多 MCP 服务器配置转换为 one localhost 可流式 HTTP 端点。

AI客户端(Cursor、Claude等)与以下平台通信:

聚合器将工具前缀标记为{serverName}__{toolName},隐藏私有工具,并将tools/call路由到起服务器。

v1 是 macOS 专用。操作系统的输入输出(钥匙串、路径、浏览器)隐藏在 crates/mcp-platform 的特性后面,以便以后添加 Linux。

它的作用

  • 本地stdio MCP服务器、远程可流式HTTP和传统HTTP+SSE远程节点
  • 启动/停止/自动启动,macOS密钥链中包含env和承载值(绝不包含SQLite)
  • 每个客户端持有人令牌(mcpm_…,SHA-256 in tokens.db,仅显示一次)
  • 每个工具的公/私有切换
  • 远程MCP OAuth(PKCE S256,回环http://127.0.0.1: /oauth/callback)
  • 关闭时隐藏托盘;退出并从菜单栏复制终端

**不在v1:**项目中,编写客户端mcp.json,市场,OAuth启动时刷新,跨平台mcp-platformimpl(Linux,Windows),作为我们的公共传输SSE,标准CLI桥。

布局

束识别码:net.p1kachu.mcp-manager。

在磁盘上(应用数据指令):tokens.db(哈希客户端令牌),'state.

本页由 AI 翻译,技术细节请以原文为准。

README

MCP Manager

macOS menu-bar app that turns many MCP server configs into one localhost Streamable HTTP endpoint.

AI clients (Cursor, Claude, …) talk to:

http://127.0.0.1:8757/mcp

The aggregator prefixes tools as {serverName}__{toolName}, hides private tools, and routes tools/call to the origin server.

v1 is macOS only. OS I/O (keychain, paths, browser) lives behind traits in crates/mcp-platform so Linux can be added later.

What it does

  • Local stdio MCP servers, remote Streamable HTTP, and legacy HTTP+SSE remotes
  • Start / stop / auto-start, with env and bearer values in the macOS keychain (never SQLite)
  • Per-client Bearer tokens (mcpm_…, SHA-256 in tokens.db, shown once)
  • Per-tool public/private toggles
  • Remote MCP OAuth (PKCE S256, loopback http://127.0.0.1:/oauth/callback)
  • Hide-on-close tray; quit and copy endpoint from the menu bar

Not in v1: projects, writing client mcp.json, marketplace, OAuth refresh-on-start, cross-platform mcp-platform impl (Linux, Windows), serving SSE as our public transport, stdio CLI bridge.

Layout

crates/mcp-core      OS-free models, aggregator, tokens, SQLite, SSE handshake
crates/mcp-http      inbound Axum /mcp (Bearer + JSON-RPC)
crates/mcp-platform  SecretStore, AppPaths, BrowserOpener (macOS impl)
crates/mcp-runtime   upstream connectors + OAuth flow
apps/desktop         iced + tray-icon UI (bundle id net.p1kachu.mcp-manager)

Bundle identifier: net.p1kachu.mcp-manager.

On disk (app data dir): tokens.db (hashed client tokens), state.db (server configs, env key names only). Secrets use keychain service net.p1kachu.mcp-manager.

Development

Requires Rust 1.85+ and a macOS toolchain for the desktop app.

cargo test
cargo clippy --all-targets -- -D warnings
cargo run -p mcp-manager

Crate-scoped tests:

cargo test -p mcp-core --lib
cargo test -p mcp-http
cargo test -p mcp-runtime
cargo test -p mcp-platform

Point a client at http://127.0.0.1:8757/mcp with Authorization: Bearer issued in the UI. Inbound transport is Streamable HTTP only (JSON-RPC initialize, tools/list, tools/call).

License

MIT (see Cargo.toml workspace package).

在 GitHub 查看完整 README

安装

This server does not publish a one-line install command.

Open the repository installation guide 新手?先看 mcpskill.org 教程 →