io.github.karashiiro/my-cool-proxy

平台与服务

by karashiiro

一个 MCP server gateway,通过渐进式 Lua 驱动发现机制减少 context 使用量,适合代理转发场景。

什么是 io.github.karashiiro/my-cool-proxy

一个 MCP server gateway,通过渐进式 Lua 驱动发现机制减少 context 使用量,适合代理转发场景。

README

My Cool Proxy

NPM Version

My Cool Proxy is a Model Context Protocol (MCP) server gateway that tries to solve a lot of perceived problems with MCP as it exists today. In no particular order, those are that:

  • Tool descriptions bloat the context window: This is a problem with how most agents integrate with MCP. Rather than implementing abstractions that enable tools to be loaded as needed, most applications dump all MCP tools into the context at once. To mitigate this, My Cool Proxy wraps tools in a Lua interpreter and exposes higher-level tools for discovering tools incrementally. Refer to Progressive Disclosure for more information.
  • Tool results bloat the context window, why not use Bash? Rather than using MCP tools, agents could just execute terminal commands and use bash to filter their results - however, this means allowing the agent to perform high-risk actions more frequently. For example, you could allow an agent to use the gh CLI to interact with GitHub, but it can then use the gh CLI to perform mutating or destructive operations, as well. With the GitHub MCP Server, you can instead scope things down to read-only tools trivially. MCP allows you to tightly control what tools agents have access to. To assist with this, My Cool Proxy allows you to further filter the tools exposed to agents.
  • Most MCP features are unsupported: Unfortunately, most applications only expose MCP tools to agents, neglecting the other client and server features offered by the protocol. My Cool Proxy aims to be a common abstraction layer for as many protocol features as possible, which allows developers to use the full capabilities of MCP in any MCP-compatible application. This is a work in progress - check the feature support table for more details.
  • Managing a config file for multiple agents is a pain: If you use more than a single MCP-compatible application, you'll quickly run into challenges keeping your MCP server configuration synchronized across them. My Cool Proxy solves this by acting as a single integration point for every server you use, reducing the number of servers to keep in sync down to just one.

Quick Start

0. Installation

Install it globally to use it as a CLI tool:

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

Or run it directly via npx:

bash
npx @karashiiro/my-cool-proxy

1. Configure

The gateway auto-creates a default config on first run. Just run it once to generate the config file:

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

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

Then edit the config to add your MCP servers.

Example config structure:

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

Or, copy the example config for a more complete starting point.

2. Run

bash
# If installed globally
my-cool-proxy

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

3. Connect

Add it to your MCP client config in e.g. Claude Desktop:

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

4. Use It

Ask your agent to perform a task that your configured MCP servers can help with, and watch it run!

Progressive Disclosure

This proxy acts as a gateway between agents and multiple MCP (Model Context Protocol) servers. Instead of connecting to each MCP server individually, agents connect to this single proxy and gain access to all configured servers through a unified interface.

Agents start with minimal knowledge about what servers or tools are available. They build context progressively:

  1. Check the server instructions - My Cool Proxy preloads a small prompt with brief excerpts of the configured servers and tools to prime the agent to use them.
  2. Call list-servers - The agent's context now includes names and descriptions of all available MCP servers (e.g., "github", "slack", "database")
  3. Call list-server-tools(server_name) - The agent's context expands to include all tool names and descriptions for that specific server
  4. Call tool-details(server_name, tool_name) - The agent's context now has complete parameter schemas, return types (if available), and usage examples for a specific tool
  5. Call execute(lua_script) - With full context, the agent can write Lua scripts that call the discovered tools

Rather than loading all tools and tool descriptions into the context upfront, this defers loading tools until the agent determines those tools are needed.

Tool Chaining with Lua: Once an agent knows what tools exist, they can compose complex multi-step workflows in a single execute() call, saving the context overhead of any intermediate tool results. The Lua runtime provides access to all discovered servers as globals, with tools callable as async functions.

Sequential tool chaining:

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

Conditional logic:

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

Iteration with loops:

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

Gateway Skills

Gateway Skills are My Cool Proxy's implementation of Agent Skills - reusable context documents that agents can load as MCP Resources. When enabled, agents can:

  • Discover skills via an automatically-injected prompt in the gateway's server instructions (or via the _gateway.list_resources() Lua builtin; look for gw-skill:// URIs)
  • Read skill content via the _gateway.read_resource() Lua builtin
  • Execute skill scripts via the _gateway.invoke_skill_script() Lua builtin

While many agents implement their own skill systems already, these systems are highly fragmented, and it is difficult to reuse the same skills across multiple separate agent applications. While some systems such as skills.sh solve this by copying skills between applications explicitly, My Cool Proxy solves this by centralizing all skills into its own skill management system and exposing them over MCP. To distinguish these from existing skill systems, My Cool Proxy refers to these as "Gateway Skills."

Gateway Skills are disabled by default as they may conflict with existing skill systems built into your agent. See the Configuration Guide for setup options.

For a deeper design discussion about why Gateway Skills are implemented this way, refer to this section in the design docs.

Web Dashboard

<img width="1879" height="925" alt="my-cool-proxy execution dashboard preview, showing a list of Lua executions on the left side and the script and script results on the right side. The selected example shows a Playwright tool execution which returned the JS code for that tool and a browser screenshot as its result. The Lua script had browser_click and browser_take_screenshot calls. Each of those is individually clickable to show the result of the specific tool call." src="https://github.com/user-attachments/assets/6b4b16b2-87c2-443a-90be-459ed3773e81" />

My Cool Proxy includes an optional web dashboard for monitoring gateway activity. When enabled, it runs on a separate port and provides:

  • Execution history — Browse all Lua script executions with syntax-highlighted scripts and results
  • Tool call log — See which MCP tools were called during each execution
  • Session monitoring — View active sessions, connected servers, and capabilities
  • Real-time updates — New executions stream to the dashboard via WebSocket

Enable it by adding a dashboard section to your config:

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

Then visit http://localhost:3100 in your browser. See the Configuration Guide for details.

Configuration

See the Configuration Guide for the full config reference.

MCP Feature Support Table

FeatureSupported?Details
ToolsMy Cool Proxy expects tools to be supported at a bare minimum. Fortunately, everything that supports MCP supports tools.
PromptsMy Cool Proxy forwards prompts from your MCP servers to the connected client and provides _gateway.get_prompt() and _gateway.list_prompts() Lua builtins for agents to load them within scripts.
ResourcesMy Cool Proxy both forwards resources from your MCP servers to the connected client and provides _gateway.read_resource() and _gateway.list_resources() Lua builtins for agents to load them within scripts.
Server InstructionsMy Cool Proxy loads excerpts of the instructions of connected MCP servers into its own server instructions, and also sends full copies through the list-servers tool when invoked.
Discovery NotificationsMy Cool Proxy listens to the tool/prompt/resource change notifications of connected MCP servers to automatically update its own internal registries, which reflects in subsequent tool calls.
CompletionsPrompt argument and resource template variable completions are forwarded from upstream servers to the connected client. Agents can also call _gateway.complete() within Lua scripts to discover valid values for resource template variables and prompt arguments.
LoggingMy Cool Proxy forwards logging notifications to the connected client, and logs them itself as well.
Rootsroots/list requests are forwarded from upstream servers to the downstream client. notifications/roots/list_changed notifications from the downstream client are fanned out to all upstream servers. When the sampling shim is active, the first valid local root is used as the ACP agent's working directory.
SamplingMy Cool Proxy supports shimming sampling support over ACP, though this is disabled by default. Refer to the configuration docs for more information.
Elicitation⚠️Elicitation requests (form and URL mode) are proxied from upstream servers to the connected client. No shim is (currently) available for clients that don't natively support elicitation (unlike sampling which can be shimmed via ACP).
ProgressProgress notifications from upstream servers are forwarded to the connected client. When a Lua script calls multiple tools concurrently, their progress is aggregated (summed) into a single stream.
Tasks⚠️Calling tools that support tasks is supported, but without leveraging the status updates for anything interesting. Sampling/elicitation tasks are not currently supported.
OAuth 2.0OAuth 2.0 authentication challenges are not yet supported (but will be)
MCP AppsMCP Apps are not yet supported (but will be).

常见问题

io.github.karashiiro/my-cool-proxy 是什么?

一个 MCP server gateway,通过渐进式 Lua 驱动发现机制减少 context 使用量,适合代理转发场景。

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描176.4k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描176.4k

接口测试套件

by alirezarezvani

Universal
热门

扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。

帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。

平台与服务
未扫描26.0k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
89.7k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
80.0k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
72.9k

评论