my-cool-proxy
My Cool Proxy
My Cool Proxy 是一个 Model Context Protocol (MCP) 服务器网关,旨在解决当前 MCP 存在的许多公认问题。这些问题的顺序不分先后:
工具描述会膨胀上下文窗口: 这是大多数代理集成 MCP 时存在的问题。大多数应用不会实现支持按需加载工具的抽象,而是将所有 MCP 工具一次性转储到上下文中。为缓解此问题,My Cool Proxy 将工具包装在 Lua 解释器中,并暴露更高级别的工具来增量发现工具。详情请参阅渐进式披露。
工具结果会膨胀上下文窗口,为什么不使用 Bash? 与其使用 MCP 工具,代理可以直接执行终端命令并使用 bash 过滤其结果——然而,这意味着允许代理更频繁地执行高风险操作。例如,你可以允许代理使用
ghCLI 与 GitHub 交互,但它也可以使用ghCLI 执行变更或破坏性操作。借助 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-proxy1. 配置
网关在首次运行时自动创建默认配置。只需运行一次即可生成配置文件:
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-proxy3. 连接
将其添加到你的 MCP 客户端配置中,例如 Claude Desktop:
{
"mcpServers": {
"my-cool-proxy": {
"url": "http://localhost:3000/mcp"
}
}
}4. 使用
请你的代理执行一个你配置的 MCP 服务器可以协助的任务,然后观察它的运行!
Related MCP server: MCP Gateway
渐进式披露
该代理充当代理与多个 MCP(Model Context Protocol)服务器之间的网关。代理无需单独连接到每个 MCP 服务器,而是连接到此单一代理,并通过统一接口访问所有已配置的服务器。
代理最初对可用的服务器或工具知之甚少。它们逐步构建上下文:
检查服务器指令——My Cool Proxy 会预加载一个包含已配置服务器和工具简要摘录的小提示,以引导代理使用它们。
调用
list-servers— 代理的上下文现在包含所有可用 MCP 服务器的名称和描述(例如 “github”、“slack”、“database”)调用
list-server-tools(server_name)— 代理的上下文扩展到包含该特定服务器的所有工具名称和描述调用
tool-details(server_name, tool_name)— 代理的上下文现在包含特定工具的完整参数模式、返回类型(如果可用)和使用示例调用
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 服务器的提示词转发到已连接的客户端,并提供 | |
✅ | My Cool Proxy 既将来自你的 MCP 服务器的资源转发到已连接的客户端,也提供 | |
服务器指令 | ✅ | My Cool Proxy 将已连接的 MCP 服务器的指令摘录加载到自己的服务器指令中,并在调用 |
发现通知 | ✅ | My Cool Proxy 监听已连接的 MCP 服务器的工具/提示词/资源变更通知,自动更新其内部注册表,这会在后续的工具调用中体现。 |
✅ | 提示词参数和资源模板变量的补全从上游服务器转发到已连接的客户端。代理还可以在 Lua 脚本中调用 | |
✅ | My Cool Proxy 将日志通知转发到已连接的客户端,同时也会自行记录日志。 | |
✅ |
| |
✅ | My Cool Proxy 支持通过 ACP 为采样支持提供垫片(shim),但默认禁用。有关更多信息,请参阅 配置文档。 | |
⚠️ | 引出请求(表单和 URL 模式)从上游服务器代理到已连接的客户端。对于不原生支持引出的客户端,(当前)没有可用的垫片(不像 采样 可以通过 ACP 进行垫片处理)。 | |
✅ | 来自上游服务器的进度通知被转发到已连接的客户端。当 Lua 脚本并发调用多个工具时,它们的进度会聚合(求和)为单个流。 | |
⚠️ | 支持调用支持任务的工具,但未利用状态更新做任何有意思的事情。目前不支持采样/引出任务。 | |
OAuth 2.0 | ❌ | 尚不支持 OAuth 2.0 身份验证质询(但 将会支持)。 |
❌ | 尚不支持 MCP Apps(但 将会支持)。 |
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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 npm10Apache 2.0
- AlicenseNot gradedqualityFmaintenanceA 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 npm16MIT
- FlicenseAqualityAmaintenanceA 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.1578-
- AlicenseAqualityBmaintenanceA single MCP server gateway that reduces context bloat by providing progressive tool discovery and invocation, dynamically provisioning downstream servers on demand.26113 PyPI21MIT