VOOZH about

URL: https://glama.ai/mcp/servers/PortalFnd/PortalMCP?locale=ru-RU

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

🧭 Совместимые клиенты

Клиент

Транспорт

Примечания

🟣 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_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

Полный 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 — только после проверки процесса.

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

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

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