mcpField
S
Shodai Agreements

Shodai Agreements

远程服务
github.com/CNSLabs开发工具25 天前更新
代码仓库

关于 Shodai Agreements

Shodai Agreements 是面向编写和操作协议的客户端与 Agent 的 Agreements API MCP 服务。它转发对公共 API 的调用,并支持远程 Streamable HTTP 或本地 stdio。

主要功能

  1. 01列出协议并读取状态
  2. 02验证协议并进行部署前检查
  3. 03部署协议并提交输入
  4. 04准备供外部签名的 EIP-712 数据
  5. 05提供可发现的示例和文档资源
  6. 06使用协议编写提示词

适用场景

  1. 01查看协议文档和输入历史
  2. 02部署前验证协议
  3. 03准备供外部签名的部署许可数据
  4. 04提交已签名的协议输入

MCP 相关

它将 Agreements API 操作作为 MCP 工具提供,并提供可发现的资源和 `author_agreement` 提示词。支持托管式 Streamable HTTP 和本地 stdio 连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://shodai.network/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://shodai.network/mcp需要授权

工具

详细介绍

@shodai-network/agreements-mcp-server

面向 Agreements API 的 Model Context Protocol 服务。将 Shodai 配置为远程 Streamable HTTP MCP 服务后,便可通过 MCP 工具调用完整的协议生命周期——编写、验证、预检、部署和提交输入。

该服务仅通过 @shodai-network/agreements-api-client 调用公开的 /v0 API,不包含业务逻辑,也不存储凭据:每次工具调用都会将调用方的 API 密钥或 OAuth 访问令牌转发到 Agreements API 网关,由网关负责身份验证、权限控制和用量计量。

托管端点

无状态 Streamable HTTP:仅支持 POST,返回 JSON,不使用服务端会话。使用以下托管配置约定:

Configure Shodai as a remote Streamable HTTP MCP server.

URL:
https://shodai.network/mcp

Auth:
Start the connection and complete Shodai browser sign-in and consent.

Tool environment:
testnet

Use this value as the environment argument on API-calling tools.

规范的托管端点会公布 Shodai 的测试网授权服务器。支持 OAuth 的 MCP 客户端会按照 RFC 9728 执行受保护资源发现,打开浏览器进行授权,并使用获得的访问令牌重新连接。此 OAuth 连接请使用 environment: "testnet"。

设置 OAUTH_AUTHORIZATION_SERVERS 后,服务会:

  • 在 /.well-known/oauth-protected-resource(以及 .../mcp)提供 RFC 9728 受保护资源元数据
  • 使用 WWW-Authenticate(resource_metadata=...)质询未经身份验证的 POST /mcp
  • 除 API 密钥外,也接受 OAuth 访问令牌(Authorization: Bearer <jwt>)

仍支持使用 API 密钥作为回退方式和生产环境凭据。发送 Authorization: Bearer cns_pk_...,并确保密钥与工具的 environment 匹配:测试网密钥使用 testnet,生产环境密钥使用 production。

首次连接配置、工具访问和类型化数据准备请参阅:MCP 快速入门。

在本地运行(stdio)

{
  "mcpServers": {
    "shodai-agreements": {
      "command": "npx",
      "args": ["-y", "@shodai-network/agreements-mcp-server"],
      "env": {
        "AGREEMENTS_API_KEY": "YOUR_API_KEY",
        "AGREEMENTS_API_ENVIRONMENT": "testnet"
      }
    }
  }
}

Stdio 环境变量:

变量用途
AGREEMENTS_API_KEY(或 API_KEY)工具调用所用的 API 密钥。除非已配置 OAuth 客户端凭据,否则此项必填。
OAUTH_CLIENT_ID / OAUTH_CLIENT_PRIVATE_JWK面向 Agent 身份的 OAuth 客户端凭据身份验证;服务会自行签发并刷新 Bearer 令牌。可替代 AGREEMENTS_API_KEY(若两者都已设置,则优先使用后者)。
OAUTH_ISSUER_URL(或 OAUTH_TOKEN_URL)用于令牌端点发现的授权服务器发行者,或明确指定的令牌端点。使用 OAuth 客户端凭据时必填。
OAUTH_SCOPE可选,以空格分隔要在签发令牌时请求的权限范围。
AGREEMENTS_API_ENVIRONMENTtestnet(默认值)或 production。
AGREEMENTS_API_BASE_URL明确覆盖网关源地址。优先级高于环境设置。
AGREEMENTS_SIGNER_PRIVATE_KEY可选的本地许可签名密钥,用于写入工具(仅限开发/测试网)。
INFURA_PROJECT_IDInfura 项目 ID,用于为内置的 Linea、Sepolia 和 Base 协议链推导 RPC URL。
AGREEMENTS_RPC_URL、AGREEMENTS_RPC_URL_<chainId>可选的 RPC 覆盖项,用于准备或签署许可。

工具

大多数工具通过 TypeScript 客户端调用公共 /v0 API,并携带 MCP 行为注解(readOnlyHint、destructiveHint)。少数工具会执行多项操作,以确保签名和部署安全。

在托管端点上,以下每个调用 API 的工具都需要 environment: "testnet" | "production"。本地 stdio 模式则使用 AGREEMENTS_API_ENVIRONMENT 指定的固定环境。

工具封装的 API权限范围
list_agreementsGET /v0/agreementsagreements.read
get_agreementGET /v0/agreements/{id}agreements.read
get_agreement_documentGET /v0/agreements/documents/{documentId}agreements.read
get_agreement_stateGET /v0/agreements/{id}/stateagreements.read
get_input_historyGET /v0/agreements/{id}/inputsagreements.read
validate_agreementPOST /v0/agreements/validate-templateagreements.write
preflight_deploymentPOST /v0/agreements/validateagreements.write
deploy_agreementPOST /v0/agreements/validate,然后调用 POST /v0/agreements/deploy-with-permitagreements.write
submit_inputPOST /v0/agreements/{id}/inputagreements.write
prepare_deployment_typed_dataPOST /v0/agreements/validate,然后本地构造 EIP-712 载荷并读取链上 nonceagreements.write
prepare_input_typed_dataGET /v0/agreements/{id},然后本地构造 EIP-712 载荷并读取链上 nonceagreements.write

可通过 resources/list 发现资源:

资源URI
simple-example-agreementagreements://examples/simple-agreement.json
complex-example-agreementagreements://examples/complex-agreement.json
authoring-guideagreements://docs/author-agreement-json.md
docs-indexagreements://docs/index.md

提示词:author_agreement(业务描述 → 协议 JSON)。

签名托管模式

部署和提交输入需要 EIP-712 授权签名。支持以下三种模式:

  1. 预签名授权 — Agent 或宿主应用持有钱包,在外部签名,然后将 signer/deadline/signature 传递给 deploy_agreement 或 submit_input。
  2. 准备类型化数据,在外部签名 — 调用 prepare_deployment_typed_data / prepare_input_typed_data 获取准确的 EIP-712 载荷,使用任何支持 EIP-712 的签名器签名,然后调用写入工具。对于部署,将返回的 normalizedInitValues、normalizedParticipants 和 normalizedObservers 连同签名一起传回 deploy_agreement。
  3. 本地环境签名器(仅限 stdio) — 设置 AGREEMENTS_SIGNER_PRIVATE_KEY,写入工具即可在本地签名。适用于开发和 testnet 流程;托管端点绝不会使用服务器端密钥签名。

最简托管流程:读取 simple-example-agreement,调用 validate_agreement、preflight_deployment,再调用 prepare_deployment_typed_data,并传入 environment/agreement/chainId/signerAddress 及预期的部署上下文;在外部签名后,调用 deploy_agreement,并传入相同的 environment、displayName、匹配的 docUri、规范化后的部署字段及授权签名字段。对于输入,调用 prepare_input_typed_data 并传入 environment/agreementId/inputId/values/signerAddress,在外部签名后使用相同的 environment 调用 submit_input,然后重新读取状态和输入历史。

托管 MCP 只接收已签名的授权字段,绝不会接收私钥。使用私钥环境变量签名仅适用于本地 stdio 开发和 testnet 自动化。

自托管

npm install @shodai-network/agreements-mcp-server
agreements-mcp-server-http   # Streamable HTTP on PORT (default 3905), endpoint /mcp

HTTP 环境变量:PORT、HOST、MCP_PATH、PUBLIC_MCP_URL、AGREEMENTS_API_TESTNET_BASE_URL、AGREEMENTS_API_PRODUCTION_BASE_URL,以及用于单源测试的可选本地 AGREEMENTS_API_BASE_URL。如果发现元数据应公布与请求主机不同的规范公共端点,请设置 PUBLIC_MCP_URL。

已包含用于容器部署的 Dockerfile。GET /healthz 用作健康检查端点。

开发

pnpm install
pnpm --filter @shodai-network/agreements-mcp-server build
pnpm --filter @shodai-network/agreements-mcp-server test

使用 MCP Inspector 进行交互式验证:

npx -y @modelcontextprotocol/inspector@latest --cli http://localhost:3905/mcp \
  --transport http --method tools/list --header "Authorization: Bearer $SHODAI_API_KEY"

固定使用 @latest:较旧版本的 Inspector 不支持对 URL 目标使用 --transport/--header。

许可证

MIT — 请参阅 LICENSE。请注意,此软件包单独采用 MIT 许可;此仓库中的其他软件包采用 Apache-2.0 许可。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。