协议工具服务器

一个将Linkdfund智能合约层桥接到任何MCP兼容AI客户端的Node.js/TypeScript服务器,提供非托管协议工具和接口。

  • by Linkd-Fund
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Linkd-Fund/linkd-mcp-server

使用说明

linkd mcp服务器

Node.js/TypeScript——模型上下文协议服务器,将Linkdfund协议工具暴露给AI代理。

[!重要] 非托管监管免责声明:该软件作为一套非监护协议工具和接口提供。它不提供金融服务、投资建议或资产管理。所有交易签名和私钥管理都由用户在本地处理。此实现旨在与 肯尼亚《2025年VASP法案》 非监护分散协议标准。

这是什么

将Linkdfund智能合约层连接到任何兼容MCP的AI客户端(Claude Desktop、Claude Code、自定义代理)。它

  1. 将Soroban合约操作作为可调用工具公开——每个操作都返回一个base64 XDR信封,而不是一个签名的交易。
  2. 提供 audit_expenditure_anchor 用于支出包的跨层加密验证。
  3. 在stdio传输上运行——没有HTTP端口,没有持久进程,没有身份验证表面。

它包起来了 linkd-ts-sdk。它不包含自己的业务逻辑。

源结构

src/
  index.ts    Single file — MCP server, tool registry, all handlers

暴露的工具

工具 需要授权 返回 描述
init_escrow 管理员密钥对(外部) XDR字符串 使用角色和令牌初始化Soroban托管合同
add_milestone 管理员密钥对(外部) XDR字符串 附加资金里程碑
deposit_funds 捐赠者密钥对(外部) XDR字符串 将SEP-41代币锁定到托管中
submit_proof NGO密钥对(外部) XDR字符串 将KRA eTIMS/IPFS证明哈希附加到里程碑
approve_ngo NGO密钥对(外部) XDR字符串 NGO加密签收里程碑
approve_auditor 审计员密钥对(外部) XDR字符串 审计员加密签名——如果非政府组织也批准,则触发资金释放
refund_milestone 管理员密钥对(外部) XDR字符串 取消停滞的里程碑,将资金路由到退款地址
get_escrow_status 无 文本报告 链上实时读取:托管总量、里程碑计数、满状态
audit_expenditure_anchor 无 JSON审计报告 重新计算捆绑包哈希并根据Stellar Memo.hash进行验证

所有XDR返回工具都会生成信封,在提交之前必须在外部签名。

audit_expenditure_anchor --跨层完整性检查

这个工具是防篡改的。给定一个支出包及其声称的Stellar交易哈希,它:

  1. 重新计算 generateExpenditureHash(invoiceNumber, amount, supplierName, donorIds) --确定性
  2. 通过以下方式从Horizon获取Stellar交易 stellarTxHash
  3. 解 MEMO_HASH (base64→ hex)
  4. 将计算哈希与链上哈希进行比较
{
  "audit_passed": true,
  "expected_hash": "a3f9...",
  "on_chain_hash": "a3f9...",
  "variance_detected": false
}

variance_detected: true 意味着支出包被篡改或提供了错误的TX哈希。

已知限制:目前的执行情况 src/index.ts 将原始捐赠者ID直接传递给 generateExpenditureHash() 而不是通过路由 generateAnonymizedExpenditureHash()这会产生一个与锚定哈希值不同的哈希值 linkd-app (在哈希之前匿名化捐赠者ID)。这 audit_passed 结果将是 false 用于任何实际锚定支出,直至纠正为使用 generateAnonymizedExpenditureHash().

设置和部署

先决条件

linkd-ts-sdk 必须在此包之前构建:

cd ../linkd-ts-sdk && npm run build

安装和构建

npm install
npm run build    # Compiles to dist/ — required before connecting to Claude Desktop

发展

npm run dev    # ts-node watch mode

Claude桌面集成

添加 claude_desktop_config.json:

{
  "mcpServers": {
    "linkd-protocol": {
      "command": "node",
      "args": ["/absolute/path/to/linkd-mcp-server/dist/index.js"]
    }
  }
}

运输

StdioServerTransport --通过stdin/stdout进行通信。没有网络侦听器。没有端口。没有身份验证表面。

Zod验证

所有工具输入在到达之前都经过Zod验证 linkd-ts-sdk。验证错误以结构化文本的形式返回,以便代理可以自我更正:

Argument Validation Failed: [ZodError details]
Runtime Error: [message]

不要抓住并吞下这些——它们是代理的反馈回路。

网络

硬编码为 testnet 在 src/index.tsThe audit_expenditure_anchor 刀具命中 https://horizon-testnet.stellar.org.

主网部署前:更改 network: "testnet" → network: "mainnet" 并更新Horizon URL。这是唯一需要的更改。

依赖链

linkd-mcp-server
  └── linkd-ts-sdk (local — file:../linkd-ts-sdk — must be built first)
  └── @modelcontextprotocol/sdk
  └── @stellar/stellar-sdk ^14.5.0
  └── zod

版本差异: linkd-mcp-server 取决于 @stellar/stellar-sdk ^14.5.0 当 linkd-ts-sdk 用途 ^13.3.0这是一种潜在的不相容性。Stellar SDK在次要版本之间有突破性的变化。在主网部署之前,必须对齐这两个包。

如果 linkd-ts-sdk 更改,运行 npm run build 在 linkd-ts-sdk/ 首先,然后重建此包。

安全

此服务假定与调用AI代理或客户端应用程序存在信任关系。它通过SDK保证XDR有效载荷的结构有效性,并通过Zod模式防止执行停止。商业逻辑 当 调用这些工具必须由父应用程序的智能层控制。

许可证

专有的。保留所有权利。