Algorand远程MCP
一个模型上下文协议(MCP)服务器,为AI代理提供与Algorand区块链交互的工具和资源。基于Cloudflare Workers构建,具有基于HashiCorp Vault的钱包管理和多提供商OAuth身份验证。
概述
Algorand Remote MCP通过标准化的MCP接口连接AI代理和Algorand区块链生态系统。它使人工智能系统能够管理钱包、创建和提交交易、通过DEX聚合器交换代币以及访问区块链数据——所有这些都不需要深厚的区块链专业知识。
这是一个 远程MCP 在Cloudflare Workers上运行的实现具有:
- HashiCorp保险库 用于安全的Ed25519密钥存储和交易签名
- 多提供商OAuth (谷歌、GitHub、推特、领英)用于用户身份验证
- algosdk v3.5.2 用于Algorand SDK操作
- Haystack路由器 跨Tinyman、Pact、Folks和LST协议实现最优价格的DEX聚合
- Tinyman SDK 用于直接DEX掉期操作
- Alpha Arcade SDK 用于预测市场交易(订单簿、限价/市价单、头寸)
快速开始
先决条件: Node.js v16+,OAuth帐户(谷歌、GitHub、推特或领英)
添加到MCP客户端配置中:
{
"mcpServers": {
"algorand-remote-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://algorandmcp.goplausible.xyz/sse"
]
}
}
}
重新启动LLM代理并提示:
Read Algorand MCP skill.
建筑
┌─────────────────────────────────────────────────────────────────────────────┐
│ AI Agents / LLM Clients │
│ (Claude, GPT, Cursor, Windsurf, etc.) │
└─────────────────────────────┬───────────────────────────────────────────────┘
│ MCP Protocol (SSE / Streamable HTTP)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Cloudflare Workers — Edge Runtime │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ OAuthProvider Layer │ │
│ │ Google · GitHub · Twitter · LinkedIn (Multi-provider) │ │
│ └───────────────────────────┬───────────────────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ AlgorandRemoteMCP (McpAgent / McpServer) │ │
│ │ │ │
│ │ ┌─────────────── Tool Managers ───────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ walletManager ─── accountManager ─── utilityManager │ │ │
│ │ │ transactionManager/ │ │ │
│ │ │ ├── generalTransaction (pay, sign, submit, keyreg) │ │ │
│ │ │ ├── assetTransactions (ASA create, optin, transfer) │ │ │
│ │ │ ├── appTransactions (create, update, delete, call) │ │ │
│ │ │ └── groupTransactions (atomic groups) │ │ │
│ │ │ algodManager ─── knowledgeManager │ │ │
│ │ │ arc26Manager ─── receiptManager ─── ap2Manager │ │ │
│ │ │ tinymanManager ─── alphaArcadeManager │ │ │
│ │ │ apiManager/ │ │ │
│ │ │ ├── algod/ (account, application, asset, txn queries) │ │ │
│ │ │ ├── indexer/ (search & lookup across all data types) │ │ │
│ │ │ ├── hayrouter/ (DEX aggregator — quote, swap, optin) │ │ │
│ │ │ └── nfd/ (Algorand Name Service lookups) │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────── Resources ───────────────────────────────────────┐ │ │
│ │ │ algorand://remote-mcp-skill (Skill definition) │ │ │
│ │ │ algorand://knowledge/taxonomy (Knowledge base) │ │ │
│ │ │ algorand://knowledge/taxonomy/{cat} (Category docs) │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────── Utils ───────────────────────────────────────────┐ │ │
│ │ │ ResponseProcessor (pagination, BigInt-safe JSON) │ │ │
│ │ │ vaultManager (Vault API client) │ │ │
│ │ │ Skill.js (skill content) │ │ │
│ │ └─────────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────── Cloudflare Bindings ────────────────────────────────────┐ │
│ │ Durable Objects (session state) · KV (OAuth tokens, client reg) │ │
│ │ R2 Bucket (knowledge documents) · Service Bindings (Vault worker) │ │
│ └────────────────────────────────────────────────────────────────────────┘ │
└──────────┬──────────────────┬──────────────────┬──────────────────┬─────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────────────┐ ┌────────────────┐ ┌────────────────┐ ┌───────────────┐
│ HashiCorp Vault │ │ Algorand Node │ │ DEX & Markets │ │ External APIs│
│ (CF Worker) │ │ (Algod + │ │ │ │ │
│ │ │ Indexer) │ │ Haystack │ │ NFD API │
│ Ed25519 keypair │ │ │ │ Router │ │ Pera API │
│ generation │ │ Nodely.io / │ │ ┌──────────┐ │ │ Alpha Arcade │
│ Transit engine │ │ AlgoNode │ │ │ Tinyman │ │ │ API │
│ signing │ │ │ │ │ Pact │ │ │ │
│ No private key │ │ MainNet / │ │ │ Folks │ │ │ │
│ exposure │ │ TestNet │ │ │ LST │ │ │ │
│ │ │ │ │ └──────────┘ │ │ │
└──────────────────┘ └────────────────┘ │ │ └───────────────┘
│ Tinyman SDK │
│ Alpha Arcade │
│ SDK │
└────────────────┘
组件摘要
- AlgorandRemoteMCP:主MCP代理在Cloudflare Workers上扩展McpAgent
- OAuthProvider:多提供商身份验证层(谷歌、GitHub、推特、领英)
- 工具经理:15名专业经理,负责账户、钱包、交易、资产、应用程序、API、DEX操作、预测市场、ARC-26 URI、收据、AP2协议和知识
- 资源提供程序:通过R2基于URI访问技能定义和知识库
- 响应处理器:具有分页和BigInt安全序列化的标准化响应格式
- HashiCorp保险库:Ed25519密钥对生成和通过Transit引擎进行安全签名——无私钥泄露
- Cloudflare绑定:会话状态的持久对象,OAuth的KV,知识文档的R2,Vault worker的服务绑定
工具
账户管理
| 工具 | 说明 |
|---|
sdk_create_algorand_keypair | 创建新的Algorand密钥对(不与钱包链接) |
sdk_mnemonic_to_address_and_secretkey | 从助记符中获取地址和密钥 |
sdk_address_to_public_key | 获取Algorand地址的公钥 |
sdk_check_account_balance | 在ALGO中检查账户余额 |
钱包管理
| 工具 | 说明 |
|---|
wallet_get_info | 获取帐户信息,包括地址、公钥、余额和资产(替换 wallet_get_address 和 wallet_get_publickey) |
wallet_get_role | 获取配置钱包的角色UUID,用于使用OIDC登录Hashicorp Vault |
wallet_get_assets | 获取钱包中持有的资产 |
wallet_reset_account | 重置钱包并生成新密钥(破坏性) |
wallet_logout | 从OAuth提供者注销 |
交易操作
| 工具 | 说明 |
|---|
sdk_txn_payment_transaction | 创建付款交易 |
wallet_sign_transaction | 使用保管库密钥签署交易 |
sdk_sign_transaction | 使用助记符签署交易 |
sdk_submit_transaction | 向网络提交已签名的交易 |
sdk_txn_key_registration_transaction | 创建密钥注册事务 |
sdk_assign_group_id | 为原子执行分配组ID |
sdk_create_atomic_group | 创建原子事务组(pay、axfer、acfg、appl、afrz、keyreg) |
wallet_sign_atomic_group | 使用vault密钥对原子组进行签名 |
sdk_sign_atomic_group | 用助记符在原子群上签名 |
sdk_submit_atomic_group | 提交已签名的原子组 |
sdk_send_raw_transaction | 提交原始签名交易 |
资产运营
| 工具 | 说明 |
|---|
sdk_txn_create_asset | 创建新的Algorand标准资产(ASA) |
sdk_txn_asset_optin | 选择加入ASA |
wallet_usdc_optin | 选择加入USDC的代理钱包(保险库签名) |
sdk_txn_transfer_asset | 转移ASA |
应用程序(智能合约)操作
| 工具 | 说明 |
|---|
sdk_txn_create_application | 创建新的智能合约 |
sdk_txn_update_application | 更新现有智能合约 |
sdk_txn_delete_application | 删除智能合约 |
sdk_txn_closeout_application | 退出应用程序 |
sdk_txn_clear_application | 清除应用程序状态 |
sdk_txn_call_application | 调用智能合约(noop、optin、close-out、clear、delete) |
sdk_optin_application | 选择加入应用程序 |
DEX-Haystack路由器(DEX聚合器)
| 工具 | 说明 |
|---|
haystack_get_swap_quote | 获得跨多个DEX和LST协议的最佳价格掉期报价 |
haystack_execute_swap | 执行优化的交换:报价、保管签名、提交、确认 |
haystack_needs_optin | 在交换之前,检查地址是否需要选择加入资产 |
DEX--Tinyman
| 工具 | 说明 |
|---|
tinyman_fixed_input_swap | 执行固定输入金额的掉期 |
tinyman_fixed_output_swap | 执行具有固定输出量的掉期 |
阿尔及利亚API
| 工具 | 说明 |
|---|
algod_get_account_info | 获取账户余额、资产和身份验证地址 |
algod_get_account_application_info | 获取特定帐户的应用程序信息 |
algod_get_account_asset_info | 获取账户特定资产信息 |
algod_get_application_info | 获取应用程序详细信息 |
algod_get_application_box_value | 获取应用程序框内容 |
algod_get_application_boxes | 列出应用程序框 |
algod_get_application_state | 获取应用程序全局状态 |
algod_get_asset_info | 获取资产详细信息 |
algod_get_asset_holding | 为账户获取资产持有 |
algod_get_pending_txn_info | 获取待处理交易详细信息 |
algod_get_pending_transactions | 从mempool获取待处理事务 |
Pera钱包资产验证
| 工具 | 说明 |
|---|
pera_asset_verification_status | 获取资产的验证状态 |
pera_verified_asset_details | 从Pera获取详细的资产信息 |
pera_verified_asset_search | 按名称、单位名称或创建者搜索已验证的资产 |
索引器API
| 工具 | 说明 |
|---|
indexer_lookup_account_assets | 获取账户资产 |
indexer_lookup_account_app_local_states | 获取帐户应用程序的本地状态 |
indexer_lookup_account_created_apps | 获取由帐户创建的应用程序 |
indexer_lookup_account_transactions | 获取帐户的交易记录 |
indexer_search_for_accounts | 使用筛选器搜索帐户 |
indexer_lookup_application_logs | 获取应用程序日志消息 |
indexer_search_for_applications | 搜索应用程序 |
indexer_lookup_asset_balances | 获取特定资产的持有者 |
indexer_search_for_assets | 搜索资产 |
indexer_lookup_transaction_by_id | 获取交易详情 |
indexer_search_for_transactions | 搜索交易记录 |
NFD(Algorand名称服务)
| 工具 | 说明 |
|---|
api_nfd_get_nfd | 按名称获取NFD域信息 |
api_nfd_get_nfds_for_address | 获取某个地址拥有的所有NFD域 |
TEAL运营
| 工具 | 说明 |
|---|
sdk_compile_teal | 编译TEAL源代码 |
sdk_disassemble_teal | 分解TEAL字节码 |
实用工具
| 工具 | 说明 |
|---|
sdk_validate_address | 检查Algorand地址是否有效 |
sdk_encode_address | 将公钥编码到地址 |
sdk_decode_address | 将地址解码为公钥 |
sdk_app_address_by_id | 获取应用程序ID的地址 |
sdk_verify_bytes | 根据字节验证签名 |
sdk_sign_bytes | 用密钥对字节进行签名 |
algorand_mcp_skill | 获得全面的Algorand MCP技能 |
ARC-26 URI和收据
| 工具 | 说明 |
|---|
generate_algorand_uri | 生成符合ARC-26的URI |
generate_algorand_qrcode | 为Algorand URI生成二维码 |
generate_algorand_receipt | 生成交易收据 |
AP2协议
| 工具 | 说明 |
|---|
generate_ap2_mandate | 使用可验证的凭据创建AP2意图、购物车或支付授权 |
阿尔法街机(预测市场)
| 工具 | 说明 |
|---|
alpha_get_live_markets | 获取所有实时预测市场(标题、价格、数量、多选选项) |
alpha_get_reward_markets | 用流动性奖励获取市场 |
alpha_get_market | 获取单个市场的完整详细信息(链上+API) |
alpha_get_orderbook | 具有点差计算的统一YES透视订单簿 |
alpha_get_open_orders | 获取特定市场钱包的未结订单 |
alpha_get_positions | 获取所有市场上的是/否代币头寸 |
alpha_create_limit_order | 下达限价订单(价格和数量以微单位计) |
alpha_create_market_order | 通过自动匹配和滑点下单 |
alpha_cancel_order | 取消未结订单并退还抵押品 |
alpha_amend_order | 就地编辑现有的未完成订单 |
alpha_propose_match | 建议在制造商订单和您的钱包之间进行匹配 |
alpha_split_shares | 将USDC拆分为相等的YES+NO结果代币 |
alpha_merge_shares | 将YES+NO代币合并回USDC |
alpha_claim | 通过兑换结果代币从已解决的市场中索赔USDC |
知识库
| 工具 | 说明 |
|---|
get_knowledge_doc | 获取知识文档的标记内容 |
list_knowledge_docs | 按类别列出可用的知识文档 |
资源
知识资源
| URI | 描述 |
|---|
algorand://knowledge/taxonomy | 知识资源的完整分类 |
algorand://knowledge/taxonomy/{category} | 特定类别的资源(arcs、sdk、algokit、puya等) |
技能
| URI | 描述 |
|---|
algorand://remote-mcp-skill | 全面的Algorand MCP技能 |
发展
先决条件
- Node.js v16+
- Cloudflare Workers帐户
- Algorand节点访问(例如Nodely.io/AlgoNode)
- OAuth凭据(谷歌、GitHub、推特和/或领英)
- HashiCorp Vault工作人员用于安全密钥管理
环境变量
ALGORAND_NETWORK=mainnet
ALGORAND_ALGOD=https://your-algod-node.com
ALGORAND_INDEXER=https://your-indexer-node.com
ALGORAND_TOKEN=your-api-token
NFD_API_URL=https://api.nf.domains
HAYSTACK_API_KEY=your-haystack-api-key
ALPHA_API_KEY=your-alpha-arcade-api-key # Optional, enables richer market data
ALPHA_API_BASE_URL=https://platform.alphaarcade.com/api # Optional, default shown
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
HCV_WORKER_URL=https://your-hashicorp-vault-worker.workers.dev
脚本
npm run dev # Start local development server
npm run type-check # Run TypeScript type checking
npm run deploy # Deploy to Cloudflare Workers
npm run format # Format code with Biome
npm run lint:fix # Lint and auto-fix with Biome
部署
- 克隆存储库
- 安装依赖项:
npm install - 在中配置环境变量
wrangler.toml - 部署:
npm run deploy
使用流程
认证
- 用户通过OAuth(谷歌、GitHub、推特或领英)进行身份验证
- 服务器从HashiCorp Vault创建或检索钱包凭据
- 用户通过MCP接口访问工具和资源
- 用户可以使用注销
wallet_logout
个别交易
- 创建交易(例如。,
sdk_txn_payment_transaction) - 用保险库签名(
wallet_sign_transaction)或助记符(sdk_sign_transaction) - 提交到网络(
sdk_submit_transaction)
原子事务组
- 创建组(
sdk_create_atomic_group) - 签名组(
wallet_sign_atomic_group 或 sdk_sign_atomic_group) - 提交组(
sdk_submit_atomic_group)
DEX通过Haystack路由器交换
- 获得最佳报价(
haystack_get_swap_quote) - 执行掉期操作——在一次通话中报价、保管签名、提交和确认(
haystack_execute_swap)
DEX通过Tinyman进行互换
- 执行固定输入或固定输出交换(
tinyman_fixed_input_swap / tinyman_fixed_output_swap)
通过Alpha Arcade预测市场
- 浏览市场(
alpha_get_live_markets) - 查看订单簿(
alpha_get_orderbook) - 下单(
alpha_create_limit_order 或 alpha_create_market_order) - 监视器位置(
alpha_get_positions)和未结订单(alpha_get_open_orders) - 管理订单--修改(
alpha_amend_order)或取消(alpha_cancel_order) - 从已解决的市场中索赔奖金(
alpha_claim)
项目结构
src/
├── index.ts # Main entry point
├── types.ts # Type definitions
├── oauth-handler.ts # OAuth authentication handler
├── workers-oauth-utils.ts # OAuth utilities
├── resources/
│ ├── skill/ # Skill resource
│ └── knowledge/ # Knowledge base resources
├── tools/
│ ├── accountManager.ts # Account management
│ ├── algodManager.ts # Algorand node tools
│ ├── ap2Manager.ts # AP2 protocol tools
│ ├── arc26Manager.ts # ARC-26 URI and QR tools
│ ├── knowledgeManager.ts # Knowledge base tools
│ ├── receiptManager.ts # Transaction receipt tools
│ ├── tinymanManager.ts # Tinyman DEX tools
│ ├── alphaArcadeManager.ts # Alpha Arcade prediction market tools
│ ├── utilityManager.ts # Utility tools
│ ├── walletManager.ts # Wallet management tools
│ ├── apiManager/
│ │ ├── algod/ # Algod API tools (account, application, asset, transaction)
│ │ ├── hayrouter/ # Haystack Router DEX aggregator tools
│ │ ├── indexer/ # Indexer API tools (account, application, asset, transaction)
│ │ └── nfd/ # NFD name service tools
│ └── transactionManager/
│ ├── generalTransaction.ts # Payment, signing, submission, key registration
│ ├── appTransactions.ts # Application (smart contract) transactions
│ ├── assetTransactions.ts # Asset create, optin, transfer
│ └── groupTransactions.ts # Atomic transaction groups
└── utils/
├── Skill.js # Skill content
├── vaultManager.ts # HashiCorp Vault integration
└── responseProcessor.ts # Response formatting and pagination
关键依赖关系
| 包装 | 版本 | 用途 |
|---|
algosdk | ^3.5.2 | Algorand JavaScript SDK |
@txnlab/haystack-router | ^2.0.5 | 最佳价格掉期的DEX聚合器 |
@tinymanorg/tinyman-js-sdk | ^5.1.2 | Tinyman DEX SDK |
@alpha-arcade/sdk | 最新 | 预测市场交易SDK |
@modelcontextprotocol/sdk | ^1.12.1 | MCP协议SDK |
agents | ^0.0.95 | Cloudflare代理SDK |
algo-msgpack-with-bigint | ^2.1.1 | 支持BigInt的MessagePack |
贡献
- 分叉存储库
- 创建特征分支:
git checkout -b feature/my-new-feature - 提交您的更改:
git commit -am 'Add some feature' - 推到分支:
git push origin feature/my-new-feature - 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。