MCPB包构建工具

用于构建和分发.mcpb格式的AI工具包,支持Claude Code官方部署。

  • by phoityne
  • Batchfile
  • 本地部署
  • 更新于
在 GitHub 查看 phoityne/pms-mcpb

使用说明

pms-mcpb

pms-mcpb 是一个用于创建的实用程序项目 .mcpb 包装。它用于构建和分发 .mcpb 包裹为 pty-mcp-server生成的包可以从以下网址下载 发布标签.

这 .mcpb format是一种标准化的归档格式,它将MCP服务器及其相关工具捆绑在一个AI应用程序可以正确识别和利用的结构中。它作为一种官方打包和部署方法,是 Claude Code的官方部署格式. 有关 .mcpb 归档结构和可用的参考工具,请参阅: GitHub上的mcpb


安装

有两种方法可以安装 .mcpb 包裹:

1.拖放到克劳德代码中

只需拖动下载的 .mcpb 将文件导入Claude Code应用程序窗口。
它将自动导入并注册为可用工具。

2.通过抽气手动安装

A. .mcpb 该文件是一个具有不同文件扩展名的标准ZIP存档。
要手动提取它,请执行以下操作:

  1. 重命名文件扩展名 .mcpb 到 .zip.
  2. 解压 将文件保存到您选择的目录中。
  3. 添加提取的 bin/ 文件夹到系统的 PATH 环境变量。

这允许您在Claude Code之外直接使用附带的命令行工具。

⚠ 备注
包含的可执行文件当前已构建 仅适用于Windows.
它们不会在Linux上运行。
未来可能会增加对其他平台的支持。

如果在运行工具时看到DLL错误,可能需要安装
Microsoft Visual C++可再发行版 发件人:
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist

通过GitHub Actions自动生成二进制文件(试用版)

pms-mcpb 使用GitHub Actions自动构建以下对象的可执行二进制文件 pty-mcp-server 适用于各种操作系统和CPU架构。
这些构建确保了 .mcpb 包可用于多个平台,使跨环境部署无缝。

此设置仍处于试验阶段,可能会发生变化或受到限制。
有关更多详细信息,请参阅 GitHub操作工作流.


pty mcp服务器


⚠️ 小心

不要授予AI无限制的控制权。
未经监督的使用或误用可能会导致意想不到的后果。
所有人工智能系统都必须严格处于人类的监督和控制之下。
负责任地使用,充分意识到并自行承担风险。


📢 通知

始终确保 pty-mcp-server.yaml 升级服务器时更新到最新版本。使用过时的配置文件可能会导致兼容性问题或执行错误。


📘 概述

pty-mcp-server 是一个Haskell实现 MCP(模型上下文协议)服务器 使AI代理能够动态控制 PTY(伪终端)会话 以及对代理友好的进程、文件系统、套接字和串行接口,允许通过基于终端的直接I/O接口与真实系统环境进行交互。

服务器仅通过以下方式进行通信 标准输入/输出,确保与MCP客户端的简单安全集成。通过此接口,AI代理可以执行命令,与外部端点交换数据,检索系统状态,并在人工监督下应用配置。


🎯 目的

  • 为AI代理提供 基于TTY的直接I/O控制能力
  • 启用 自动化配置、检查和操作 使用CLI工具
  • 促进 AI驱动的系统开发、诊断和远程交互工作流程
  • 允许AI代理访问和操作 静态脚本或API无法触及的系统
  • 支持 基础设施即代码(IaC) 需要的场景 交互式或有状态终端工作流
  • 协助 系统集成 跨异构环境和遗留系统
  • 赋能 支持DevOps、IaC和集成管道的AI代理 通过操作需要类人终端交互的工具

🔧 示例用例

  • CLI工具的动态执行 需要PTY环境
    (例如,通过串行或基于SSH的终端的嵌入式系统)
  • REPL自动化:驱动GHCi或其他基于CLI的交互式解释器
  • 交互式调试 Haskell应用程序或基于shell的工作流
  • 系统诊断 通过脚本或交互式bash会话
  • 远程服务器管理 使用SSH
  • 直接进程、套接字、串行和文件系统操作 通过面向代理的MCP工具
  • 动手系统操作 无法通过非交互式脚本模拟CLI行为
  • 网络设备交互:通过控制台配置路由器、交换机或设备
  • 人工智能辅助的IaC工作流程:执行涉及提示、状态协调或实时输入的Terraform、Ansible或基于shell的部署脚本
  • AI驱动的系统集成测试 跨多个环境和CLI工具
  • 遗留系统自动化 其中GUI/neneneba API不可用,仅支持终端交互

用户指南(使用和设置)

特征

pty-mcp-server 提供以下内置工具,实现强大而灵活的自动化:

可用工具

  • agent-proc-run
    使用指定的命令和选项生成外部进程。进程的stdin/stdout已连接,用于后续的代理进程读取和代理进程写入操作。一次只能有一个进程处于活动状态。

  • agent-proc-read
    从运行进程的stdout中读取指定数量的字节。立即返回可用数据(非阻塞)。如果没有可用数据,则返回空字符串。

  • agent-proc-write
    将指定的字符串写入正在运行的进程的stdin。

  • agent-proc-terminate
    强制终止当前正在运行的进程。重置内部状态,以便可以再次调用代理程序运行。

  • agent-socket-open 为后续的代理套接字读取、代理套接字写入、代理套接字读取字节和代理套接字写入字节操作打开套接字连接。为Unix域套接字指定文件,或为TCP套接字指定主机和端口。

  • agent-socket-close 关闭活动代理套接字连接。

  • agent-socket-read 从活动代理套接字连接读取指定数量的字节,并以UTF-8字符串形式返回数据。如果在超时之前没有可用数据,则返回空字符串。

  • agent-socket-read-byte 从活动代理套接字连接读取指定数量的字节,并以大写十六进制字符串的形式返回数据。

  • agent-socket-write 将指定的UTF-8字符串写入活动代理套接字连接。

  • agent-socket-write-byte 解码指定的十六进制字符串,并将结果字节写入活动代理套接字连接。

  • agent-server-listen 绑定到指定的主机和端口,开始侦听传入的TCP连接,并启动后台接受线程。侦听器准备就绪后立即返回。一次只能有一个听众处于活动状态。

  • agent-server-close 关闭已接受的活动连接(如果有)。如果没有活动连接,也会关闭侦听器。呼叫两次以关闭连接和侦听器。

  • agent-server-status 以JSON对象的形式返回当前服务器状态 isListening 和 isConnected 布尔字段。

  • agent-server-events 取消队列并返回自上次调用以来累积的所有服务器端事件(例如ClientConnected、BytesEReceived、ClientDisconnected)。如果没有待处理的事件,则返回空数组。

  • agent-server-read 从活动的已接受连接中读取数据,并将其作为UTF-8字符串返回。如果在超时之前没有可用数据,则返回空字符串。

  • agent-server-read-byte 从活动的已接受连接中读取数据,并将其作为大写十六进制字符串返回。

  • agent-server-write 将指定的UTF-8字符串写入活动的已接受连接。注: \r\n 以文字字符形式发送;使用代理服务器写入字节以获得正确的CRLF。

  • agent-server-write-byte 解码指定的十六进制字符串,并将结果字节写入活动的已接受连接。十六进制字符串不得包含空格或换行符。

  • agent-serial-open 打开串行端口连接,用于后续的代理串行读取、代理串行写入、代理串行读取字节和代理串行写入字节操作。一次只能有一个端口处于活动状态。

  • agent-serial-close 关闭活动串行端口连接。

  • agent-serial-read 从活动串行端口读取指定数量的字节,并以UTF-8字符串形式返回数据。如果在超时之前没有可用数据,则返回空字符串。

  • agent-serial-read-byte 从活动串行端口读取指定数量的字节,并将数据作为大写十六进制字符串返回(例如FF0A1B41)。

  • agent-serial-write 将指定的UTF-8字符串写入活动串行端口。

  • agent-serial-write-byte 解码指定的十六进制字符串并将结果字节写入活动串行端口。接受大写或小写十六进制,例如FF0A1BFF或000a1bff。

  • pms-list-dir
    列出指定路径下目录的内容。

  • pms-make-dir
    在指定路径创建一个目录。缺少的父目录也将被创建。

  • pms-read-file
    读取指定路径下的文件内容。(可选)指定startLine/endLine(从1开始,包括1)以仅读取部分行。

  • pms-write-file
    将内容写入指定路径的文件。

  • pms-file-info
    返回文件的基本元数据:总行数和字节大小。在pms读取文件之前使用此选项,以了解文件的规模,并在pms读文件部分读取时使用行数,以避免加载过多。

  • pms-grep-file
    在文件中搜索与POSIX扩展正则表达式匹配的行。返回一个命中对象的JSON数组,每个对象都有:“line”(从1开始的行号)、“text”(匹配行的完整内容)和“cols”(由1开始的列偏移量组成的数组,其中模式在该行内匹配)。当没有行匹配时,返回一个空数组。使用pms读取文件部分读取的返回行号来有效地检索周围的上下文。

  • pms-replace-file
    替换文件中的文字。每次替换都是按顺序应用的,在该步骤中发现的每次出现的oldText都会被newText替换。这不是正则表达式替换。

  • pms-patch-file
    将统一的差异补丁应用于指定路径下的文件。补丁必须采用统一的diff格式(例如,@@-1,3+1,3@@)。成功后,返回修补文件的路径。失败时,返回错误消息,如HunkMismatch。注意:当使用多个大块时,每个大块的行号(边和边)必须考虑所有前一大块的累积行数增量(添加减去删除)。

  • socket-open
    此工具启动到指定主机和端口的套接字连接。(弃用:此工具由代理套接字打开复制,它通过更友好的代理界面提供等效功能。)

  • socket-close
    此工具关闭之前使用“套接字打开”工具建立的活动套接字连接。(已弃用:此工具由代理套接字关闭复制,它通过更友好的代理界面提供了等效的功能。)

  • socket-read
    从套接字读取指定数量的字节。“size”参数表示要读取的字节数。(已弃用:此工具由代理套接字读取字节复制,它通过更友好的代理界面提供了等效的功能。)

  • socket-write
    将字节序列写入套接字。(已弃用:此工具由代理套接字写入字节复制,它通过更友好的代理界面提供了等效的功能。)

  • socket-message
    此工具通过活动套接字连接发送消息。(已弃用:代理套接字写入复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • socket-telnet
    一个基于原始TCP套接字的简单Telnet类通信工具。此工具连接到指定的主机和端口,发送和接收数据,并从通信流中删除任何Telnet IAC(解释为命令)序列。注意:这是一个简化的Telnet实现,不支持完整的Telnet协议功能。(已弃用:此工具由代理套接字打开、代理套接字读取字节和代理套接字写入字节复制,它们通过更友好的代理接口提供等效功能。)

  • serial-open
    以给定的波特率打开与指定设备的串行端口连接。通常用于通过控制台访问本地硬件或网络设备。(已弃用:此工具由代理串行开放复制,它通过更友好的代理界面提供了等效的功能。)

  • serial-close
    此工具关闭之前使用“串行打开”工具建立的活动串行连接。(已弃用:此工具由代理串行关闭复制,它通过更友好的代理界面提供了等效的功能。)

  • serial-read
    从序列中读取指定数量的字节。“size”参数表示要读取的字节数。(已弃用:此工具由代理串行读取字节复制,它通过更友好的代理界面提供了等效的功能。)

  • serial-write
    将字节序列写入串行。(已弃用:此工具由代理串行写入字节复制,它通过更友好的代理界面提供了等效的功能。)

  • serial-message
    此工具将指定的字符串发送到活动串行连接,然后等待来自远程端的可识别提示。检测到提示后,它会捕获并返回在此之前收到的所有输出。(弃用:此工具由代理串行写入和代理串行读取复制,它们通过更友好的代理界面提供等效功能。)

  • pty-bash
    ptybash是一个在伪终端(pty)中启动bashshell的工具。它允许LLM(MCP客户端)在交互式终端(PTY)中与真实的Linux shell进行交互。这使得人工智能能够运行系统命令、收集信息,并处理提示或基于TUI的工具,就像由人类操作一样,使其能够有效地进行基于Linux的动态自动化和诊断。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-ssh
    使用指定的参数在伪终端中建立SSH会话,允许与远程系统进行交互。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-telnet
    在伪终端(PTY)会话中启动telnet命令。这允许与远程Telnet服务器进行交互式通信,使AI能够像人类用户一样响应“登录:”或“密码:”等提示。PTY环境确保终端的行为类似于真正的TTY设备,这是许多Telnet服务器所必需的。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-cabal
    使用指定的项目目录、主源文件和参数在伪终端中启动cabal repl会话。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-stack
    使用指定的项目目录、主源文件和参数在伪终端中启动堆栈repl会话。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-ghci
    使用指定的项目目录、主源文件和参数在伪终端中启动GHCi会话。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-connect
    通过伪终端(pty)运行命令,与外部工具或服务进行交互,并带有可选参数。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-message
    pms消息是一种向正在运行的PTY会话发送结构化指令或命令的工具。它抽象了直接的终端输入,允许LLM(MCP客户端)以受控和可编程的方式与PTY过程交互。(注意:代理proc-write复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • pty-terminate
    强制终止活动伪终端(PTY)连接。(注意:代理proc-terminate复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-cmd
    这 proc-cmd 工具启动Windows命令提示符(cmd.exe)作为一个子流程。它允许人工智能与标准的Windows shell环境交互,在熟悉的终端界面中执行批处理命令、文件操作和系统配置任务。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-ps
    proc-ps 启动Windows PowerShell(powershell.exe)作为一个子流程。它提供了一个交互式命令行环境,AI可以在其中执行PowerShell命令、脚本和系统管理任务。shell以默认选项启动,以保持其打开状态并准备进一步输入。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-ssh
    proc-ssh 启动SSH客户端(ssh)作为一个子流程,使用 runProcess它使AI能够通过Secure Shell协议发起与其他系统的远程连接。该工具可用于执行远程命令、访问远程shell或通过SSH提供隧道服务。所需 arguments 字段允许指定目标用户、主机和任何SSH选项(例如。, -p, -i, -L).(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-telnet
    一种通过内部使用PuTTY的plink可执行文件运行Telnet会话的工具。这使Windows上的交互式Telnet连接成为可能,而不需要像winpty这样的外部伪终端模拟器。用户提供Telnet命令参数,这些参数直接传递给plink以建立会话。(注意:plink.exe必须在系统PATH中可用。)(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-plink
    一个Windows工具,通过plink、命令行SSH和Telnet客户端启动交互式控制台应用程序。适用于直接执行SSH或Telnet会话,无需外部PTY仿真器。(注意:plink.exe必须在系统PATH中可用。)(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-spawn
    使用指定的参数生成外部进程,并通过标准输入和输出实现交互式通信。与基于PTY的执行不同,这使用runProcess函数直接与进程通信,而无需分配伪终端。适用于非TUI、基于stdin/stdout的交互式程序。(注意:代理proc run复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-message
    向以runProcess启动的子进程发送结构化的基于文本的指令或命令。它提供了一个可编程接口,用于通过标准输入与流程进行交互。(注意:代理proc-write复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-read
    读取活动PTY会话的可用输出,而不会阻塞。如果没有可用数据,则返回一个空字符串。(注意:此工具由代理proc-read复制,它通过更友好的代理界面提供了等效的功能。)

  • proc-write
    将输入数据写入活动PTY会话,并立即返回,无需等待完成。(注意:代理proc-write复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • proc-terminate
    强制终止通过runProcess创建的正在运行的进程。(注意:代理proc-terminate复制了此工具,它通过更友好的代理界面提供了等效的功能。)

  • Scriptable CLI Integration
    这 pty-mcp-server 支持执行与中定义的注册工具关联的shell脚本 tools-list.json。每个工具都必须按名称和相应的shell脚本注册(.sh)应存在于配置中 tools/ 目录。

    该设计通过可预测的脚本机制公开工具界面,支持人工智能驱动的工作流程。AI可以按名称发出工具调用,服务器透明地管理执行和交互。
    要添加新工具,请执行以下操作:

    1. 创建一个名为的shell脚本 your-tool.sh 在 tools/ 目录。
    2. 在中添加条目 tools-list.json 与名称 "your-tool" 以及适当的元数据。
    3. 无需重新编译或修改服务器——工具按名称动态解析。

    这种工具定义的分离(tools-list.json)以及实施(tools/your-tool.sh)确保了干净的解耦并简化了可扩展性。

注:
以开头的命令 pty- 在Windows上不受支持。这些工具依赖于POSIX风格的伪终端(PTY),这在Windows环境中是不可用的。

使用Podman或Docker运行

您可以构建和运行 pty-mcp-server 使用任一 波德曼 或 码头工人.

注: 在Docker容器中运行pty-mcp服务器时,在建立pty连接后,您将在容器环境中操作。在与服务器交互时应该考虑到这一点。

1.塑造形象

克隆存储库并导航到 docker 目录:

$ git clone https://github.com/phoityne/pty-mcp-server.git
$ cd pty-mcp-server/docker
$ podman build . -t pty-mcp-server-image
$

裁判: build.sh

2.运行容器

在容器内运行服务器:

$ podman run --rm -i \
--name pty-mcp-server-container \
-v /path/to/dir:/path/to/dir \
--hostname pms-docker-container \
pty-mcp-server-image \
-y /path/to/dir/config.yaml
$

裁判: run.sh

下面是一个如何配置的示例 mcp.json 要在VSCode中运行MCP服务器:

{
  "servers": {
    "pty-mcp-server": {
      "type": "stdio",
      "command": "/path/to/run.sh",
      "args": []
      /*
      "command": "podman",
      "args": [
        "run", "--rm", "-i",
        "--name", "pty-mcp-server-container",
        "-v", "/path/to/dir:/path/to/dir",
        "--hostname", "pms-docker-container",
        "pty-mcp-server-image",
        "-y", "/path/to/dir/config.yaml"
      ]
      */
    }
  }
}

二进制安装

如果您更喜欢自己构建,请确保满足以下要求:

  • GHC>=9.6

您可以安装 pty-mcp-server 使用 cabal:

$ cabal install pty-mcp-server

通过以下方式安装 .dxt 包裹

您还可以使用预打包的工具设置该工具 .dxt 文件。
此方法适用于快速安装到Claude Code中,或通过提取进行手动设置。

🛠️ 这 .dxt 包分发当前正在进行 准备中,
但您可以在以下网址查看最新状态和下载链接:
https://github.com/phoityne/pms-dxt

二进制执行

这 pty-mcp-server 应用程序从命令行执行。

用法

$ pty-mcp-server -y config.yaml

虽然服务器可以直接从命令行启动,但它通常由集成MCP客户端的开发工具(如Visual Studio Code)启动和管理。这些工具利用服务器通过PTY会话实现交互式和自动化的命令执行。

VSCode集成: .vscode/mcp.json

为了简化Visual Studio代码中的开发和服务器调用,该项目支持 .vscode/mcp.json 配置文件。

此文件定义了如何 pty-mcp-server 应该在开发环境中启动。配置示例:

{
  "servers": {
    "pty-mcp-server": {
      "type": "stdio",
      "command": "pty-mcp-server",
      "args": ["-y", "/path/to/your/config.yaml"]
    }
  }
}

config.yaml配置(参考)

  • logDir:
    保存日志文件的目录路径。这包括标准输出/错误日志和脚本执行日志。

  • logLevel:
    设置日志记录级别。例子包括 "Debug", "Info",以及 "Error".

  • toolsDir:
    包含脚本文件的目录(以工具名称命名的shell脚本。, ping.sh).如果此处存在与工具名称匹配的脚本,则将在调用工具时执行该脚本。
    此目录还必须包含 tools-list.json 该文件定义了可用的公共工具及其元数据。

  • prompts:
    用于检测交互式命令提示的提示字符串列表。这允许AI识别命令何时等待输入。例子包括 "ghci>", "]$", "password:"等等。

  • allowedAgentCmds:
    允许使用的命令白名单 agent-proc-run。如果此列表为空(默认值),则拒绝所有命令。仅允许执行此处明确列出的命令。


演示

AI通过pty-mcp服务器处理二进制协议对话


裁判: 套接字telnet提示符

此视频演示了由中定义的MCP提示驱动的Telnet登录序列 插座-电话提示.md.使用以下工具 socket-open, socket-read, socket-write,以及 socket-message,AI执行Telnet协商、处理提示并提交凭据。二进制响应被解析并以人类可读的形式显示。

通过串行连接进行网络设备版本检查——由pty mcp服务器供电。


裁判: 串行nw设置提示

此视频演示了如何 pty-mcp-server 通过与网络设备的串行连接实现AI辅助自动化。

  1. 设备设置 用户指定通信端口和波特率。
    例子: COM3,在Windows上为9600波特。

  2. 登录交互 AI提示输入用户名和密码,
    并使用它们登录到网络设备。

  3. 设备版本检索 登录后,AI发送命令
    以检索已安装的操作系统或固件版本。

  4. 在线版本检查 AI访问官方网站查看最新可用版本,
    并将其与安装的版本进行比较。

  5. 会话终止 检查完成后,AI会注销并干净地关闭串行连接。

演示:观看AI从头开始创建和启动Web应用程序


裁判: Web服务构建代理提示

  1. [场景1:概述和MCP配置]
    在这个演示中,我们将展示AI代理如何使用 pty-mcp-server.
    首先,我们配置 mcp.json 使用shell脚本启动MCP服务器。
    此脚本启动Docker容器,我们将在其中进行基于PTY的交互。

  2. [场景二:Docker启动配置]
    这 run.sh 脚本包括卷装载、主机名设置和打开 端口8080.
    这允许容器向主机系统公开web服务。

  3. [场景3:启动MCP服务器]
    现在,容器已经启动 pty-mcp-server 正在里面运行,
    准备通过伪终端处理AI驱动的请求。

  4. [场景4:连接AI代理]
    我们打开聊天界面,并发送一个为web服务构建器代理设计的提示。
    AI通过PTY连接到容器的Bash会话并开始准备。

  5. [场景5:初始设置命令]
    根据提示,AI开始:

    • 创建项目文件夹
    • 移动到工作目录
  6. [场景6:AI准备接收指令]
    一旦环境准备就绪,我们指示AI构建一个“Hello,world”web服务。
    从这里开始,人工智能开始了它的自主构建过程。

  7. [场景7:AI执行Web设置命令]
    AI提出了一系列终端命令。
    作为用户,我们会逐一审核和批准它们。
    步骤包括:

    • 检查Python
    • 安装Flask
    • 编写源代码(app.py)为“你好,世界”服务
    • 运行Flask服务器
    • 测试通过 curl http://localhost:8080 集装箱内
  8. [场景8:从集装箱外验证]
    为了确认外部可访问性,我们通过以下方式从主机访问服务 端口8080正如预期的那样,答复是: “你好,世界”

  9. [场景9:回顾执行历史]
    最后,我们逐步回顾AI的行动:

    • 初始化Bash会话并创建工作目录
    • 设置Python环境
    • 基于Flask生成 app.py
    • 启动web服务器并验证其运行
  10. [场景10:结论]
    这展示了AI如何与 PTY MCP服务器 和 码头工人,
    可以自动化实际的开发任务-- 交互式地, 智能地,以及 可重复地.

演示:Docker执行和主机SSH访问

  1. 带Docke的MCP配置
    这是mcp.json文件。它定义了MCP服务器启动配置。在这种情况下,pty-mcp服务器将使用shell脚本run.sh启动。此脚本使用Podman启动容器。
  2. 启动MCP服务器
    这是run.sh脚本。它使用podman run启动Docker容器,并使用正确的卷挂载、主机名和映像标记。一旦执行,MCP服务器就会在容器内启动。
  3. 刀具清单
    接下来,在tools-list.json中定义了暴露给客户端的工具列表。 它包括三个工具:pty-message、pty-ssh、一个名为hostname.sh的shell脚本
  4. 工具脚本目录
    在config.yaml中,定义了脚本目录的路径。 这是应该放置hostname.sh等工具脚本的地方
  5. 主机名脚本
    hostname.sh脚本只是运行hostname命令。 它作为容器内的工具执行。
  6. 从聊天中执行主机名
    现在,让我们在聊天中运行主机名工具。 这显示了当前主机的名称,即容器。
    正如预期的那样,输出是:pms-docker容器 这证实了该命令是在Docker容器内执行的。
  7. 使用pty ssh访问主机
    接下来,我们使用pty-ssh与主机操作系统建立pty会话。 尝试使用host.docker.internal进行SSH连接,该连接解析为docker主机。
    确认主机身份并输入密码后,登录成功。
  8. 确认主机环境
    现在我们已经连接到主机,我们运行:cat/etc/redhat-release
    这证实了我们现在在主机操作系统中,即CentOS 9。
    相比之下,Docker容器运行的是AlmaLinux 9。

演示:通过PTY进行交互式Bash

  1. 在mcp.json中配置bash-mcp服务器
    在此文件中,将bash-mcp服务器注册为mcp服务器。
    将命令指定为pty-mcp-server,并将配置文件config.yaml作为参数传递。
  2. config.yaml中的设置
    config.yaml文件定义了日志目录、工具目录和提示检测模式。
    这些设置为AI通过PTY与bash交互建立了环境。
  3. 将tools-list.json放入toolsDir中
    您需要将tools-list.json放置在toolsDir指定的目录中。
    此文件声明了AI可用的工具,包括pty-bash和pty-message。
  4. AI连接到Bash并自动选择命令
    AI通过伪终端连接到bash 根据上下文决定执行哪些命令。
  5. 确认命令执行结果
    getenforce命令的输出显示SELinux是否处于强制模式。
    此结果显示在终端或日志中,允许用户验证系统状态。

演示:Shell脚本执行

  1. mcp.json配置
    在stdio模式下启动pty-mcp服务器,将config.yaml作为参数传递。
  2. config.yaml概述
    指定日志目录、工具目录和提示字符串。
    toolsDir中的tools-list.json定义了要公开的工具。
  3. tools-list.json的作用
    列出可用的脚本工具,仅在此处注册了script_add工具。
  4. 工具文件夹的角色和命名约定
    存储通过mcp服务器调用的可执行shell脚本。
    tools-list.json中的工具名称与此文件夹中的shell脚本文件名匹配。
  5. 从VSCode GitHub Copilot执行
    使用命令运行script_add.sh #script_add 2 3,执行添加。
  6. 确认结果
    返回“5”,表示操作成功。

演示:Haskell调试 cabal repl


裁判: haskell cabal调试提示

  1. 目标代码概述
    MyLib.hs中的一个函数被选中,使用cabal repl和AI驱动的调试接口检查其运行时状态。
  2. MCP服务器初始化
    启动MCP服务器以允许AI和调试命令之间的结构化交互。
  3. 调试器提示和环境设置
    AI收到提示,启动cabal repl,并加载模块以准备运行时检查。
  4. 调试执行开始
    目标函数在预定义的点执行并暂停,以进行运行时观察。
  5. 状态检查和输出
    显示运行时值和控制流,以帮助验证逻辑和观察内部行为。
  6. 摘要
    与pty-msp服务器的集成实现了Haskell应用程序的自动运行时检查。