io.github.techops-services/keeperhub-mcp

平台与服务

by techops-services

MCP server for KeeperHub blockchain workflow automation

什么是 io.github.techops-services/keeperhub-mcp

MCP server for KeeperHub blockchain workflow automation

README

KeeperHub MCP Server

Model Context Protocol (MCP) server for KeeperHub that enables AI agents to create, manage, and execute blockchain automation workflows.

Features

  • Full CRUD operations for workflows (create, read, update, delete)
  • AI-powered workflow generation via natural language prompts
  • Async execution with status polling and log retrieval
  • MCP Resources for exposing workflow definitions
  • API Key authentication for secure access

Installation

Using Docker (Recommended)

bash
# Build the Docker image
docker build -t keeperhub-mcp .

# Run the server
docker run -i --rm \
  -e KEEPERHUB_API_KEY=your_api_key_here \
  keeperhub-mcp

Using Node.js

bash
# Install dependencies
pnpm install

# Build the project
pnpm build

# Run the server
KEEPERHUB_API_KEY=your_api_key_here pnpm start

Development Mode

bash
# Run with tsx for hot reloading
KEEPERHUB_API_KEY=your_api_key_here pnpm dev

Configuration

The server requires the following environment variables:

VariableDescriptionRequiredDefault
KEEPERHUB_API_KEYYour KeeperHub API keyYes-
KEEPERHUB_API_URLKeeperHub API base URLNohttps://app.keeperhub.com
PORTPort for HTTP/SSE mode (leave unset for stdio)No-
MCP_API_KEYAPI key for authenticating MCP requests (required if PORT is set)No-

Transport Modes

The server supports two transport modes:

  1. Stdio Mode (default): For local AI clients using stdin/stdout communication
  2. HTTP/SSE Mode: For remote AI agents using Server-Sent Events over HTTP

To enable HTTP mode, set the PORT environment variable. When running in HTTP mode, you must also set MCP_API_KEY for authentication.

MCP Client Configuration

Stdio Mode (Local)

Add this to your MCP client configuration (e.g., Claude Code config):

json
{
  "mcpServers": {
    "keeperhub": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "KEEPERHUB_API_KEY",
        "keeperhub-mcp"
      ]
    }
  }
}

Or for local development:

json
{
  "mcpServers": {
    "keeperhub": {
      "command": "node",
      "args": [
        "/absolute/path/to/keeperhub-mcp/dist/index.js"
      ],
      "env": {
        "KEEPERHUB_API_KEY": "your_api_key_here"
      }
    }
  }
}

HTTP/SSE Mode (Remote)

For remote AI agents, run the server in HTTP mode:

bash
# Using Node.js
PORT=3000 \
MCP_API_KEY=your_secure_mcp_key \
KEEPERHUB_API_KEY=your_keeperhub_key \
pnpm start

Or using Docker:

bash
docker run -p 3000:3000 \
  -e PORT=3000 \
  -e MCP_API_KEY=your_secure_mcp_key \
  -e KEEPERHUB_API_KEY=your_keeperhub_key \
  keeperhub-mcp

The server will expose the following endpoints:

  • GET /health - Health check endpoint
  • GET /sse - Server-Sent Events endpoint for MCP protocol
  • POST /message - Message endpoint for client requests

Authentication

All HTTP requests must include an Authorization header with a Bearer token:

bash
Authorization: Bearer your_secure_mcp_key

Example: Test Health Check

bash
curl -H "Authorization: Bearer your_secure_mcp_key" \
  http://localhost:3000/health

Available Tools

Workflow Management

list_workflows

List workflows in the organization.

Parameters:

  • limit (optional): Maximum number of workflows to return
  • offset (optional): Number of workflows to skip
  • project_id (optional): Filter by project ID (use list_projects to discover IDs)
  • tag_id (optional): Filter by tag ID (use list_tags to discover IDs)

Example:

typescript
{
  "limit": 10,
  "offset": 0,
  "project_id": "proj_abc123",
  "tag_id": "tag_xyz789"
}

get_workflow

Get workflow details by ID.

Parameters:

  • workflow_id (required): The ID of the workflow to retrieve

Example:

typescript
{
  "workflow_id": "wf_abc123"
}

create_workflow

Create a new workflow.

Parameters:

  • name (required): Name of the workflow
  • description (optional): Optional description
  • project_id (optional): Project ID to assign (use list_projects to discover IDs)
  • tag_id (optional): Tag ID to assign (use list_tags to discover IDs)
  • nodes (optional): Workflow nodes array
  • edges (optional): Workflow edges array

Example:

typescript
{
  "name": "My Workflow",
  "description": "A simple workflow",
  "project_id": "proj_abc123",
  "tag_id": "tag_xyz789",
  "nodes": [
    {
      "id": "1",
      "type": "trigger",
      "data": { "type": "manual" }
    }
  ],
  "edges": []
}

update_workflow

Update workflow nodes/edges.

Parameters:

  • workflow_id (required): The ID of the workflow to update
  • name (optional): New name for the workflow
  • description (optional): New description
  • project_id (optional): Project ID to assign (null to unassign)
  • tag_id (optional): Tag ID to assign (null to unassign)
  • nodes (optional): Updated workflow nodes
  • edges (optional): Updated workflow edges

Example:

typescript
{
  "workflow_id": "wf_abc123",
  "name": "Updated Workflow Name",
  "project_id": "proj_abc123",
  "nodes": [...]
}

delete_workflow

Delete a workflow. Returns a 409 error if the workflow has execution history unless force is set to true.

Parameters:

  • workflow_id (required): The ID of the workflow to delete
  • force (optional): Force delete even if the workflow has execution history. Permanently deletes all runs and logs.

Example:

typescript
{
  "workflow_id": "wf_abc123"
}

AI Generation

ai_generate_workflow

AI-powered workflow generation from natural language.

Parameters:

  • prompt (required): Natural language description of the workflow
  • existing_workflow_id (optional): ID of an existing workflow to modify

Example:

typescript
{
  "prompt": "Create a workflow that monitors Ethereum wallet balance and sends a Discord notification when it changes"
}

Execution

execute_workflow

Start async execution of a workflow.

Parameters:

  • workflow_id (required): The ID of the workflow to execute
  • input (optional): Input data for the workflow

Example:

typescript
{
  "workflow_id": "wf_abc123",
  "input": {
    "walletAddress": "0x1234..."
  }
}

get_execution_status

Poll execution status.

Parameters:

  • execution_id (required): The ID of the execution to check

Example:

typescript
{
  "execution_id": "exec_xyz789"
}

get_execution_logs

Get execution logs.

Parameters:

  • execution_id (required): The ID of the execution to get logs for

Example:

typescript
{
  "execution_id": "exec_xyz789"
}

Organization

list_projects

List all projects in the organization.

Parameters: none

Example:

typescript
{}

list_tags

List all tags in the organization.

Parameters: none

Example:

typescript
{}

Direct On-Chain Execution

execute_transfer

Send ETH or ERC-20 tokens directly without creating a workflow.

Parameters:

  • network (required): Blockchain network (e.g., "ethereum", "polygon", "base")
  • recipient_address (required): Destination wallet address
  • amount (required): Amount in human-readable units (e.g., "0.1")
  • token_address (optional): ERC-20 contract address; omit for native transfers

Example:

typescript
{
  "network": "sepolia",
  "recipient_address": "0xRecipient...",
  "amount": "0.01"
}

execute_contract_call

Call any smart contract function directly. Auto-detects read vs write.

Parameters:

  • contract_address (required): Target contract address
  • network (required): Blockchain network
  • function_name (required): Function to call
  • function_args (optional): Arguments as JSON array string
  • abi (optional): ABI JSON string; auto-fetched if omitted

execute_check_and_execute

Read a contract value, evaluate a condition, and execute a write if met.

Parameters:

  • contract_address (required): Contract to read
  • network (required): Blockchain network
  • function_name (required): Read function for condition
  • condition (required): {operator, value} — operators: eq, neq, gt, lt, gte, lte
  • action (required): {contract_address, function_name, ...} write to execute if condition is met

get_direct_execution_status

Check status of a direct execution. Returns tx hash and block explorer link.

Parameters:

  • execution_id (required): ID returned from a direct execution call

Available Resources

keeperhub://workflows

Returns a list of all workflows in the organization.

URI: keeperhub://workflows

MIME Type: application/json

keeperhub://workflows/{id}

Returns details for a specific workflow.

URI: keeperhub://workflows/{workflow_id}

MIME Type: application/json

API Key Management

To use this MCP server, you need to generate an API key from the KeeperHub application:

  1. Log in to app.keeperhub.com
  2. Navigate to Organization Settings
  3. Go to the API Keys section
  4. Click "Create API Key"
  5. Give it a name and copy the key (it will only be shown once)
  6. Use the key in the KEEPERHUB_API_KEY environment variable

Development

Project Structure

code
keeperhub-mcp/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── http-server.ts        # HTTP/SSE transport server
│   ├── tools/
│   │   ├── index.ts          # Tool exports
│   │   ├── workflows.ts      # Workflow CRUD tools
│   │   ├── executions.ts     # Execution tools
│   │   └── generate.ts       # AI generation tool
│   ├── resources/
│   │   ├── index.ts          # Resource exports
│   │   └── workflows.ts      # Workflow resources
│   ├── client/
│   │   └── keeperhub.ts      # KeeperHub API client
│   └── types/
│       └── index.ts          # Type definitions
├── Dockerfile
├── package.json
├── tsconfig.json
├── .gitignore
└── README.md

Building

bash
pnpm build

Type Checking

bash
pnpm type-check

Building Docker Image

bash
docker build -t keeperhub-mcp .

Error Handling

All tools return errors in the following format:

typescript
{
  "content": [
    {
      "type": "text",
      "text": "Error: <error message>"
    }
  ],
  "isError": true
}

Common errors:

  • 401 Unauthorized: Invalid or missing API key
  • 404 Not Found: Workflow or execution not found
  • 400 Bad Request: Invalid parameters
  • 500 Internal Server Error: Server error

Security

  • API keys are transmitted via Bearer authentication
  • Keys are scoped to a single organization
  • All communication with KeeperHub API is over HTTPS
  • Keys are never logged or exposed in error messages

License

MIT

Support

For issues or questions:

常见问题

io.github.techops-services/keeperhub-mcp 是什么?

MCP server for KeeperHub blockchain workflow automation

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描123.0k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描123.0k

邮件模板

by alirezarezvani

Universal
热门

快速搭建生产可用的事务邮件系统:生成 React Email/MJML 模板,接入 Resend、Postmark、SendGrid 或 AWS SES,并支持本地预览、i18n、暗色模式、反垃圾优化与追踪埋点。

面向营销与服务场景,快速搭建高质量邮件模板,省去反复设计与切图成本,成熟度和社区认可都很高。

平台与服务
未扫描12.5k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
84.2k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
78.5k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
38.1k

评论