Skip to main content
Glama

🌐 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: Hexiaoyi MCP

🧭 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 openapi.json

✴️ 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 /mcp


🎯 Was es kann

⚡ Allgemein

Tool

Aktion

eth_get_balance

ETH-Guthaben einer Adresse oder des Standard-Wallets

eth_call_contract

Schreibgeschützter Aufruf gegen jeden Contract + ABI

eth_send_transaction

Vorbereitung einer generischen, unsignierten Transaktion

📜 Smart Contracts

Tool

Aktion

eth_generate_contract

Von Claude erstelltes Solidity mittels natürlicher Sprache

eth_compile_contract

solc-Kompilierung → Bytecode + ABI

eth_deploy_contract

Vorbereitung der Deployment-Transaktion für externe Wallet-Signierung

eth_deploy_contract_with_signer

Direkte Bereitstellung mittels DEPLOYER_PRIVATE_KEY

🪙 ERC-20 Token

Tool

Aktion

eth_create_token

Generierung von ERC-20 Solidity

eth_get_token_balance

ERC-20-Guthaben eines Inhabers

eth_transfer_token

Signierte Übertragung oder Vorbereitung einer unsignierten Transaktion

🖼️ ERC-721 NFTs

Tool

Aktion

eth_create_nft_collection

Generierung von ERC-721 Solidity

eth_mint_nft

Vorbereitung von mint / safeMint / mintWithURI

eth_get_nft_owner

ownerOf()-Abfrage

🏦 DeFi

Tool

Aktion

eth_create_staking_contract

Generierung von Staking-Solidity

eth_stake_tokens

Vorbereitung von Approve- + Stake-Transaktionen

eth_swap_tokens

Universeller Uniswap V3 Swap (jedes ERC-20-Paar)

eth_swap_eth_to_usdt

Komfort-Alias für das obige

URI

Rückgabe

eth://wallet

Konfigurierte Signer-Adresse, Netzwerk, ETH-Guthaben

eth://balance/{address}

Live-ETH-Guthaben für jede Adresse

eth://tx/{hash}

Transaktion + Beleg (Status, Gas, Block, Logs, Explorer-URL)

eth://token/{address}

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.

  1. Hosten Sie den HTTP-Server mit einer öffentlichen HTTPS-URL (Caddy / Cloudflare Tunnel / Nginx).

  2. Setzen Sie MCP_HTTP_TOKEN=<lange-zufällige-zeichenfolge>, damit nur Sie darauf zugreifen können.

  3. In Claude.ai → Einstellungen → Connectors → Custom Connector hinzufügen:

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

    • Auth: Authorization: Bearer <MCP_HTTP_TOKEN>

  4. 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

ETHEREUM_NETWORK

–

mainnet, sepolia, arbitrum, optimism, base, polygon, … (Standard mainnet)

ETHEREUM_RPC_URL

⭐

Vollständige JSON-RPC-URL — überschreibt Infura/Alchemy-Schlüssel-Setup

ALCHEMY_API_KEY

alt

Nur Schlüssel — PortalMCP erstellt die moderne g.alchemy.com-URL

INFURA_API_KEY

alt

Infura-Projekt-ID

DEPLOYER_PRIVATE_KEY

writes

0x-präfixierter Hex-Wert — ermöglicht Signer-gestützte Tools

ANTHROPIC_API_KEY

generate

Für eth_generate_contract

ANTHROPIC_MODEL

–

Überschreibt Standard claude-sonnet-4-5-20250929

MCP_HTTP_PORT

–

Standard 3333

MCP_HTTP_HOST

–

Standard 0.0.0.0

MCP_HTTP_TOKEN

🛡️

Bearer-Token für den HTTP-Transport

MCP_HTTP_CORS_ORIGIN

–

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 .env committen — bereits in .gitignore enthalten.

  • 🔑 DEPLOYER_PRIVATE_KEY ist 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 sepolia fü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_contract ist 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             # Jest

Skript

Zweck

npm start

stdio MCP-Server (prod)

npm run start:http

Streamable HTTP MCP-Server (prod)

npm run start:api

Legacy REST für ChatGPT Actions / HTTP-Clients

npm run smoke

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

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
    -