Skip to main content
Glama

My Cool Proxy

NPM Version

My Cool Proxy 是一个 Model Context Protocol (MCP) 服务器网关,旨在解决当前 MCP 存在的许多公认问题。这些问题的顺序不分先后:

  • 工具描述会膨胀上下文窗口: 这是大多数代理集成 MCP 时存在的问题。大多数应用不会实现支持按需加载工具的抽象,而是将所有 MCP 工具一次性转储到上下文中。为缓解此问题,My Cool Proxy 将工具包装在 Lua 解释器中,并暴露更高级别的工具来增量发现工具。详情请参阅渐进式披露。

  • 工具结果会膨胀上下文窗口,为什么不使用 Bash? 与其使用 MCP 工具,代理可以直接执行终端命令并使用 bash 过滤其结果——然而,这意味着允许代理更频繁地执行高风险操作。例如,你可以允许代理使用 gh CLI 与 GitHub 交互,但它也可以使用 gh CLI 执行变更或破坏性操作。借助 GitHub MCP Server,你可以轻松地将范围限制为只读工具。MCP 允许你严格控制代理可以访问的工具。为协助实现这一点,My Cool Proxy 允许你进一步过滤暴露给代理的工具。

  • 大多数 MCP 功能不受支持: 不幸的是,大多数应用只向代理暴露 MCP 工具,忽略了协议提供的其他客户端和服务器功能。My Cool Proxy 旨在成为尽可能多的协议功能的通用抽象层,使开发者能够在任何兼容 MCP 的应用中使用 MCP 的全部能力。这仍在进行中——查看功能支持表了解更多详情。

  • 为多个代理管理配置文件很麻烦: 如果你使用不止一个兼容 MCP 的应用,很快就会发现难以在这些应用之间保持 MCP 服务器配置同步。My Cool Proxy 通过作为你所使用的每个服务器的单一集成点来解决这个问题,将需要保持同步的服务器数量减少到仅一个。

快速开始

0. 安装

全局安装以将其用作 CLI 工具:

npm install -g @karashiiro/my-cool-proxy

或通过 npx 直接运行:

npx @karashiiro/my-cool-proxy

1. 配置

网关在首次运行时自动创建默认配置。只需运行一次即可生成配置文件:

my-cool-proxy  # Creates config and starts (with no servers)

# Find your config location
my-cool-proxy --config-path

然后编辑配置以添加你的 MCP 服务器。

示例配置结构:

{
  "port": 3000,
  "host": "localhost",
  "mcpClients": {
    "my-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

或者,复制示例配置以获得更完整的起点。

2. 运行

# If installed globally
my-cool-proxy

# If running via npx
npx @karashiiro/my-cool-proxy

3. 连接

将其添加到你的 MCP 客户端配置中,例如 Claude Desktop:

{
  "mcpServers": {
    "my-cool-proxy": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

4. 使用

请你的代理执行一个你配置的 MCP 服务器可以协助的任务,然后观察它的运行!

Related MCP server: MCP Gateway

渐进式披露

该代理充当代理与多个 MCP(Model Context Protocol)服务器之间的网关。代理无需单独连接到每个 MCP 服务器,而是连接到此单一代理,并通过统一接口访问所有已配置的服务器。

代理最初对可用的服务器或工具知之甚少。它们逐步构建上下文:

  1. 检查服务器指令——My Cool Proxy 会预加载一个包含已配置服务器和工具简要摘录的小提示,以引导代理使用它们。

  2. 调用 list-servers — 代理的上下文现在包含所有可用 MCP 服务器的名称和描述(例如 “github”、“slack”、“database”)

  3. 调用 list-server-tools(server_name) — 代理的上下文扩展到包含该特定服务器的所有工具名称和描述

  4. 调用 tool-details(server_name, tool_name) — 代理的上下文现在包含特定工具的完整参数模式、返回类型(如果可用)和使用示例

  5. 调用 execute(lua_script) — 在完整上下文下,代理可以编写调用已发现工具的 Lua 脚本

这不会预先将所有工具和工具描述加载到上下文中,而是将工具加载延迟到代理确定需要这些工具时。

使用 Lua 进行工具链式调用: 一旦代理知道存在哪些工具,它们就可以在单次 execute() 调用中组合复杂的多步骤工作流,从而节省中间工具结果的上下文开销。Lua 运行时将所有已发现的服务器作为全局变量提供,工具可作为异步函数调用。

顺序工具链式调用:

local raw_data = api_server.fetch({ id = 123 }):await()
local processed = processor.transform({ input = raw_data }):await()
result(processed)

条件逻辑:

local status = checker.validate({}):await()
if status.ok then
  result(processor.run({}):await())
else
  result(error_handler.notify({ error = status.message }):await())
end

使用循环进行迭代:

local results = {}
for i = 1, 5 do
  results[i] = worker.process({ index = i }):await()
end
result({ total = #results, data = results })

网关技能

网关技能是 My Cool Proxy 对 Agent Skills 的实现——代理可以作为 MCP 资源加载的可重用上下文文档。启用后,代理可以:

  • 通过自动注入到网关服务器指令中的提示来发现技能(或通过 _gateway.list_resources() Lua 内置函数;查找 gw-skill:// URI)

  • 通过 _gateway.read_resource() Lua 内置函数读取技能内容

  • 通过 _gateway.invoke_skill_script() Lua 内置函数执行技能脚本

虽然许多代理已经实现了自己的技能系统,但这些系统高度碎片化,难以在多个独立的代理应用中重用相同的技能。虽然 skills.sh 等一些系统通过在应用之间显式复制技能来解决此问题,但 My Cool Proxy 通过将所有技能集中到自己的技能管理系统中并通过 MCP 暴露它们来解决此问题。为了将这些技能与现有技能系统区分开来,My Cool Proxy 将其称为“网关技能”。

网关技能默认禁用,因为它们可能与代理内置的现有技能系统冲突。有关设置选项,请参阅配置指南。

关于为什么以这种方式实现网关技能的更深入设计讨论,请参阅设计文档中的此部分。

Web 仪表盘

My Cool Proxy 包含一个可选的 Web 仪表盘,用于监控网关活动。启用后,它会在独立端口上运行,并提供:

  • 执行历史 — 浏览所有 Lua 脚本执行,包含语法高亮的脚本和结果

  • 工具调用日志 — 查看每次执行期间调用了哪些 MCP 工具

  • 会话监控 — 查看活动会话、已连接的服务器和功能

  • 实时更新 — 新执行通过 WebSocket 流式传输到仪表盘

通过在配置中添加 dashboard 部分来启用它:

{
  "dashboard": {
    "port": 3100,
    "host": "localhost"
  }
}

然后在浏览器中访问 http://localhost:3100。有关详细信息,请参阅配置指南。

配置

有关完整配置参考,请参阅配置指南。

MCP 功能支持表

功能

支持?

详情

工具

✅

My Cool Proxy 期望至少支持工具。幸运的是,所有支持 MCP 的都支持工具。

提示词

✅

My Cool Proxy 将来自你的 MCP 服务器的提示词转发到已连接的客户端,并提供 _gateway.get_prompt() 和 _gateway.list_prompts() Lua 内置函数,供代理在脚本中加载它们。

资源

✅

My Cool Proxy 既将来自你的 MCP 服务器的资源转发到已连接的客户端,也提供 _gateway.read_resource() 和 _gateway.list_resources() Lua 内置函数,供代理在脚本中加载它们。

服务器指令

✅

My Cool Proxy 将已连接的 MCP 服务器的指令摘录加载到自己的服务器指令中,并在调用 list-servers 工具时发送完整副本。

发现通知

✅

My Cool Proxy 监听已连接的 MCP 服务器的工具/提示词/资源变更通知,自动更新其内部注册表,这会在后续的工具调用中体现。

补全

✅

提示词参数和资源模板变量的补全从上游服务器转发到已连接的客户端。代理还可以在 Lua 脚本中调用 _gateway.complete(),以发现资源模板变量和提示词参数的有效值。

日志

✅

My Cool Proxy 将日志通知转发到已连接的客户端,同时也会自行记录日志。

根

✅

roots/list 请求从上游服务器转发到下游客户端。来自下游客户端的 notifications/roots/list_changed 通知会扇出到所有上游服务器。当 采样垫片 激活时,第一个有效的本地根目录将用作 ACP 代理的工作目录。

采样

✅

My Cool Proxy 支持通过 ACP 为采样支持提供垫片(shim),但默认禁用。有关更多信息,请参阅 配置文档。

引出

⚠️

引出请求(表单和 URL 模式)从上游服务器代理到已连接的客户端。对于不原生支持引出的客户端,(当前)没有可用的垫片(不像 采样 可以通过 ACP 进行垫片处理)。

进度

✅

来自上游服务器的进度通知被转发到已连接的客户端。当 Lua 脚本并发调用多个工具时,它们的进度会聚合(求和)为单个流。

任务

⚠️

支持调用支持任务的工具,但未利用状态更新做任何有意思的事情。目前不支持采样/引出任务。

OAuth 2.0

❌

尚不支持 OAuth 2.0 身份验证质询(但 将会支持)。

MCP Apps

❌

尚不支持 MCP Apps(但 将会支持)。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.
    16 npm
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    A universal gateway that aggregates multiple MCP servers into a single interface while providing advanced token optimization, result filtering, and automated summarization. It enables efficient management of large tool catalogs and reduces context usage by up to 95% for major AI clients.
    33 npm
    16
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    A multiplexing gateway that aggregates multiple MCP servers into a single port, significantly reducing context token usage through a Meta-MCP discovery system. It enables dynamic tool discovery and invocation across various transport protocols including stdio, HTTP, and SSE.
    15
    78
    -
  • A
    license
    A
    quality
    B
    maintenance
    A single MCP server gateway that reduces context bloat by providing progressive tool discovery and invocation, dynamically provisioning downstream servers on demand.
    26
    113 PyPI
    21
    MIT