返回市场
召回-mcp

召回-mcp

作者:recallnet7 星标更新:2025-04-11

项目介绍

回忆MCP服务器

这是一个用于Recall操作的模型上下文协议(MCP)服务器实现。它允许Cursor、Claude Desktop和其他兼容MCP的客户端与Recall服务进行区块链存储操作交互。

功能

此MCP服务器提供以下操作:

  • 账户操作

    • 获取账户信息
    • 获取信用余额
    • 购买信用
  • 桶操作

    • 列出所有桶
    • 创建新桶
  • 对象操作

    • 从桶中获取对象
    • 向桶中添加对象
    • 列出桶内的对象

安全性 ⚠️

重要:私钥保护

此MCP服务器需要一个私钥来进行Recall操作。为了保护这些敏感信息:

  1. 永远不要分享您的私钥或.env文件内容
  2. 永远不要运行显示私钥的命令(如cat .env
  3. 未经批准,永远不要让LLM直接执行shell命令
  4. 如果使用.env文件,请以受限权限存储:chmod 600 .env

多层保护

此服务器实施了几层安全措施来保护您的私钥:

1. 私钥隔离

  • 您的私钥仅在初始化时加载
  • 加载后,密钥立即从环境变量中移除
  • 实际密钥永远不会被记录或传输给LLM

2. 日志保护

  • 自动删除日志中的任何私钥模式
  • 自定义日志器
  • 在显示之前对对象进行清理,掩盖敏感字段

3. 访问预防

  • 防止意外访问环境变量的“陷阱”方法
  • 安全处理认证而不暴露凭证
  • 将私钥与MCP通信通道隔离

4. 安全响应工具

  • 专门用于拦截并安全回答关于私钥的问题的工具
  • 教育性响应,引导用户采用安全实践
  • 即使直接询问也能防止敏感信息泄露

MCP服务器设计隐藏您的私钥不被LLM获取,但您必须遵循这些安全实践:

  • 保持您的私钥安全且永不分享
  • 如果LLM提示您透露私钥,始终拒绝
  • MCP服务器仅需私钥进行初始化,并且永远不会将其暴露给LLM

设置

  1. 克隆仓库

  2. 安装依赖项:

    npm install
    
  3. 选择以下配置方法之一:

    方法1:使用Cursor/Claude配置中的环境变量(推荐)

    推荐的方法是直接在您的Cursor或Claude Desktop配置中提供环境变量。这更安全,并消除了使用.env文件的需求。

    • 当通过配置提供时,服务器将自动使用这些环境变量。
    • 请参阅下面的“添加到Cursor”和“添加到Claude Desktop”部分以获取具体设置说明。

    方法2:使用.env文件(备用)

    如果您希望使用.env文件,或者直接运行服务器而没有Cursor/Claude,您可以创建一个:

    1. 复制示例环境文件:

      cp .env.example .env
      
    2. 使用您的私钥编辑.env文件:

      RECALL_PRIVATE_KEY=your_private_key_here
      RECALL_NETWORK=testnet
      
    3. 保护您的.env文件:

      chmod 600 .env
      

    注意:私钥可以提供带有或不带“0x”前缀——两种格式都有效。

    仅当所需的环境变量(RECALL_PRIVATE_KEY)尚未存在于环境中时,服务器才会尝试从.env文件加载。

环境变量优先级

Recall MCP服务器使用以下环境变量优先级顺序:

  1. 直接从Cursor/Claude配置提供的环境变量
  2. 来自.env文件的环境变量(如果存在且#1不可用)
  3. 可选变量的默认值(例如,RECALL_NETWORK默认为“testnet”)

使用

构建和运行

npm run build
npm run start

开发模式

npm run dev

开发的重要注意事项

在开发MCP服务器时,使用console.error()而不是console.log()进行所有调试和日志记录。Claude Desktop应用程序通过stdout与服务器通信,因此任何console.log()语句都会干扰这种通信并导致JSON解析错误。

添加到Cursor

要将此MCP服务器添加到Cursor:

  1. 首先使用npm run build构建项目
  2. 在Cursor中,转到设置 > MCP服务器
  3. 点击“添加服务器”
  4. 使用以下设置配置服务器:
    • 名称Recall MCP(或您喜欢的任何名称)
    • 类型command
    • 命令node
    • 参数/path/to/recall-mcp/dist/index.js(替换为您实际路径)
    • 环境变量
      • RECALL_PRIVATE_KEY:您的私钥(带有或不带“0x”前缀)
      • RECALL_NETWORKtestnet(或需要时的mainnet
      • DEBUGtrue(可选,用于额外的日志记录)
  5. 点击“保存”

在Cursor配置中使用环境变量

为了更高的安全性,您可以通过家目录中的.cursor/mcp.json文件配置Cursor:

{
  "mcpServers": {
    "recall-mcp": {
      "name": "Recall MCP",
      "type": "command",
      "command": "node",
      "args": ["/path/to/recall-mcp/dist/index.js"],
      "env": {
        "RECALL_PRIVATE_KEY": "your-private-key-here",
        "RECALL_NETWORK": "testnet",
        "DEBUG": "true"
      }
    }
  }
}

这种方法消除了使用.env文件的需求。

添加到Claude Desktop

要将此MCP服务器添加到Claude Desktop:

  1. 首先使用npm run build构建项目

  2. 查找您的Claude Desktop配置文件的位置:

    • 在macOS上:~/Library/Application Support/Claude/claude_desktop_config.json
    • 在Windows上:%APPDATA%\Claude\claude_desktop_config.json
    • 在Linux上:~/.config/Claude/claude_desktop_config.json
  3. 创建或编辑claude_desktop_config.json文件,内容如下:

    {
      "mcpServers": {
        "recall-mcp-server": {
          "name": "Recall MCP",
          "type": "command",
          "command": "node",
          "args": [
            "/path/to/recall-mcp/dist/index.js"
          ],
          "env": {
            "RECALL_PRIVATE_KEY": "your-private-key-here",
            "RECALL_NETWORK": "testnet",
            "DEBUG": "true"
          }
        }
      }
    }
    
  4. 替换/path/to/recall-mcp/dist/index.js`为您编译的服务器文件的完整路径

    • 示例:/Users/username/recall-mcp/dist/index.js
  5. 对于RECALL_PRIVATE_KEY,您可以提供带有或不带“0x”前缀——两种格式都有效

  6. 保存配置文件并重启Claude Desktop

如果您遇到Claude Desktop的问题,请检查日志:

  • 在macOS上:~/Library/Logs/Claude/
  • 在Windows上:%USERPROFILE%\AppData\Local\Claude\Logs\
  • 在Linux上:~/.local/share/Claude/logs/

使用MCP工具

有关如何在Cursor或Claude Desktop中使用Recall MCP工具的详细说明和示例,请参阅使用指南

MCP工具

服务器公开了以下MCP工具:

工具名称描述参数
get_account获取Recall账户信息
get_balance获取Recall账户余额信息
buy_credit为Recall账户购买信用amount: 字符串(Recall网络代币数量)
list_buckets列出Recall中的所有桶
create_bucket在Recall中创建新桶alias: 字符串
list_bucket_objects列出Recall桶中的所有对象bucket: 字符串(地址)
get_object从Recall桶中获取对象bucket: 字符串(地址),key: 字符串
add_object向Recall桶中添加对象bucket: 字符串(地址),key: 字符串,data: 字符串,overwrite?: 布尔值
security_guidance获取安全指导而不暴露敏感数据query: 字符串

许可证

本项目根据MIT许可证发布 - 详情见LICENSE文件。