Skip to main content
Glama

🌐 PortalMCP

Универсальный AI-шлюз для Ethereum

Один сервер. Любой AI. Весь блокчейн.

Подключите любой клиент Model-Context-Protocol — Claude, ChatGPT, Gemini, Cursor, Windsurf, Cline, кастомных агентов — к Ethereum с помощью естественного языка. Проверяйте балансы, обменивайте токены, минтите 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

Добавить как Custom Connector (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

Обычный JSON-RPC + SSE на /mcp


🎯 Что он умеет

⚡ Общие

Инструмент

Действие

eth_get_balance

Баланс ETH любого адреса или кошелька по умолчанию

eth_call_contract

Вызов контракта (только чтение) + ABI

eth_send_transaction

Подготовка общей неподписанной транзакции

📜 Смарт-контракты

Инструмент

Действие

eth_generate_contract

Solidity-код, написанный Claude на естественном языке

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

Подготовка транзакций approve + stake

eth_swap_tokens

Универсальный обмен Uniswap V3 (любая пара ERC-20)

eth_swap_eth_to_usdt

Удобный алиас для вышеуказанного

URI

Возвращает

eth://wallet

Адрес настроенного подписывающего лица, сеть, баланс ETH

eth://balance/{address}

Текущий баланс ETH для любого адреса

eth://tx/{hash}

Транзакция + квитанция (статус, газ, блок, логи, 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. Разместите HTTP-сервер с публичным HTTPS URL (Caddy / Cloudflare Tunnel / Nginx).

  2. Установите MCP_HTTP_TOKEN=<длинная-случайная-строка>, чтобы только вы могли его вызывать.

  3. В Claude.ai → Settings → Connectors → Add Custom Connector:

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

    • Auth: Authorization: Bearer <MCP_HTTP_TOKEN>

  4. Работает как в веб-версии, так и в мобильном приложении.

Все они поддерживают MCP нативно. Добавьте запись в их MCP-конфиг, указывающую на:

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

(Та же команда stdio, что и для Claude Desktop.)

Рекомендуемый способ — MCP-коннектор (ChatGPT Team/Enterprise, Gemini/Vertex Agents): Укажите https://your-host/mcp, опционально с Bearer-токеном.

Устаревший REST (ChatGPT Custom GPT Actions или любой HTTP-агент):

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

💬 Примеры диалогов

Развертывание токена с нуля

"Разверни ERC-20 под названием PortalToken (PRTL) с начальным предложением 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

⭐

Полный URL JSON-RPC — переопределяет настройку ключей Infura/Alchemy

ALCHEMY_API_KEY

alt

Только ключ — PortalMCP создает современный URL g.alchemy.com

INFURA_API_KEY

alt

ID проекта Infura

DEPLOYER_PRIVATE_KEY

запись

Hex-строка с префиксом 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

🛡️

Bearer-токен для HTTP-транспорта

MCP_HTTP_CORS_ORIGIN

–

По умолчанию *

💡 Обнаружение плейсхолдеров — любое значение переменной окружения, начинающееся с your_, changeme, xxx, placeholder, <…>, считается не заданным. Это предотвращает скрытые ошибки конфигурации.


🌍 Поддерживаемые сети


🛡️ Безопасность

  • 🚫 Никогда не коммитьте .env — он уже в .gitignore.

  • 🔑 DEPLOYER_PRIVATE_KEY — это заряженное ружье. Используйте отдельный кошелек агента только с теми средствами, которые вы готовы потерять.

  • 🛰️ Всегда устанавливайте MCP_HTTP_TOKEN при открытии HTTP за пределы localhost и используйте TLS (Caddy/Cloudflare) перед ним.

  • 🧪 Сначала тестнет — используйте sepolia для разработки, mainnet — только после проверки процесса.

  • 🏷️ Аннотации инструментов позволяют клиентам запрашивать подтверждение перед деструктивными транзакциями — не одобряйте их автоматически.

  • 👀 Проверяйте сгенерированный 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-сервер (prod)

npm run start:http

Streamable HTTP MCP-сервер (prod)

npm run start:api

Устаревший REST для ChatGPT Actions / HTTP-клиентов

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
    -