Skip to main content
Glama

🌐 PortalMCP

通用以太坊 AI 网关

一个服务器。连接所有 AI。掌控整个链。

将任何模型上下文协议 (MCP) 客户端(Claude、ChatGPT、Gemini、Cursor、Windsurf、Cline、自定义代理等)通过自然语言接入以太坊。检查余额、兑换代币、铸造 NFT、生成并部署智能合约。

MCP SDK Ethers TypeScript License Release

快速开始 · 设置 · 工具 · 路线图 · 更新日志


✨ 为什么选择 PortalMCP

大多数 AI 区块链集成将你锁定在单一 LLM 或单一客户端中。PortalMCP 是一个符合规范的 MCP 服务器 —— 同一个服务器,无论是在本地运行还是在 VPS 上运行,都能为所有支持 MCP 的客户端提供支持。

🔐 非托管 —— 私钥永远不会离开你的机器 🛰️ 实时链上上下文 —— 资源将 ETH 余额、交易回执和代币元数据直接流式传输到你的对话中 🛡️ 安全第一 —— 每个工具都声明了读取/破坏性/幂等性提示,以便客户端在广播前进行确认 🧩 通用 —— 支持 stdio 和 HTTP,可与现有的所有 MCP 客户端配合使用


Related MCP server: Hexiaoyi MCP

🧭 兼容客户端

客户端

传输方式

备注

🟣 Claude Desktop (macOS/Windows)

stdio

下方有直接配置

🌐 Claude.ai web + mobile

HTTP

添加为 自定义连接器 (Pro/Team/Enterprise)

💻 Claude Code / CLI

任意

🧠 Cursor · Windsurf · Cline · Continue · Zed AI

stdio

原生 MCP

💬 ChatGPT (Team/Enterprise)

HTTP

MCP 连接器

🛠️ ChatGPT Custom GPTs

REST

使用捆绑的 openapi.json

✴️ Google Gemini / Vertex Agents

HTTP

MCP 连接器

🐍 LangChain · LlamaIndex · OpenAI Agents SDK

任意

通过其 MCP 适配器

🤖 任何 HTTP 代理

HTTP

/mcp 上的纯 JSON-RPC + SSE


🎯 功能概览

⚡ 常规

工具

操作

eth_get_balance

任何地址或默认钱包的 ETH 余额

eth_call_contract

针对任何合约 + ABI 的只读调用

eth_send_transaction

准备通用的未签名交易

📜 智能合约

工具

操作

eth_generate_contract

由 Claude 使用自然语言编写 Solidity

eth_compile_contract

solc 编译 → 字节码 + ABI

eth_deploy_contract

为外部钱包签名准备部署交易

eth_deploy_contract_with_signer

使用 DEPLOYER_PRIVATE_KEY 直接部署

🪙 ERC-20 代币

工具

操作

eth_create_token

生成 ERC-20 Solidity

eth_get_token_balance

任何持有者的 ERC-20 余额

eth_transfer_token

已签名转账或准备未签名交易

🖼️ ERC-721 NFT

工具

操作

eth_create_nft_collection

生成 ERC-721 Solidity

eth_mint_nft

准备 mint / safeMint / mintWithURI

eth_get_nft_owner

ownerOf() 查询

🏦 DeFi

工具

操作

eth_create_staking_contract

生成质押 Solidity

eth_stake_tokens

准备批准 + 质押交易

eth_swap_tokens

通用 Uniswap V3 兑换(任何 ERC-20 对)

eth_swap_eth_to_usdt

上述功能的便捷别名

URI

返回内容

eth://wallet

已配置的签名者地址、网络、ETH 余额

eth://balance/{address}

任何地址的实时 ETH 余额

eth://tx/{hash}

交易 + 回执(状态、Gas、区块、日志、浏览器 URL)

eth://token/{address}

ERC-20 元数据(名称、符号、小数位、总供应量)

  • /swap_tokens — 引导式代币兑换流程

  • /deploy_erc20 — 生成 → 编译 → 部署端到端流程


🚀 快速开始

git clone https://github.com/PortalFnd/PortalMCP.git
cd PortalMCP/portalmcp
npm install
cp .env.example .env
# fill in .env — ANTHROPIC_API_KEY, DEPLOYER_PRIVATE_KEY,
# and ETHEREUM_RPC_URL (or a real ALCHEMY_API_KEY)
npm run build
npm run smoke          # ✓ 17 tools / 1 resource / 3 templates / 2 prompts
npm start              # stdio (Claude Desktop, Cursor, …)
# or
npm run start:http     # Streamable HTTP on http://0.0.0.0:3333/mcp

🔌 客户端设置

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "portalmcp": {
      "command": "node",
      "args": ["/absolute/path/to/PortalMCP/portalmcp/dist/index.js"],
      "env": {
        "ETHEREUM_NETWORK": "mainnet",
        "ETHEREUM_RPC_URL": "https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY",
        "DEPLOYER_PRIVATE_KEY": "0x...",
        "ANTHROPIC_API_KEY": "sk-ant-..."
      }
    }
  }
}

重启 Claude Desktop。17 个工具、eth:// 资源和两个斜杠命令将自动出现。

  1. 使用公共 HTTPS URL(Caddy / Cloudflare Tunnel / Nginx)托管 HTTP 服务器。

  2. 设置 MCP_HTTP_TOKEN=<long-random-string> 以确保只有你能调用它。

  3. 在 Claude.ai → 设置 → 连接器 → 添加自定义连接器:

    • URL: https://your-host.example.com/mcp

    • Auth: Authorization: Bearer <MCP_HTTP_TOKEN>

  4. 同时适用于网页版和移动端 App。

所有这些工具都原生支持 MCP。在它们的 MCP 配置中添加一个指向以下内容的条目:

node /absolute/path/to/PortalMCP/portalmcp/dist/index.js

(与 Claude Desktop 的 stdio 命令相同。)

首选 — MCP 连接器 (ChatGPT Team/Enterprise, Gemini/Vertex Agents): 指向 https://your-host/mcp,可选择添加 Bearer token。

传统 REST (ChatGPT 自定义 GPT 操作或任何 HTTP 代理):

npm run start:api
# OpenAPI spec: http://localhost:3001/openapi.json

💬 对话示例

从零部署代币

“部署一个名为 PortalToken (PRTL) 的 ERC-20 代币,初始供应量为 1,000,000。”

→ eth_generate_contract → 显示代码 → eth_compile_contract → eth_deploy_contract_with_signer → 返回合约地址 + Etherscan 链接。

通用兑换

“将 0.01 ETH 兑换为 USDC。”

→ eth_swap_tokens { tokenIn:"ETH", tokenOut:"USDC", amount:"0.01" } — 批准(如果需要)并通过 Uniswap V3 执行。

实时链上上下文

“vitalik.eth 的余额是多少?”

→ 客户端将 eth://balance/0xd8dA… 资源直接附加到对话中。


⚙️ 配置

全部通过环境变量(.env 文件或主机环境变量)进行配置。完整列表请见 .env.example。

变量

必需

用途

ETHEREUM_NETWORK

–

mainnet, sepolia, arbitrum, optimism, base, polygon 等(默认为 mainnet)

ETHEREUM_RPC_URL

⭐

完整的 JSON-RPC URL — 覆盖 Infura/Alchemy 密钥设置

ALCHEMY_API_KEY

备选

仅密钥 — PortalMCP 会构建现代的 g.alchemy.com URL

INFURA_API_KEY

备选

Infura 项目 ID

DEPLOYER_PRIVATE_KEY

写入

0x 开头的十六进制 — 启用签名者支持的工具

ANTHROPIC_API_KEY

生成

用于 eth_generate_contract

ANTHROPIC_MODEL

–

覆盖默认的 claude-sonnet-4-5-20250929

MCP_HTTP_PORT

–

默认 3333

MCP_HTTP_HOST

–

默认 0.0.0.0

MCP_HTTP_TOKEN

🛡️

HTTP 传输的 Bearer token

MCP_HTTP_CORS_ORIGIN

–

默认 *

💡 占位符检测 — 任何以 your_, changeme, xxx, placeholder, <…> 开头的环境变量值都将被视为未设置。这能有效防止静默配置错误。


🌍 支持的网络


🛡️ 安全性

  • 🚫 切勿提交 .env — 已包含在 .gitignore 中。

  • 🔑 DEPLOYER_PRIVATE_KEY 是危险品。 请使用仅包含可承受损失资金的专用代理钱包。

  • 🛰️ 在本地主机之外暴露 HTTP 时,务必设置 MCP_HTTP_TOKEN,并在前面加上 TLS (Caddy/Cloudflare)。

  • 🧪 优先使用测试网 — 开发时使用 sepolia,仅在验证流程后才使用主网。

  • 🏷️ 工具注释允许客户端在执行破坏性交易前进行提示 — 请勿自动批准它们。

  • 👀 审查生成的 Solidity — eth_generate_contract 只是一个起点,而非审计结果。


🧑💻 开发

npm install
npm run dev          # stdio, ts-node hot-reload
npm run dev:http     # HTTP, ts-node
npm run build        # tsc → dist/
npm run smoke        # assert MCP surface is registered
npm test             # Jest

脚本

用途

npm start

stdio MCP 服务器 (生产环境)

npm run start:http

可流式传输的 HTTP MCP 服务器 (生产环境)

npm run start:api

用于 ChatGPT 操作 / HTTP 客户端的传统 REST

npm run smoke

注册冒烟测试 — 非常适合 CI

仓库布局

portalmcp/
├── src/
│   ├── index.ts              # stdio entrypoint
│   ├── mcp-http.ts           # Streamable HTTP entrypoint
│   ├── server-factory.ts     # createPortalServer() — shared wiring
│   ├── smoke-test.ts         # CI registration check
│   ├── tools/                # general · contracts · defi · tokens · nfts
│   ├── blockchain/           # EthereumService · CompilerService
│   ├── claude/               # ContractGenerator (Anthropic SDK)
│   ├── contracts/            # Solidity templates
│   └── adapters/             # Legacy REST / LangChain / OpenAI adapters
├── dist/                     # tsc output
├── .env.example
└── package.json

🏗️ 架构

          stdio                                 Streamable HTTP (SSE)
┌─────────────────────┐                  ┌─────────────────────────────┐
│  Claude Desktop     │                  │   Claude.ai web + mobile    │
│  Cursor · Windsurf  │                  │   ChatGPT · Gemini          │
│  Cline · Continue   │                  │   Custom agents             │
└─────────┬───────────┘                  └──────────────┬──────────────┘
          │                                             │
          │        ┌──────────────────────┐             │
          └───────▶│   PortalMCP server   │◀────────────┘
                   │  (server-factory.ts) │
                   └──────────┬───────────┘
                              │
       ┌──────────────────────┼──────────────────────┐
       ▼                      ▼                      ▼
  EthereumService         Uniswap V3             Anthropic
  (ethers v6 +        (eth_swap_tokens)      (eth_generate_contract)
   Alchemy/Infura/
   custom RPC)

🗺️ 路线图亮点

完整计划请见 ROADMAP.md。


🤝 贡献

欢迎提交 PR!优先领域:更多的 outputSchema 覆盖、额外工具、Docker 打包、Python 客户端、测试覆盖率。对于非琐碎的更改,请先开启一个 issue。


⭐ 给此仓库加星 · 🐛 报告问题 · 📜 MIT 许可证

由 Portal Foundation 倾心打造 💜

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A powerful toolkit that enables seamless interaction with EVM-compatible networks through natural language processing and AI assistance, allowing users to manage wallets, launch tokens, and interact with blockchain networks.
    7 npm
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables AI agents to interact with any EVM-compatible blockchain through natural language, supporting token swaps, cross-chain bridges, staking, lending, governance, gas optimization, and portfolio tracking across networks like Ethereum, BSC, Polygon, Arbitrum, and more.
    100
    31 npm
    42
    -