VOOZH about

URL: https://glama.ai/mcp/servers/PortalFnd/PortalMCP?locale=ko-KR

โ‡ฑ PortalMCP by PortalFnd | Glama


๐ŸŒ PortalMCP

์ด๋”๋ฆฌ์›€์„ ์œ„ํ•œ ๋ฒ”์šฉ AI ๊ฒŒ์ดํŠธ์›จ์ด

ํ•˜๋‚˜์˜ ์„œ๋ฒ„. ๋ชจ๋“  AI. ์ „์ฒด ์ฒด์ธ.

Claude, ChatGPT, Gemini, Cursor, Windsurf, Cline, ์ปค์Šคํ…€ ์—์ด์ „ํŠธ ๋“ฑ ๋ชจ๋“  Model-Context-Protocol ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ž์—ฐ์–ด๋กœ ์ด๋”๋ฆฌ์›€์— ์—ฐ๊ฒฐํ•˜์„ธ์š”. ์ž”์•ก ํ™•์ธ, ํ† ํฐ ์Šค์™‘, NFT ๋ฏผํŒ…, ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ MCP SDK
๐Ÿ‘ Ethers
๐Ÿ‘ TypeScript
๐Ÿ‘ License
๐Ÿ‘ Release

๋น ๋ฅธ ์‹œ์ž‘ ยท ์„ค์ • ยท ๋„๊ตฌ ยท ๋กœ๋“œ๋งต ยท ๋ณ€๊ฒฝ ๋กœ๊ทธ


โœจ PortalMCP๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

๋Œ€๋ถ€๋ถ„์˜ AI-๋ธ”๋ก์ฒด์ธ ํ†ตํ•ฉ์€ ํŠน์ • LLM์ด๋‚˜ ํด๋ผ์ด์–ธํŠธ์— ์ข…์†๋ฉ๋‹ˆ๋‹ค. PortalMCP๋Š” ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๋Š” MCP ์„œ๋ฒ„๋กœ, ๋กœ์ปฌ์ด๋‚˜ VPS์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์ผํ•œ ์„œ๋ฒ„๊ฐ€ ๋ชจ๋“  MCP ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ๋น„์ˆ˜ํƒํ˜•(Non-custodial) โ€” ๊ฐœ์ธ ํ‚ค๋Š” ์ ˆ๋Œ€ ๊ธฐ๊ธฐ๋ฅผ ๋– ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ›ฐ๏ธ ์‹ค์‹œ๊ฐ„ ์ฒด์ธ ์ปจํ…์ŠคํŠธ โ€” ETH ์ž”์•ก, ํŠธ๋žœ์žญ์…˜ ์˜์ˆ˜์ฆ, ํ† ํฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฑ„ํŒ…์œผ๋กœ ์ง์ ‘ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ›ก๏ธ ์•ˆ์ „ ์šฐ์„  โ€” ๋ชจ๋“  ๋„๊ตฌ๋Š” ์ฝ๊ธฐ/ํŒŒ๊ดด์ /๋ฉฑ๋“ฑ์„ฑ ํžŒํŠธ๋ฅผ ์„ ์–ธํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ „์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿงฉ ๋ฒ”์šฉ์„ฑ โ€” stdio์™€ HTTP ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, ์กด์žฌํ•˜๋Š” ๋ชจ๋“  MCP ํด๋ผ์ด์–ธํŠธ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.


Related MCP server: MCP Crypto Wallet EVM

๐Ÿงญ ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ

ํด๋ผ์ด์–ธํŠธ

์ „์†ก ๋ฐฉ์‹

์ฐธ๊ณ 

๐ŸŸฃ Claude Desktop (macOS/Windows)

stdio

์•„๋ž˜ ์„ค์ • ์ฐธ์กฐ

๐ŸŒ Claude.ai ์›น + ๋ชจ๋ฐ”์ผ

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

/mcp์—์„œ ์ผ๋ฐ˜ JSON-RPC + SSE


๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

โšก ์ผ๋ฐ˜

๋„๊ตฌ

์ž‘์—…

eth_get_balance

์ฃผ์†Œ ๋˜๋Š” ๊ธฐ๋ณธ ์ง€๊ฐ‘์˜ ETH ์ž”์•ก

eth_call_contract

๋ชจ๋“  ์ปจํŠธ๋ž™ํŠธ + ABI์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์ „์šฉ ํ˜ธ์ถœ

eth_send_transaction

์ผ๋ฐ˜์ ์ธ ์„œ๋ช…๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜ ์ค€๋น„

๐Ÿ“œ ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ

๋„๊ตฌ

์ž‘์—…

eth_generate_contract

์ž์—ฐ์–ด๋กœ Claude๊ฐ€ ์ž‘์„ฑํ•œ Solidity ์ฝ”๋“œ

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

์Šน์ธ + ์Šคํ…Œ์ดํ‚น ํŠธ๋žœ์žญ์…˜ ์ค€๋น„

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. ๊ณต๊ฐœ HTTPS URL(Caddy / Cloudflare Tunnel / Nginx)๋กœ HTTP ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค.

  2. MCP_HTTP_TOKEN=<๊ธด-๋žœ๋ค-๋ฌธ์ž์—ด>์„ ์„ค์ •ํ•˜์—ฌ ๋ณธ์ธ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  3. Claude.ai โ†’ ์„ค์ • โ†’ ์ปค๋„ฅํ„ฐ โ†’ ์ปค์Šคํ…€ ์ปค๋„ฅํ„ฐ ์ถ”๊ฐ€:

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

    • ์ธ์ฆ: Authorization: Bearer <MCP_HTTP_TOKEN>

  4. ์›น๊ณผ ๋ชจ๋ฐ”์ผ ์•ฑ ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘ MCP๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. MCP ์„ค์ •์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:

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

(Claude Desktop๊ณผ ๋™์ผํ•œ stdio ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.)

๊ถŒ์žฅ โ€” 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

๐Ÿ’ฌ ๋Œ€ํ™” ์˜ˆ์‹œ

์ฒ˜์Œ๋ถ€ํ„ฐ ํ† ํฐ ๋ฐฐํฌํ•˜๊ธฐ

*"์ดˆ๊ธฐ ๊ณต๊ธ‰๋Ÿ‰ 1,000,000๊ฐœ์ธ PortalToken(PRTL)์ด๋ผ๋Š” ERC-20 ํ† ํฐ์„ ๋ฐฐํฌํ•ด์ค˜."

โ†’ 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

โญ

์ „์ฒด JSON-RPC URL โ€” Infura/Alchemy ํ‚ค ์„ค์ •์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค

ALCHEMY_API_KEY

alt

ํ‚ค๋งŒ ์ž…๋ ฅ โ€” PortalMCP๊ฐ€ ์ตœ์‹  g.alchemy.com URL์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค

INFURA_API_KEY

alt

Infura ํ”„๋กœ์ ํŠธ ID

DEPLOYER_PRIVATE_KEY

์“ฐ๊ธฐ

0x๋กœ ์‹œ์ž‘ํ•˜๋Š” 16์ง„์ˆ˜ โ€” ์„œ๋ช…์ž ๊ธฐ๋ฐ˜ ๋„๊ตฌ ํ™œ์„ฑํ™”

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

๐Ÿ›ก๏ธ

HTTP ์ „์†ก์„ ์œ„ํ•œ Bearer ํ† ํฐ

MCP_HTTP_CORS_ORIGIN

โ€“

๊ธฐ๋ณธ๊ฐ’ *

๐Ÿ’ก ํ”Œ๋ ˆ์ด์Šคํ™€๋” ๊ฐ์ง€ โ€” your_, changeme, xxx, placeholder, <โ€ฆ>๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์กฐ์šฉํ•œ ์„ค์ • ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.


๐ŸŒ ์ง€์› ๋„คํŠธ์›Œํฌ


๐Ÿ›ก๏ธ ๋ณด์•ˆ

  • ๐Ÿšซ .env๋ฅผ ์ ˆ๋Œ€ ์ปค๋ฐ‹ํ•˜์ง€ ๋งˆ์„ธ์š” โ€” ์ด๋ฏธ .gitignore์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๐Ÿ”‘ DEPLOYER_PRIVATE_KEY๋Š” ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์žƒ์–ด๋„ ๋˜๋Š” ์ž๊ธˆ๋งŒ ์žˆ๋Š” ์ „์šฉ ์—์ด์ „ํŠธ ์ง€๊ฐ‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • ๐Ÿ›ฐ๏ธ HTTP๋ฅผ ๋กœ์ปฌํ˜ธ์ŠคํŠธ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•  ๋•Œ๋Š” ํ•ญ์ƒ MCP_HTTP_TOKEN์„ ์„ค์ •ํ•˜๊ณ , ์•ž์— TLS(Caddy/Cloudflare)๋ฅผ ๋‘์„ธ์š”.

  • ๐Ÿงช ํ…Œ์ŠคํŠธ๋„ท ์šฐ์„  โ€” ๊ฐœ๋ฐœ ์‹œ์—๋Š” sepolia๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ๋ฆ„์„ ๊ฒ€์ฆํ•œ ํ›„์—๋งŒ ๋ฉ”์ธ๋„ท์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • ๐Ÿท๏ธ ๋„๊ตฌ ์ฃผ์„์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŒŒ๊ดด์ ์ธ ํŠธ๋žœ์žญ์…˜ ์ „์— ํ™•์ธํ•˜๋„๋ก ํ•˜์„ธ์š”. ์ž๋™ ์Šน์ธํ•˜์ง€ ๋งˆ์„ธ์š”.

  • ๐Ÿ‘€ ์ƒ์„ฑ๋œ 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 ์„œ๋ฒ„ (ํ”„๋กœ๋•์…˜)

npm run start:http

์ŠคํŠธ๋ฆฌ๋ฐ ๊ฐ€๋Šฅํ•œ HTTP MCP ์„œ๋ฒ„ (ํ”„๋กœ๋•์…˜)

npm run start:api

ChatGPT Actions / HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ๋ ˆ๊ฑฐ์‹œ REST

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 ํด๋ผ์ด์–ธํŠธ, ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€. ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋จผ์ € ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.


โญ ์ €์žฅ์†Œ ๋ณ„ํ‘œํ•˜๊ธฐ ยท ๐Ÿ› ์ด์Šˆ ๋ณด๊ณ ํ•˜๊ธฐ ยท ๐Ÿ“œ 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