返回市场
钢-MCP服务器

钢-MCP服务器

作者:steel-dev43 星标更新:2025-05-22

项目介绍

钢铁MCP服务器

smithery徽章

https://github.com/user-attachments/assets/25848033-40ea-4fa4-96f9-83b6153a0212

这是一个模型上下文协议(MCP)服务器,它使像Claude这样的大型语言模型能够通过基于Puppeteer的工具和Steel来浏览网页。基于Web Voyager框架,它提供了所有标准的网页操作工具,如点击、滚动、输入等,并能截取屏幕截图。

让Claude帮助您完成以下任务:

  • “搜索食谱并保存配料清单”
  • “追踪包裹投递状态”
  • “查找并比较特定产品的价格”
  • “填写在线求职申请”

<a href="https://glama.ai/mcp/servers/tbd32geble"><img width="380" height="200" src="https://gips1.baidu.com/it/u=2090587417,1599168600&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Steel Server MCP服务器" /></a>

🚀 快速开始

以下是运行Claude Desktop内Steel Voyager的简化指南。您只需调整环境选项即可在Steel Cloud和本地/自托管实例之间切换。

先决条件

  1. 已安装最新版本的Git和Node.js
  2. 已安装Claude Desktop
  3. (可选)如果计划自托管,请在本地运行Steel Docker镜像
  4. (可选)如果运行Steel Cloud,请准备好您的API密钥。获取密钥这里

A) 快速开始(Steel Cloud)

  1. 克隆并构建项目:

    git clone https://github.com/steel-dev/steel-mcp-server.git
    cd steel-mcp-server
    npm install
    npm run build
    
  2. 配置Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json),添加一个服务器条目:

    {
      "mcpServers": {
        "steel-puppeteer": {
          "command": "node",
          "args": ["path/to/steel-voyager/dist/index.js"],
          "env": {
            "STEEL_LOCAL": "false",
            "STEEL_API_KEY": "YOUR_STEEL_API_KEY_HERE",
            "GLOBAL_WAIT_SECONDS": "1"
          }
        }
      }
    }
    
    • 将"YOUR_STEEL_API_KEY_HERE"替换为您有效的Steel API密钥。
    • 确保"STEEL_LOCAL"设置为"false"以启用云模式。
  3. 启动Claude Desktop。它会自动启动此MCP服务器的云模式。

  4. (可选)您可以在您的仪表板中查看或管理活动的Steel浏览器会话。


B) 快速开始(本地/自托管Steel)

  1. 确保您的本地或自托管Steel服务正在运行(例如,使用开源Steel Docker镜像)。

  2. 克隆并构建项目(如果尚未执行,请按照上述步骤进行):

    git clone https://github.com/steel-dev/steel-mcp-server.git
    cd steel-mcp-server
    npm install
    npm run build
    
  3. 配置Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) 以启用本地模式:

    {
      "mcpServers": {
        "steel-puppeteer": {
          "command": "node",
          "args": ["path/to/steel-voyager/dist/index.js"],
          "env": {
            "STEEL_LOCAL": "true",
            "STEEL_BASE_URL": "http://localhost:3000",
            "GLOBAL_WAIT_SECONDS": "1"
          }
        }
      }
    }
    
    • "STEEL_LOCAL"必须设置为"true"。
    • 如果在云服务器上自托管,请配置"STEEL_BASE_URL"指向您的本地/自托管Steel URL。
  4. 启动Claude Desktop,它将连接到您本地运行的Steel,并以本地模式启动Steel Voyager。

  5. (可选)要本地查看会话,您可以访问您的自托管仪表板(localhost:5173)或查看特定于您的Steel运行时环境的日志。


就这样!一旦Claude Desktop启动,它将在后台编排MCP服务器,并让您通过Steel Voyager与网络自动化功能互动。

有关更多设置信息或遇到问题,请参阅MCP设置文档:https://modelcontextprotocol.io/quickstart/user

组件

工具

  • 导航

    • 导航到浏览器中的任何URL
    • 输入参数:
  • 搜索

  • 点击

    • 使用编号标签点击页面上的元素
    • 输入参数:
      • label(数字,必需):要点击的元素的标签号。
  • 输入

    • 使用编号标签向输入字段输入文本
    • 输入参数:
      • label(数字,必需):输入字段的标签号。
      • text(字符串,必需):要输入到字段中的文本。
      • replaceText(布尔值,可选):如果为真,则替换字段中的任何现有文本。
  • 向下滚动

    • 向下滚动页面
    • 输入参数:
      • pixels(整数,可选):要向下滚动的像素数。如果没有指定,默认滚动一整个页面。
  • 向上滚动

    • 向上滚动页面
    • 输入参数:
      • pixels(整数,可选):要向上滚动的像素数。如果没有指定,默认滚动一整个页面。
  • 返回

    • 导航到浏览器历史记录中的前一页
    • 不需要输入参数
  • 等待

    • 最多等待10秒,对于加载缓慢或需要更多时间显示动态内容的页面非常有用。
    • 输入参数:
      • seconds(数字,必需):等待的秒数(0到10)。
  • 保存未标记的屏幕截图

    • 捕获当前页面,不带边界框或高亮,并将其存储为资源。
    • 输入参数:
      • resourceName(字符串,可选):用于存储屏幕截图的名称(例如:"before_login")。如果省略,将自动生成通用名称。

资源

  • 屏幕截图: 每个保存的屏幕截图都可以通过MCP资源URI的形式访问:

    • screenshot://RESOURCE_NAME

    服务器会在您指定“保存未标记的屏幕截图”工具或大多数工具的操作结束时(带有注释的屏幕截图)存储这些屏幕截图。这些图像可以通过标准的MCP资源检索请求获取。

(注意:虽然控制台日志仍然收集用于分析和调试,但它们在此实现中并未作为可检索资源公开。它们出现在服务器日志中,但不会通过MCP资源URI提供。)

主要特性

  • 使用Puppeteer进行浏览器自动化
  • 通过Steel集成进行浏览器会话管理
  • 通过编号标签识别视觉元素
  • 屏幕截图能力
  • 基本的网页交互(导航、点击、表单填写)
  • 通过滚动支持延迟加载
  • 支持本地和远程Steel实例

理解边界框

在与页面交互时,Steel Puppeteer添加了视觉覆盖层以帮助识别交互元素:

  • 每个交互元素(按钮、链接、输入)都会获得一个唯一的编号标签
  • 彩色框勾勒出元素的边界
  • 标签出现在元素上方或内部,便于参考
  • 在指定点击或输入操作的元素时使用这些数字

配置

Steel Voyager可以运行在两种模式:“本地”或“云”。这种行为由环境变量控制。以下是简明概述:

环境变量默认值描述
STEEL_LOCAL"false"决定Steel Voyager是否在本地(true)或云(false)模式下运行。
STEEL_API_KEY(无)当STEEL_LOCAL = "false"时需要。用于与Steel端点进行身份验证。
STEEL_BASE_URL"https://api.steel.dev"Steel API的基础URL。如果您自托管Steel服务器(无论是本地还是您自己的云环境中),则需要覆盖此设置。如果STEEL_LOCAL = "true"且STEEL_BASE_URL未设置,则默认为"http://localhost:3000"。
GLOBAL_WAIT_SECONDS(无)可选。每个工具操作后等待的秒数(例如,允许慢加载页面)。

本地模式

  1. 设置STEEL_LOCAL="true"。
  2. (可选)如果在自定义域名上托管Steel服务器,请设置STEEL_BASE_URL。否则,Steel Voyager将默认为http://localhost:3000。
  3. 此模式下不需要API密钥。
  4. Puppeteer将通过ws://0.0.0.0:3000连接。

示例:

export STEEL_LOCAL="true"

export STEEL_BASE_URL="http://localhost:3000" # 只有在覆盖时才需要

云模式

  1. 设置STEEL_LOCAL="false"。
  2. 设置STEEL_API_KEY,以便Steel Voyager可以与Steel云服务(或您更改了STEEL_BASE_URL的自托管Steel)进行身份验证。
  3. STEEL_BASE_URL默认为https://api.steel.dev;如果您在其他端点运行自托管Steel实例,则需要覆盖此设置。
  4. Puppeteer将通过wss://connect.steel.dev?sessionId=…&apiKey=…连接。

示例:

export STEEL_LOCAL="false"

export STEEL_API_KEY="YOUR_STEEL_API_KEY_HERE"

Claude Desktop配置

要使用Steel Voyager与Claude Desktop,需在配置文件中添加如下内容(通常位于~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "steel-puppeteer": {
      "command": "node",
      "args": ["path/to/steel-puppeteer/dist/index.js"],
      "env": {
        "STEEL_LOCAL": "false",
        "STEEL_API_KEY": "your_api_key_here"
      }
    }
  }
}

根据所需模式调整环境变量:

  • 如果本地/自托管运行,保留"STEEL_LOCAL": "true",并可选地设置"STEEL_BASE_URL": "http://localhost:3000"
  • 如果在云模式下运行,移除"STEEL_LOCAL": "true",添加"STEEL_LOCAL": "false",并提供"STEEL_API_KEY": "<YourKey>"。 这将允许Claude Desktop以正确的模式启动Steel Voyager。

安装与运行

通过Smithery安装

要通过Smithery自动安装Steel MCP Server供Claude Desktop使用:

npx -y @smithery/cli install @steel-dev/steel-mcp-server --client claude

本地开发

  1. 克隆仓库
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    
  4. 启动服务器:
    npm start
    

示例用法 📹

我们要求Claude展示其新技能,它决定研究最新的Sora发展情况,然后创建一个交互式可视化来演示模型背后的原理及其工作方式 🤯

https://github.com/user-attachments/assets/8d4293ea-03fc-459f-ba6b-291f5b017ad7

*抱歉视频质量不佳,GitHub强制我们将视频大小限制在10MB以内 :/

故障排除

常见问题及解决方案:

  1. 使用云服务时,请验证您的Steel API密钥,并确保您的本地Steel实例正在运行。检查您是否有适当的网络连接到该服务。
  2. 如果您遇到页面渲染、标记或发送给Claude的问题,请尝试通过GLOBAL_WAIT_SECONDS环境变量在配置中添加延迟。
  3. 确保页面已完全加载,并检查您的视口大小设置。确保您的系统有足够的可用内存来捕获屏幕截图。
  4. 目前会话清理不是很好,因此您可能需要手动释放会话,以执行任务。
  5. 正确提示Claude可以大大提高性能并避免它可能产生的愚蠢错误。
  6. 利用会话查看器来分析模型可能被阻止的地方。
  7. 执行约15-20次浏览器操作后,Claude开始变慢,因为它的上下文窗口因图片而填满。虽然不应太糟糕,但我们注意到这里有些延迟,尤其是Claude Desktop客户端滞后。

贡献

此项目是实验性的,并处于积极开发中。欢迎贡献!

  1. 分叉仓库
  2. 创建功能分支
  3. 提交拉取请求

请包括:

  • 清晰描述更改
  • 动机
  • 文档更新

免责声明

⚠️ 此项目是实验性的,并基于Web Voyager代码库。在生产环境中使用风险自负。