使用说明
MoonGate MCP服务器
模型上下文协议(MCP)服务器 月亮之门 -具有零摩擦认证的Solana钱包。
该服务器使人工智能助手和Claude(通过API或Desktop)、OpenClaw和Cursor等工具能够与您的MoonGate钱包进行交互:
- 🔑 签署交易和消息
- 💸 发送令牌(SOL和SPL令牌)
- 📊 查看投资组合和余额
- 🔄 交换代币
- 🔐 基于OAuth的身份验证(谷歌/苹果)
快速开始
安装
npm install -g moongate-mcp-server
配置
适用于克劳德桌面
添加到您的 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"moongate": {
"command": "npx",
"args": ["-y", "moongate-mcp-server"],
"env": {
"MOONGATE_API_URL": "https://wallet.moongate.one"
}
}
}
}
对于光标
添加到光标MCP设置中:
{
"mcpServers": {
"moongate": {
"command": "npx",
"args": ["-y", "moongate-mcp-server"]
}
}
}
适用于OpenClaw或自定义集成
使用MCP SDK以编程方式连接到服务器。看 MCP文件 有关客户端实现的详细信息。
认证
📖 看 作者指南.md 有关截图的详细说明。
太长,读不下去了 使用浏览器会话中的令牌(推荐):
- 登录 wallet.mooncote.one
- 打开DevTools→ 应用→ 本地存储
- 复制
token价值 - 将其添加到MCP配置中
MOONGATE_TOKEN
对于Claude Desktop:
{
"mcpServers": {
"moongate": {
"command": "npx",
"args": ["-y", "moongate-mcp-server"],
"env": {
"MOONGATE_TOKEN": "eyJhbGciOiJSUzI1NiIsInR5cCI6..."
}
}
}
}
代币在7天后过期 -需要时,从浏览器中获取一个新的。
可用工具
get_wallet_address
获取您的MoonGate钱包的公钥(地址)。
// No parameters required
退货:
{
"publicKey": "5xGj3..."
}
sign_message
用你的钱包签名。
参数:
message(string | number[]):要签名的消息
退货:
{
"signature": "4vJ5a..."
}
sign_transaction
签署Solana交易(可选择广播)。
参数:
serializedTransaction(number[]):序列化事务字节type(string):交易类型-“遗留”或“版本化”(默认:“版本化的”)broadcast(boolean):签名后是否广播(默认:false)includePayerSignature(boolean):包括付款人签名(默认值:true)
退货:
{
"signatures": ["..."],
"signedTransaction": [/* bytes */],
"txSignature": "3nZ4..." // if broadcast=true
}
send_token
将SOL或SPL令牌发送到另一个地址。获取您的投资组合以解析代币、验证余额并使用正确的小数。
参数:
tokenMint(string):令牌造币厂地址(如果提供了tokenName/tokenSymbol,则可选)tokenName(string):在投资组合中搜索的代币名称(例如“Wrapped SOL”)tokenSymbol(字符串):在投资组合中搜索的代币符号(例如“SOL”、“USDC”)toAddress(string):收件人钱包地址amount(number):发送金额decimals(数字):代币小数(可选;从投资组合中自动提取)userWallet(string):可选-发件人地址(如果省略,则自动检测)
注: 提供至少一项 tokenMint, tokenName,或 tokenSymbol。该代币必须存在于您的投资组合中。
退货:
{
"success": true,
"signature": "2wE3..."
}
get_portfolio
获取钱包投资组合(代币、余额、NFT)。
参数:
walletAddress(string):可选-要查询的钱包(默认为您的钱包)
退货:
{
"tokens": [...],
"totalValue": 1234.56,
"nfts": [...]
}
search_token
按名称、符号或造币厂地址搜索Solana代币。返回按市值排序的顶级结果。
参数:
query(string):令牌名称(例如“Solana”)、符号(例如“SOL”)或造币厂地址limit(数字):返回的最大结果数(默认值:10,最大值:100)
退货:
{
"success": true,
"results": [
{
"mint": "So11111111111111111111111111111111111111112",
"name": "Wrapped SOL",
"symbol": "SOL",
"decimals": 9,
"price": "$86.46",
"marketCap": "52474839784",
"volume24h": "139815210",
"holders": 2877594,
"image": "https://..."
}
],
"count": 1
}
swap_token
通过MoonGate DEX集成(Jupiter)交换代币。支持按名称/符号或薄荷地址搜索。
参数:
inputMint(string):输入令牌造币厂地址(如果提供inputToken,则可选)inputToken(string):输入代币名称/符号(例如“SOL”、“USDC”)-搜索薄荷outputMint(string):输出令牌薄荷地址(如果提供outputToken,则可选)outputToken(string):输出代币名称/符号(例如“SOL”、“USDC”)-搜索薄荷inputAmount(number):要交换的输入令牌数量slippagePercentage(数字):基点滑动公差(默认值:100=1%)transactionSpeed(string):优先级-“慢”、“正常”或“快”(默认值:“正常”)
注: 为每个令牌提供造币厂地址或名称/符号。名称/符号搜索按市值返回最高结果。
退货:
{
"success": true,
"signature": "4xK2...",
"transactionCount": 1,
"inputToken": "USDC",
"outputToken": "SOL",
"inputAmount": 100
}
get_token_info
获取详细的代币信息,包括安全分析和ruggull风险指标。
参数:
tokenMint(string):令牌造币厂地址(如果提供了tokenName,则可选)tokenName(string):要搜索的令牌名称或符号
退货:
{
"token": {
"mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"name": "Bonk",
"symbol": "BONK",
"decimals": 5,
"supply": 87995151415980.58,
"createdAt": 1670531612
},
"price": {
"usd": 0.00000646,
"marketCap": 568745265,
"circulatingMarketCap": 531283669
},
"security": {
"mintable": false,
"freezable": false,
"lockedLiquidityPercent": 75,
"topHoldersPercent": 33.56,
"devHoldersPercent": 0.000000166,
"snipersPercent": 0
},
"market": {
"liquidity": 178311,
"holders": 987817,
"buyCount24h": 5165,
"sellCount24h": 5630,
"buyerSentimentPercent": 47.85
},
"socialLinks": {
"website": "https://www.bonkcoin.com",
"twitter": "https://twitter.com/bonk_inu",
"telegram": "https://t.me/Official_Bonk_Inu"
},
"riskAssessment": {
"overallRisk": "LOW",
"riskIndicators": ["No major red flags detected"],
"safetyIndicators": [
"Good liquidity ($178.3K)",
"987,817 holders",
"Good distribution (top holders: 33.6%)",
"✓ Not mintable or freezable",
"75% liquidity locked",
"Has social media presence"
],
"recommendation": "✓ Appears relatively safe, but always DYOR (Do Your Own Research)"
}
}
风险指标:
- 流动性: 低流动性(<10000美元)意味着高风险
- 持有人分布: 持股比例>50%表示存在集中风险
- 安全: 可铸造/可冻结代币可以被操纵
- 锁定流动性: <50%锁定是有风险的
- 年龄: 非常新的代币(<7天)风险更高
- 社交存在: 没有可疑的社交链接
- 情绪: 买家比例低(<30%)表明市场看跌
风险等级:
LOW:0-1个风险指标MODERATE:2-4个风险指标HIGH:5+风险指标
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MOONGATE_API_URL |
MoonGate API基础URL | https://wallet.moongate.one |
MOONGATE_CALLBACK_PORT |
OAuth回调端口 | 8787 |
MOONGATE_MCP_DEBUG |
调试日志记录(详细) | true (设置为 false 禁用) |
MOONGATE_TOKEN |
手动令牌(用于测试) | - |
发展
本地设置
git clone https://github.com/invictusdhahri/moongate-mcp-server.git
cd moongate-mcp-server
npm install
npm run build
测试
为了在没有OAuth流的情况下进行快速测试,请设置一个手动令牌:
export MOONGATE_TOKEN="your-jwt-token"
npm run dev
建筑
npm run build
构建的文件将位于 dist/.
身份验证流程
sequenceDiagram
participant User
participant MCP as MCP Server
participant Browser
participant MG as MoonGate API
MCP->>MCP: Check ~/.moongate-mcp/session.json
alt Session exists & valid
MCP->>MG: GET /api2/auth (refresh if needed)
MG-->>MCP: Fresh token
else No session or expired
MCP->>Browser: Open localhost:8787
Browser->>Browser: User clicks Google/Apple
Browser->>MG: OAuth verification
MG-->>Browser: JWT token
Browser->>MCP: Redirect with token
MCP->>MCP: Save session.json
end
MCP-->>User: Ready for tool calls
安全
- 会话存储:令牌存储在
~/.moongate-mcp/session.json随着0o600权限(仅限用户读/写) - 自动刷新:代币在到期后1小时内自动刷新
- 无密码签名:根据MoonGate OAuth设计,所有签名操作都使用空密码
- 本地OAuth:身份验证通过localhost回调进行,不公开凭据
路线图
- [x] 第一阶段:核心工具(获取地址、签署消息/tx)
- [x] 阶段2:OAuth浏览器流,发送令牌
- [x] 第3阶段:投资组合和掉期工具
- [x] 第四阶段:代币搜索和ruggull分析
- [x] 第五阶段:npm发布为
moongate-mcp-server - []第6阶段:NFT操作(列表、转移、造币)
- []第7阶段:令牌元数据更新
- []第8阶段:多钱包支持
故障排除
“未通过身份验证”或“无效令牌”错误
您的令牌已过期(7天有效期)。买一个新鲜的:
- 首选 wallet.mooncote.one 并登录
- 打开DevTools→ 应用→ 本地存储→
https://wallet.moongate.one - 复制
token价值 - 更新
MOONGATE_TOKEN在MCP配置中 - 重新启动克劳德桌面/您的MCP客户端
OAuth回调超时或“localhost:8787”无法加载
解决方案: 请改用手动令牌方法(请参阅上面的身份验证部分)。本地OAuth服务器需要端口8787可用,并且可能无法在沙盒环境中工作。
如果你需要OAuth:设置 MOONGATE_CALLBACK_PORT 连接到另一个端口,并确保其可访问。
调试日志
调试日志记录是 默认启用。要禁用它,请执行以下操作:
export MOONGATE_MCP_DEBUG=false
MCP检验员测试
MCP检查器提供了一个web UI来测试您的服务器:
npx @modelcontextprotocol/inspector node dist/cli.js
这将打开一个浏览器,您可以在其中:
- 查看所有可用工具
- 使用表单UI进行测试工具调用
- 实时查看请求/响应日志
- 无需Claude Desktop即可调试
贡献
欢迎投稿!请打开问题或PR。
许可证
麻省理工学院
链接
建于❤️ 索拉纳生态系统
