交互式会话管理工具

一个基于Model Context Protocol的交互式会话管理工具,支持会话创建、轮询和解密、生命周期管理等功能,适用于IDE集成和代理配置。

  • by tachote
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 tachote/mcp-interactsh

使用说明

一种氛围代码MCP Interactsh桥接(或“MCP与Interactsh的桥接氛围代码”)

这个项目揭示了 ProjectDiscovery的interactsh 作为 模型上下文协议 用Node.js实现的服务器。它允许与MCP兼容的集成开发环境(IDE)或代理程序配置interactive.sh会话,轮询非带交互,以及在不修改上游interactive.sh代码库的情况下终止这些会话。

特点/功能

  • 会话配置 – 生成RSA密钥对,注册到公共交互舰队,并返回可直接使用的回调域名。
  • 投票与解密 – 获取加密的交互数据,并使用会话的私钥在本地进行解密。
  • 生命周期管理 – 列出缓存的会话并在完成后将其注销。
  • 演示脚本 – npm run demo 启动一个会话,发出一个真实的HTTP探测请求,并打印捕获的DNS/HTTP事件。

要求

  • Node.js 18 或更高版本(已在 Node 20.19 上测试)
  • 网络访问interactsh集群(默认为 https://oast.pro)

安装(本地)

git clone https://github.com/tachote/mcp-interactsh
cd mcp-interactsh
npm install

通过 npx 运行

npx -y mcp-interactsh

你也可以直接传递环境变量:

INTERACTSH_BASE_URL=https://oast.pro \
INTERACTSH_DOMAIN_SUFFIX=oast.pro \
npx -y mcp-interactsh

使用方法

运行MCP服务器

MCP服务器通过标准输入输出(stdio)进行通信。请将您的MCP兼容客户端(例如:Claude Code、VS Code MCP、Cursor)配置为启动:

node src/server.js

可选的环境变量:

变量 默认值 描述
INTERACTSH_BASE_URL https://oast.pro 要交互的目标 interactsh 服务器的基础 URL。
INTERACTSH_DOMAIN_SUFFIX 来源于宿主的 INTERACTSH_BASE_URL 用于构建回调主机的域名后缀。在使用自定义的 interactsh 部署时可进行覆盖。
INTERACTSH_TOKEN (未设置) 如果您的Interact.sh服务器强制要求认证,请提供授权令牌。

可用的MCP工具

  1. create_interactsh_session – 注册一个新会话,并返回关联ID、密钥、PEM私钥、回调域、服务器URL,以及明确的探测指令。
    • 探测规则:
      • 构建主机为 <correlation_id><nonce13>.<domain>。
      • correlation_id 正好是20个小写十六进制字符;请勿修改或截断。
      • nonce13 正好是13个小写字母数字字符 [a-z0-9]。
      • 第一个点之前的标签总长度必须为33个字符(20 + 13)。
      • 请求至 <correlation_id>.<domain> (无随机数)被 interactsh 忽略。
      • 对于探测,建议使用普通的HTTP。等待2-3秒,然后轮询事件。
  2. list_interactsh_sessions – 列出当前MCP进程在内存中缓存的所有会话。
  3. poll_interactsh_session – 投票交互器用于新的交互,返回解密后的事件。可选参数允许您按以下条件进行过滤: method, path_contains, query_contains, protocol,或者 text_contains 专注于特定的回调函数。
  4. deregister_interactsh_session – 注销会话并从本地状态中移除。

在Claude代码中配置(JSON)

Claude Code 支持通过 stdio 协议连接 MCP 服务器。如果您希望通过 JSON 进行配置,请在 Claude Code 的设置中添加如下条目(设置 → MCP 服务器 或相应的配置文件):

{
  "mcpServers": {
    "interactsh": {
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-interactsh"],
      "env": {
        "INTERACTSH_BASE_URL": "https://oast.pro",
        "INTERACTSH_DOMAIN_SUFFIX": "oast.pro"
        // "INTERACTSH_TOKEN": "your_server_token_if_required"
      }
    }
  }
}

如果你更倾向于使用本地路径(不使用 npx),请使用:

{
  "mcpServers": {
    "interactsh": {
      "transport": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/src/server.js"],
      "env": {
        "INTERACTSH_BASE_URL": "https://oast.pro",
        "INTERACTSH_DOMAIN_SUFFIX": "oast.pro"
      }
    }
  }
}

或者你可以通过以下方式添加它:

claude mcp add --transport stdio interactsh \
    -e INTERACTSH_BASE_URL=https://oast.pro \
    -e INTERACTSH_DOMAIN_SUFFIX=oast.pro \
    -- npx -y mcp-interactsh

在Codex中进行配置(TOML格式)

Codex 从(某处)读取 MCP 服务器配置 ~/.codex/config.toml添加如下条目:

[mcp_servers.interactsh]
command = "npx"
args = ["-y", "mcp-interactsh"]
env = { INTERACTSH_BASE_URL = "https://oast.pro", INTERACTSH_DOMAIN_SUFFIX = "oast.pro" }

如果你更倾向于引用本地克隆的副本而不是使用 npx:

[mcp_servers.interactsh]
command = "node"
args = ["/absolute/path/to/src/server.js"]
env = { INTERACTSH_BASE_URL = "https://oast.pro", INTERACTSH_DOMAIN_SUFFIX = "oast.pro" }

或者你可以通过以下方式添加它:

codex mcp add --env INTERACTSH_BASE_URL=https://oast.pro --env INTERACTSH_DOMAIN_SUFFIX=oast.pro interactsh -- npx -y mcp-interactsh

你可以通过以下方式验证配置:

codex mcp list
codex mcp get interactsh --json

许可证

根据MIT许可协议发布。详见 LICENSE 详情如下。

致谢/鸣谢

这座桥梁(或这个项目)是在ProjectDiscovery出色工作的基础上建立起来的。请参阅原始的interactsh项目:

  • Interactsh 仓库地址:https://github.com/projectdiscovery/interactsh