🌐 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 | Использует встроенный |
✴️ Google Gemini / Vertex Agents | HTTP | MCP-коннектор |
🐍 LangChain · LlamaIndex · OpenAI Agents SDK | любой | через их MCP-адаптеры |
🤖 Любой HTTP-агент | HTTP | Обычный JSON-RPC + SSE на |
🎯 Что он умеет
⚡ Общие
Инструмент | Действие |
| Баланс ETH любого адреса или кошелька по умолчанию |
| Вызов контракта (только чтение) + ABI |
| Подготовка общей неподписанной транзакции |
📜 Смарт-контракты
Инструмент | Действие |
| Solidity-код, написанный Claude на естественном языке |
| Компиляция solc → байт-код + ABI |
| Подготовка транзакции развертывания для подписи внешним кошельком |
| Развертывание напрямую с использованием |
🪙 ERC-20 токены
Инструмент | Действие |
| Генерация ERC-20 Solidity |
| Баланс ERC-20 любого держателя |
| Подписанный перевод или подготовка неподписанной транзакции |
🖼️ ERC-721 NFT
Инструмент | Действие |
| Генерация ERC-721 Solidity |
| Подготовка |
| Поиск через |
🏦 DeFi
Инструмент | Действие |
| Генерация Solidity для стейкинга |
| Подготовка транзакций approve + stake |
| Универсальный обмен Uniswap V3 (любая пара ERC-20) |
| Удобный алиас для вышеуказанного |
URI | Возвращает |
| Адрес настроенного подписывающего лица, сеть, баланс ETH |
| Текущий баланс ETH для любого адреса |
| Транзакция + квитанция (статус, газ, блок, логи, URL в эксплорере) |
| Метаданные 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:// и две команды через слэш появятся автоматически.
Разместите HTTP-сервер с публичным HTTPS URL (Caddy / Cloudflare Tunnel / Nginx).
Установите
MCP_HTTP_TOKEN=<длинная-случайная-строка>, чтобы только вы могли его вызывать.В Claude.ai → Settings → Connectors → Add Custom Connector:
URL:
https://your-host.example.com/mcpAuth:
Authorization: Bearer <MCP_HTTP_TOKEN>
Работает как в веб-версии, так и в мобильном приложении.
Все они поддерживают 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.
Переменная | Обязательно | Цель |
| – |
|
| ⭐ | Полный URL JSON-RPC — переопределяет настройку ключей Infura/Alchemy |
| alt | Только ключ — PortalMCP создает современный URL |
| alt | ID проекта Infura |
| запись | Hex-строка с префиксом |
| генерация | Для |
| – | Переопределение стандартного |
| – | По умолчанию |
| – | По умолчанию |
| 🛡️ | Bearer-токен для HTTP-транспорта |
| – | По умолчанию |
💡 Обнаружение плейсхолдеров — любое значение переменной окружения, начинающееся с
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Скрипт | Цель |
| stdio MCP-сервер (prod) |
| Streamable HTTP MCP-сервер (prod) |
| Устаревший REST для ChatGPT Actions / HTTP-клиентов |
| Дымовой тест регистрации — отлично для 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
This server cannot be installed
Maintenance
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
