itsnevu/mcp

GitHub: itsnevu/mcp

该工具直接读取 Robinhood Chain 的链上合约数据,提供 rug 检查和风险披露,并作为 CLI 和 MCP 服务器为 AI 代理提供一致的链上事实来源。

Stars: 0 | Forks: 0

# Bugglo — 针对 Robinhood Chain 的代理型 AI (Next.js) 一个针对 Robinhood Chain 的聊天 UI — 使用 **Next.js (App Router) + React** 构建,外加一个 仅通过 **RobinX engine + robinx-mcp** 进行回复的 API 路由。 本代码库是一个 npm workspace。除了 Web 应用程序外,它还发布了两个 包含相同链上读取引擎的包,这样应用程序、终端和代理就不会 在合约到底是什么的问题上产生分歧: | Package | 描述 | |---|---| | [`bugglo`](packages/bugglo/) | CLI + 库。`npx bugglo
` — 无需账号,无需 API key,无需后端。 | | [`bugglo-mcp`](packages/bugglo-mcp/) | 同样的引擎作为 MCP 服务器,供 Claude Desktop / Cursor / 你自己的代理使用。 | ``` npx bugglo 0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1 ``` 两者均为 MIT 协议,并在 `/docs/bugglo-cli` 中有详细文档。它们不依赖于本应用中的任何内容 — `bugglo` 仅引入 viem 而无其他依赖,因为 `npx` 的冷启动就是 全部的惊艳时刻预算。 ## ▶️ 运行指南 ``` npm install # once npm run dev # open http://localhost:3000 ``` 生产环境构建:`npm run build && npm start`。 ## ✨ 功能 | 功能 | 说明 | |---|---| | 📈 滚动行情条 | 顶部滚动显示实时价格条(悬停时暂停,无缝循环) | | 💬 多重聊天记录 | 持久化到 `localStorage`;可重新打开和删除 | | ⌨️ 斜杠命令 | 输入 `/` → `/rugcheck`、`/trending`、`/sentiment`、`/wallet`、`/fud`、`/moving`、`/help`(使用 ↑ ↓ Enter 导航) | | 🛡️ 丰富的小部件 | Rug-check 报告 + 风险仪表盘、趋势表 + 迷你图、情绪柱状图、钱包数据磁贴 | | 🎙️ 语音输入 | Web Speech API (Chrome/Safari);再次点击停止 | | ⏹️ 停止生成 | 该按钮在加载/输入期间会变为停止控制按钮,并且也会取消请求(AbortController + 20秒超时) | | 🔌 状态胶囊 | 区分 `Live data`、`Live ready`、tools-offline 和 `Backend offline` | | ⚙️ 设置 | 主题、界面语言、外部后端 URL + 连接测试、清除所有聊天 | | 🌐 语言 | 英语、中文、Español、日本語、한국어 — 覆盖整个应用外壳,而不仅仅是少数字符串 | | 📋 复制和时间戳 | 悬停/聚焦代理回复以显示复制按钮;每条消息都有时间戳 | | 🌗 浅色/深色主题 | 持久化保存,刷新时无闪烁 | | 📲 可安装的 PWA | Manifest、192/512 图标、service worker、离线回退 | | ⌘K / ⇧⌘, / Esc | 从任意位置聚焦输入框;打开设置;Esc 关闭菜单和模态框 | | 📱 移动端 | 侧边栏在背景后自动折叠;布局和小部件自适应 | 代码经过了强化处理,可防范在回复仍在流式传输时切换聊天引发的竞态条件、 格式错误的后端响应结构、IME composition、损坏的 `localStorage` 状态、API 速率限制,以及绝不能演变成凭空捏造市场数据的生产环境宕机。 ## 🌐 添加或更改语言 语言环境文件位于 [lib/locales/](lib/locales/) 中,每种语言一个文件,每个文件以 BCP-47 代码作为键。`en.js` 是事实来源。 1. 将你的键添加到 `lib/locales/en.js` 中。 2. 将它们镜像同步到所有其他的语言环境文件中。 3. 在 [lib/i18n.js](lib/i18n.js) 的 `LANGUAGES` 中注册该语言。 如果某个语言环境缺少键、增加了键或删除了 `{token}` 占位符,`npm test` 将导致构建失败 — 因此半途而废的翻译语言环境无法发布。在组件中, 对于纯文本调用 `t("some.key")`,当一个 token 必须解析为 React 元素时,调用 `tRich("some.key", { link: })` (正是这一点让每种语言都能根据其自身的语法习惯 放置链接)。 代理提示词(`q`/`template` 字段)无论 UI 语言如何,都特意保持为英文 — 只有用户阅读的内容才会被翻译。 ## 🔌 连接 RobinX engine + robinx-mcp (live mode) 1. 创建 `.env.local`: echo 'AUTH_SECRET=replace-with-long-random-secret' >> .env.local echo 'NEXT_PUBLIC_GOOGLE_CLIENT_ID=...' >> .env.local echo 'GOOGLE_CLIENT_ID=...' >> .env.local # 引擎 — 这三者均为必填项,没有任何一项有默认值 echo 'ROBINX_ENGINE_KEY=...' >> .env.local echo 'ROBINX_ENGINE_URL=...' >> .env.local # 兼容 OpenAI 的 chat-completions 基础 URL echo 'ROBINX_ENGINE_MODEL=...' >> .env.local # 你的提供商指定的模型 ID # 可选: echo 'ROBINX_WALLET_KEY=0x...' >> .env.local echo 'ROBINX_MAX_USD_PER_CALL=0.10' >> .env.local 2. 运行应用程序。一旦设置了全部三个 `ROBINX_ENGINE_*` 变量,`/api/chat` 就会使用 engine + RobinX MCP。漏掉其中任何一个,该路由都会返回 `503`,而不是 凭空捏造的市场数据。 3. **该引擎按 token 收费,因此 `/api/chat` 是计量计费的。** 请求受到 每分钟、每小时和每天的限制,并且每天的支出以美元为上限进行限制 — 针对单个用户和 全局。超过任何限制,路由都会返回 `429 { busy: true }` 而不是回答, 因为向询问关于自己资金的真实问题的人悄悄提供 捏造的数据,比什么都不提供更糟糕。这些限制及其默认值记录在 [lib/rateLimit.js](lib/rateLimit.js) 的顶部;它们全部都可以通过环境变量进行调节。 4. UI 能理解的 API 契约: POST /api/chat { message, mode, history[], attachments[], incognito } → { reply, source: "live", backend, degraded? } → 429 { error, busy: true, retryAfterMs } 当超过限制时 → 503 { error, unavailable: true } 当生产环境 live 无法回答时 GET /api/health?probe=1 → { ok, service, mode, capabilities, observedAt, uptimeSeconds } GET /api/usage → { ok, user, usage } 经过身份验证的配额快照 有效的响应类型会被渲染为小部件(仪表盘、迷你图等); 格式错误的响应不会破坏 UI(参见 [lib/text.js](lib/text.js) 中的验证)。 ## 📁 结构 ``` app/ layout.js ← root layout + theme restore before first paint page.js ← main page globals.css ← all styling (dark/light design tokens) api/chat/route.js ← chat endpoint + engine/MCP wiring + spend guard api/health/route.js ← health check behind the status pill components/ HoodScopeApp.jsx ← top-level state + send/stop/history orchestration AuthGate.jsx ← Google + wallet login, guest mode Sidebar.jsx ← recents, suggested prompts, user menu InputBar.jsx ← input, mode dropdown, slash commands, mic ChatView.jsx ← messages + typewriter effect Widgets.jsx ← rugcheck/trending/sentiment/wallet widgets SettingsModal.jsx ← settings (general, appearance, language, backend, data) TickerTape.jsx ← live price ticker SvgSprite.jsx ← SVG icons lib/ i18n.js ← locale registry, {token} interpolation, legacy migration I18nContext.jsx ← I18nProvider, useI18n() → t / tRich locales/ ← en, zh, es, ja, ko text.js ← mini markdown renderer, reply validation, text utils commands.js ← slash command list chainData.js ← app-side wrapper over the `bugglo` package packages/ ← published to npm; no dependency on the app bugglo/ ← chain.js (the engine) + cli.js + report.js bugglo-mcp/ ← MCP adapter over `bugglo`. Seven tools, chain 4663 only. ``` ## ✅ 验证 ``` npm run verify # lint + tests + production build ``` ## ⚠️ 重要说明 - **Live 工具需要花钱**:某些 RobinX MCP 工具使用 x402/USDC。如果没有 `ROBINX_WALLET_KEY`,付费工具可能会返回价格探测而不是数据。
标签:AI智能体, IPv6支持, MCP, MITM代理, Web3, 区块链, 智能合约审计, 自定义脚本, 风险检测