๐ 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 | ๋ฒ๋ค๋ |
โด๏ธ Google Gemini / Vertex Agents | HTTP | MCP ์ปค๋ฅํฐ |
๐ LangChain ยท LlamaIndex ยท OpenAI Agents SDK | ๋ ๋ค | MCP ์ด๋ํฐ ์ฌ์ฉ |
๐ค ๋ชจ๋ HTTP ์์ด์ ํธ | HTTP |
|
๐ฏ ์ฃผ์ ๊ธฐ๋ฅ
โก ์ผ๋ฐ
๋๊ตฌ | ์์ |
| ์ฃผ์ ๋๋ ๊ธฐ๋ณธ ์ง๊ฐ์ ETH ์์ก |
| ๋ชจ๋ ์ปจํธ๋ํธ + ABI์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ํธ์ถ |
| ์ผ๋ฐ์ ์ธ ์๋ช ๋์ง ์์ ํธ๋์ญ์ ์ค๋น |
๐ ์ค๋งํธ ์ปจํธ๋ํธ
๋๊ตฌ | ์์ |
| ์์ฐ์ด๋ก Claude๊ฐ ์์ฑํ Solidity ์ฝ๋ |
| solc ์ปดํ์ผ โ ๋ฐ์ดํธ์ฝ๋ + ABI |
| ์ธ๋ถ ์ง๊ฐ ์๋ช ์ ์ํ ๋ฐฐํฌ ํธ๋์ญ์ ์ค๋น |
|
|
๐ช ERC-20 ํ ํฐ
๋๊ตฌ | ์์ |
| ERC-20 Solidity ์์ฑ |
| ๋ณด์ ์์ ERC-20 ์์ก |
| ์๋ช ๋ ์ ์ก ๋๋ ์๋ช ๋์ง ์์ ํธ๋์ญ์ ์ค๋น |
๐ผ๏ธ ERC-721 NFT
๋๊ตฌ | ์์ |
| ERC-721 Solidity ์์ฑ |
|
|
|
|
๐ฆ DeFi
๋๊ตฌ | ์์ |
| ์คํ ์ดํน Solidity ์์ฑ |
| ์น์ธ + ์คํ ์ดํน ํธ๋์ญ์ ์ค๋น |
| ๋ฒ์ฉ 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:// ๋ฆฌ์์ค, ๋ ๊ฐ์ ์ฌ๋์ ๋ช
๋ น์ด๊ฐ ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
๊ณต๊ฐ HTTPS URL(Caddy / Cloudflare Tunnel / Nginx)๋ก HTTP ์๋ฒ๋ฅผ ํธ์คํ ํฉ๋๋ค.
MCP_HTTP_TOKEN=<๊ธด-๋๋ค-๋ฌธ์์ด>์ ์ค์ ํ์ฌ ๋ณธ์ธ๋ง ํธ์ถํ ์ ์๋๋ก ํฉ๋๋ค.Claude.ai โ ์ค์ โ ์ปค๋ฅํฐ โ ์ปค์คํ ์ปค๋ฅํฐ ์ถ๊ฐ:
URL:
https://your-host.example.com/mcp์ธ์ฆ:
Authorization: Bearer <MCP_HTTP_TOKEN>
์น๊ณผ ๋ชจ๋ฐ์ผ ์ฑ ๋ชจ๋์์ ์๋ํฉ๋๋ค.
๋ชจ๋ 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์ ์์ต๋๋ค.
๋ณ์ | ํ์ | ๋ชฉ์ |
| โ |
|
| โญ | ์ ์ฒด JSON-RPC URL โ Infura/Alchemy ํค ์ค์ ์ ๋ฎ์ด์๋๋ค |
| alt | ํค๋ง ์
๋ ฅ โ PortalMCP๊ฐ ์ต์ |
| alt | Infura ํ๋ก์ ํธ ID |
| ์ฐ๊ธฐ |
|
| ์์ฑ |
|
| โ | ๊ธฐ๋ณธ๊ฐ |
| โ | ๊ธฐ๋ณธ๊ฐ |
| โ | ๊ธฐ๋ณธ๊ฐ |
| ๐ก๏ธ | HTTP ์ ์ก์ ์ํ Bearer ํ ํฐ |
| โ | ๊ธฐ๋ณธ๊ฐ |
๐ก ํ๋ ์ด์คํ๋ ๊ฐ์ง โ
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์คํฌ๋ฆฝํธ | ๋ชฉ์ |
| stdio MCP ์๋ฒ (ํ๋ก๋์ ) |
| ์คํธ๋ฆฌ๋ฐ ๊ฐ๋ฅํ HTTP MCP ์๋ฒ (ํ๋ก๋์ ) |
| ChatGPT Actions / HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ๋ ๊ฑฐ์ REST |
| ๋ฑ๋ก ์ค๋ชจํฌ ํ ์คํธ โ 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์ด ๐๋ฅผ ๋ด์ ์ ์ํจ
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
