🌐 PortalMCP
Universelles KI-Gateway für Ethereum
Ein Server. Jede KI. Die gesamte Chain.
Verbinden Sie jeden Model-Context-Protocol-Client — Claude, ChatGPT, Gemini, Cursor, Windsurf, Cline, benutzerdefinierte Agenten — mit Ethereum mittels natürlicher Sprache. Überprüfen Sie Guthaben, tauschen Sie Token, minten Sie NFTs, generieren und implementieren Sie Smart Contracts.
👁 MCP SDK
👁 Ethers
👁 TypeScript
👁 License
👁 Release
Schnellstart · Einrichtung · Tools · Roadmap · Changelog
✨ Warum PortalMCP
Die meisten KI-Blockchain-Integrationen binden Sie an ein LLM oder einen Client. PortalMCP ist ein spezifikationskonformer MCP-Server — derselbe Server, der lokal oder auf Ihrem VPS läuft, versorgt jeden MCP-fähigen Client.
🔐 Non-custodial — private Schlüssel verlassen niemals Ihren Rechner 🛰️ Live-Chain-Kontext — Ressourcen streamen ETH-Guthaben, Transaktionsbelege und Token-Metadaten direkt in Ihren Chat 🛡️ Sicherheit zuerst — jedes Tool deklariert Lese-/destruktive/idempotente Hinweise, damit Clients vor dem Senden bestätigen können 🧩 Universell — funktioniert über stdio und HTTP, kompatibel mit jedem MCP-Client
Related MCP server: MCP Crypto Wallet EVM
🧭 Kompatible Clients
Client | Transport | Hinweise |
🟣 Claude Desktop (macOS/Windows) | stdio | Drop-in-Konfiguration unten |
🌐 Claude.ai Web + Mobile | HTTP | Als Custom Connector hinzufügen (Pro/Team/Enterprise) |
💻 Claude Code / CLI | entweder | |
🧠 Cursor · Windsurf · Cline · Continue · Zed AI | stdio | Natives MCP |
💬 ChatGPT (Team/Enterprise) | HTTP | MCP-Connector |
🛠️ ChatGPT Custom GPTs | REST | Nutzt gebündelte |
✴️ Google Gemini / Vertex Agents | HTTP | MCP-Connector |
🐍 LangChain · LlamaIndex · OpenAI Agents SDK | entweder | via deren MCP-Adapter |
🤖 Jeder HTTP-Agent | HTTP | Einfaches JSON-RPC + SSE auf |
🎯 Was es kann
⚡ Allgemein
Tool | Aktion |
| ETH-Guthaben einer Adresse oder des Standard-Wallets |
| Schreibgeschützter Aufruf gegen jeden Contract + ABI |
| Vorbereitung einer generischen, unsignierten Transaktion |
📜 Smart Contracts
Tool | Aktion |
| Von Claude erstelltes Solidity mittels natürlicher Sprache |
| solc-Kompilierung → Bytecode + ABI |
| Vorbereitung der Deployment-Transaktion für externe Wallet-Signierung |
| Direkte Bereitstellung mittels |
🪙 ERC-20 Token
Tool | Aktion |
| Generierung von ERC-20 Solidity |
| ERC-20-Guthaben eines Inhabers |
| Signierte Übertragung oder Vorbereitung einer unsignierten Transaktion |
🖼️ ERC-721 NFTs
Tool | Aktion |
| Generierung von ERC-721 Solidity |
| Vorbereitung von |
|
|
🏦 DeFi
Tool | Aktion |
| Generierung von Staking-Solidity |
| Vorbereitung von Approve- + Stake-Transaktionen |
| Universeller Uniswap V3 Swap (jedes ERC-20-Paar) |
| Komfort-Alias für das obige |
URI | Rückgabe |
| Konfigurierte Signer-Adresse, Netzwerk, ETH-Guthaben |
| Live-ETH-Guthaben für jede Adresse |
| Transaktion + Beleg (Status, Gas, Block, Logs, Explorer-URL) |
| ERC-20-Metadaten (Name, Symbol, Dezimalstellen, Gesamtangebot) |
/swap_tokens— geführter Token-Swap-Ablauf/deploy_erc20— generieren → kompilieren → bereitstellen (End-to-End)
🚀 Schnellstart
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🔌 Client-Einrichtung
Bearbeiten Sie ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder %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-..."
}
}
}
}Starten Sie Claude Desktop neu. 17 Tools, eth://-Ressourcen und zwei Slash-Befehle erscheinen automatisch.
Hosten Sie den HTTP-Server mit einer öffentlichen HTTPS-URL (Caddy / Cloudflare Tunnel / Nginx).
Setzen Sie
MCP_HTTP_TOKEN=<lange-zufällige-zeichenfolge>, damit nur Sie darauf zugreifen können.In Claude.ai → Einstellungen → Connectors → Custom Connector hinzufügen:
URL:
https://your-host.example.com/mcpAuth:
Authorization: Bearer <MCP_HTTP_TOKEN>
Funktioniert sowohl im Web als auch in der mobilen App.
Alle unterstützen MCP nativ. Fügen Sie einen Eintrag in deren MCP-Konfiguration hinzu, der auf Folgendes verweist:
node /absolute/path/to/PortalMCP/portalmcp/dist/index.js(Derselbe stdio-Befehl wie bei Claude Desktop.)
Bevorzugt — MCP-Connector (ChatGPT Team/Enterprise, Gemini/Vertex Agents):
Verweisen Sie auf https://your-host/mcp, optional mit einem Bearer-Token.
Legacy REST (ChatGPT Custom GPT Actions oder jeder HTTP-Agent):
npm run start:api
# OpenAPI spec: http://localhost:3001/openapi.json💬 Beispiel-Konversationen
Einen Token von Grund auf bereitstellen
"Stelle einen ERC-20 namens PortalToken (PRTL) mit einem Anfangsangebot von 1.000.000 bereit."
→
eth_generate_contract→ zeigt Code →eth_compile_contract→eth_deploy_contract_with_signer→ gibt die Contract-Adresse + Etherscan-Link zurück.
Universeller Swap
"Tausche 0,01 ETH gegen USDC."
→
eth_swap_tokens { tokenIn:"ETH", tokenOut:"USDC", amount:"0.01" }— genehmigt (falls erforderlich) und führt den Tausch über Uniswap V3 aus.
Live On-Chain-Kontext
"Wie hoch ist das Guthaben von
vitalik.eth?"→ der Client fügt die
eth://balance/0xd8dA…-Ressource direkt in die Konversation ein.
⚙️ Konfiguration
Alles über Umgebungsvariablen (.env-Datei oder Host-Umgebung). Vollständige Liste in .env.example.
Variable | Erforderlich | Zweck |
| – |
|
| ⭐ | Vollständige JSON-RPC-URL — überschreibt Infura/Alchemy-Schlüssel-Setup |
| alt | Nur Schlüssel — PortalMCP erstellt die moderne |
| alt | Infura-Projekt-ID |
| writes |
|
| generate | Für |
| – | Überschreibt Standard |
| – | Standard |
| – | Standard |
| 🛡️ | Bearer-Token für den HTTP-Transport |
| – | Standard |
💡 Platzhalter-Erkennung — jeder Umgebungswert, der mit
your_,changeme,xxx,placeholder,<…>beginnt, wird als nicht gesetzt behandelt. Stoppt fehlerhafte Konfigurationen sofort.
🌍 Unterstützte Netzwerke
🛡️ Sicherheit
🚫 Niemals
.envcommitten — bereits in.gitignoreenthalten.🔑
DEPLOYER_PRIVATE_KEYist gefährlich. Verwenden Sie ein dediziertes Agenten-Wallet mit nur Mitteln, deren Verlust Sie verschmerzen können.🛰️ Setzen Sie immer
MCP_HTTP_TOKEN, wenn Sie HTTP über localhost hinaus freigeben, und verwenden Sie TLS (Caddy/Cloudflare) davor.🧪 Zuerst Testnet — verwenden Sie
sepoliafür die Entwicklung, Mainnet erst nach Überprüfung des Ablaufs.🏷️ Tool-Annotationen ermöglichen es Clients, vor destruktiven Transaktionen nachzufragen — genehmigen Sie diese nicht automatisch.
👀 Überprüfen Sie generiertes Solidity —
eth_generate_contractist ein Ausgangspunkt, kein Audit.
🧑💻 Entwicklung
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 # JestSkript | Zweck |
| stdio MCP-Server (prod) |
| Streamable HTTP MCP-Server (prod) |
| Legacy REST für ChatGPT Actions / HTTP-Clients |
| Registrierungs-Smoke-Test — ideal für CI |
Repo-Struktur
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🏗️ Architektur
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-Highlights
Vollständiger Plan in ROADMAP.md.
🤝 Mitwirken
PRs sind willkommen! Prioritätsbereiche: mehr outputSchema-Abdeckung, zusätzliche Tools, Docker-Packaging, Python-Client, Testabdeckung. Eröffnen Sie bei nicht trivialen Änderungen zuerst ein Issue.
⭐ Dieses Repo mit einem Stern markieren · 🐛 Ein Issue melden · 📜 MIT-Lizenz
Erstellt mit 💜 von der 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
