VOOZH about

URL: https://glama.ai/mcp/servers/PortalFnd/PortalMCP?locale=zh-CN

⇱ PortalMCP by PortalFnd | 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: MCP Crypto Wallet EVM

🧭 兼容客户端

客户端

传输方式

备注

🟣 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_contracteth_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,仅在验证流程后才使用主网。

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

  • 👀 审查生成的 Solidityeth_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 倾心打造 💜

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PortalFnd/PortalMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server