MCP协议中间件

一个用于管理和优化Model Context Protocol(MCP)服务器与客户端交互的中间件工具,通过配置模式控制工具、提示和资源的可见性,以提高上下文窗口效率。

  • by kranners
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 kranners/hyper-mpc

使用说明

越狱mcp

[!重要] 该工具的存在是为了填补现有MCP客户端中的一些功能空白 像Cursor或Claude Desktop一样,由于这些工具本身实现了它,现在已经过时了。

其想法是创建一个可以列入白名单或黑名单的中间件MCP服务器和客户端 将不需要的工具保存在上下文窗口中,并将资源和提示作为工具公开。


无需工具即可使用整个模型上下文协议的MCP服务器包装器 限制、缺少概念或上下文过载。

为什么会有这种情况?

MCP服务器可以是✨ 惊人的✨ 但使用它们有一些注意事项。


您的客户可能缺少大部分实际协议. MCP中列出了许多功能:

  • 工具,就像功能一样。
  • 资源,就像价值观。
  • Prompts,即提示。

在撰写本文时,几乎没有MCP客户端(Cursor、Claude Desktop、Cherry Studio)实现了所有这些功能。 如果您是Cursor用户,则只能使用工具。

请参阅模型上下文协议文档 查看您选择的MCP客户端缺少什么。

诚然,这不是最大的问题——无论如何,大多数服务器都只是使用工具。 如果更多的服务器开始实施更多的协议,这可能会在未来成为一件更大的事情。

[!警告] 这部分还没有完成!目前它只是工具。

越狱MCP通过将配置的资源和提示暴露为 工具,因此即使是最严格的实现也是完全可用的。


MCP服务器填充上下文窗口

您配置的工具越多,MCP服务器占用的空间就越大 你的代理最重要的上下文窗口。

如果您想同时使用来自多个MCP服务器的工具或信息, 你的上下文窗口很快就会变得很小。

为了解决这个问题,一些客户端已经实施了关于过多的警告 立即配置工具。Cursor已实现40的硬限制 工具,但隐藏在任何给定时刻禁用的工具。

某些服务器暴露 许多 工具同时。仅GitHub MCP服务器 填充整个光标工具帽。

您目前能做的最好的事情是手动启用和禁用哪个MCP 您希望在任何特定时刻打开的服务器。

JailbreakMCP通过提供可配置的“模式”来解决这个问题,这些模式仅公开 完成给定任务所需的确切工具和资源,以及切换工具 在运行模式之间。

安装

示例安装将假设您使用的是Cursor。

  1. 首先备份您当前的 mcp.json 文件。

[!提示] 默认位置为 ~/.cursor/jailbreak.mcp.json. 要重命名现有的Cursor配置,请执行以下操作: mv ~/.cursor/mcp.json ~/.cursor/jailbreak.mcp.json

  1. 创建新 mcp.json 旧文件所在的文件,内容如下:
{
  "mcpServers": {
    "jailbreak": {
      "command": "npx",
      "args": [
        "jailbreak-mcp@latest",
        "/optional/path/to/jailbreak.mcp.json",
      ],
      "env": {
        "CONFIG_PATH": "/optional/path/to/jailbreak.mcp.json"
      }
    }
  }
}

服务器更喜欢参数而不是环境变量 ~/.cursor/jailbreak.mcp.json.

  1. 从这里开始,您需要配置 default 模式。
{
  "mcpServers": {
    ...
  },
  "modes": {
    "default": {
      "everything": {
        "tools": [
          "echo",
          "add",
          "longRunningOperation"
        ],
        "prompts": [
          "simple_prompt",
          "complex_prompt",
          "resource_prompt"
        ],
        "resources": [
          "test://static/resource/1",
          "test://static/resource/2"
        ]
      },
      "time": true
    }
  }
}

配置

模式

每种模式都是可用服务器的白名单,以及任何特定的 允许的工具/提示/能力。

模式是以下键/值对 modes 键入配置。

{
    "mcpServers": {
        ...
    },
    "modes": {
        "default": {
            ...
        },
        "anotherModeName": {
            ...
        }
    }
}

在每种模式下,都有允许使用的服务器名称的键(与 定义于 mcpServers).

要允许给定服务器的所有内容,请将其值设置为 true.

{
    "modes": {
        "admin": {
            "email": true,
            "slack": true,
            "time": true,
        }
    }
}

更具体地说,指定您想要的工具、提示和资源 名称或资源URI列表。

{
    "modes": {
        "admin": {
            "time": true,
            "email": {
                "tools": [
                    "read_email",
                    "send_email",
                    "list_inbox"
                ]
            },
            "slack": {
                "tools": [
                    "slack_list_channels",
                    "slack_get_channel_history",
                    "slack_get_thread_replies",
                    "slack_get_users",
                    "slack_get_user_profile"
                ]
            },
            "everything": {
                "tools": [
                    "echo",
                    "add",
                    "longRunningOperation"
                ],
                "prompts": [
                    "simple_prompt",
                    "complex_prompt",
                    "resource_prompt"
                ],
                "resources": [
                    "test://static/resource/1",
                    "test://static/resource/2"
                ]
            },
        }
    }
}

TODO

需要:

  • [x] 读取配置文件(mcp.json),可以接受参数或env-var
  • [x] 验证其格式是否正确(zod模式)

初创公司

  • [x] 为每个MCP条目加载一个新客户端
  • [x] 列出所有工具
  • [x] 将所有这些添加到注册表中
  • [ ] create-jailbreak 包装用于 npm init jailbreak 设置

运行时

  • [x] 通过工具端点公开该列表
  • [x] 接收命令
  • [x] 将它们转发到相应的MCP服务器
  • [x] 将结果转发回去

支持

  • []更新传输命令以支持Nix、fnm等
  • [x] 更新连接以通过MCP主机环境(需要吗?)
  • []更新工具以支持动态工具,例如更改

香料

  • [x] CI和发布
  • []支持SSE服务器
  • [x] 同时加载所有提示和资源
  • [x] 可选择排除或首选工具
  • []也把所有其他东西都暴露出来
  • []说明,动态?
    • []诱人的帮助信息?