内容
atrust/mcp-server
SignaTrust 文档签名 API 的模型上下文协议(MCP)服务器。支持 Claude 等 AI 信封、管理模板、检查签名状态和通过自然语言验证区块链。
## 快速入门
### Claude 代码
```bash
claude mcp add signatrust -- npx -y @signatrust/mcp-server
```
然后在 MCP 服务器环境中设置您的 API 密钥。
### Claude 桌面版
在您的 `claude_desktop_config.json` 中添加:
```json
{
"mcpServers": {
"signatrust": {
"command": "npx",
"args": ["-y", "@signatrust/mcp-server"],
"env": {
"SIGNATRUST_API_KEY": "sk_live_your_key_here"
}
}
}
}
```
### Cursor
在 `~/.cursor/mcp.json`(全局)或 `.cursor/mcp.json`(按项目)中添加:
```json
"mcpServers": {
"signatrust": {
"npx",
"args": ["-y", "@signatrust/mcp-server"],
"env": {
"SIGNATRUST_API_KEY": "sk_live_your_key_here"
}
}
}
```
### VS Code
在 `.vscode/mcp.json` 中添加(注意顶级键是 `servers`,而不是 `mcpServers`):
```json
{
"servers": {
"signatrust": {
"command": "npx",
"args": ["-y", "@ust/mcp-server"],
" {
"SIGNATRUST_API_KEY": "sk_live_your_key_here"
}
}
}
}
```
要将密钥从文件中分离出来,请使用输入提示代替 `env`:
```json
{
"inputs": [
{ "id": "signatrust-key", "type": "promptString", "description": "Trust API 密钥", "password": true }
],
" {
"signatrust": {
"command": "",
"args": ["-y", "@signatrust/mcp-server"],
"env": { "SIGNATRUST_API_KEY": "${input:signatrust-key}" }
}
}
}
```
## 可用工具
| 工具 | 描述 | 所需范围 |
-------------|---------------|
| `list_envelopes` | 列出信封,带状态筛选和分页 | `envelopes:read` `get_envelope` | 获取完整的信封详细信息(签名文档、区块链) | `envelopes:read` |
|_envelope` | 创建并发送签名。接受 ``(在 `upload_document` 之后)或 ``(后端复制模板)。支持三级 `securityLevel`。envelopes:write` |
| `list_templates` | 列出可用的文档模板 | `templates:read` |
| `` | 读取本地文件并将其上传到 SignaTrust,返回_envelope` 的文档 ID | `documents:write` |
| `download_document` | 获取有限时间的预签名 URL 以下载文档(例如已执行的 PDF) | `documents:read` |
| `analyze_document` | 对信封运行 AI 合同分析(Gemini 驱动的风险/情绪审查,计划门控) | `ai:analyze` |
| `verify_blockchain` | 验证 Solana 锚点并返回复合哈希 + 文件哈希 + 资源管理器 URLenvelopes: |
| `get` | 获取完整的证据包(信封、签名者、审计跟踪、区块链 | `envelopes:read` |
**三级安全。** `create_envelope` 接受 `securityLevel`:`STANDARD`(仅持有者令牌)、`VERIFIED`(添加 SMS/电子邮件 OTP — 推荐用于就业、供应商或医疗保健同意)或 `CERTIFIED`(添加 WebAuthn 生物识别 + 设备绑定 — 推荐用于房地产、高价值或监管签名) API 密钥范围
在 SignaTrust 仪表盘的 > API 密钥** 中创建 API 密钥。根据您需要的工具分配范围:
| 范围 |用的工具 |
|-------|--------------|
| `envelopes:read` | list_en, get_envelope, verify_blockchain, get_evidence |
envelopes:write` | create_envelope |
| `read` | list_templates |
| `documents:write` | upload_document |
| `documents:read` | download_document |
| `ai:analyze` | analyze_document |
## 环境变量
| 变量 | 必需 | 默认值 | 描述 |
|----------|----------|---------|------------- `SIGNATRUST_API_KEY` | 是 | - | 以 `sk_live_` 开头的 API 密钥 |
| `SIGNATRUST_API_URL` | 否 | `https://app.signatrust.io` | API 基本 URL |
## 自然语言示例
连接后,您可以向 AI 助手提出以下问题:
- "列出所有我的待处理信封"
- "上传 ~/Documents/nda.pdf 并将其发送到 alice@example.com,带有 VERIFIED 安全"
- "显示可用的模板,然后从住宅模板为 John Doe 创建租赁协议"
- "检查信封 env_abc123 的区块链验证并显示复合- "对信封 env_xyz 运行 AI 分析 — 我想知道在签署者审查之前是否有任何风险条款"
## 开发
```bash
# 安装依赖
npm install
# 构建
npm run build
# 运行测试
npm test
# 运行测试并覆盖
npm run test:coverage
# 类型检查
npm run typecheck
# 本地烟雾测试
SIGNATRUST_API_KEY=sk_live_xxx SIGNATRUST_API_URL=http://localhost:3000 node dist/server.js
```
## 架构
```
src/
server.ts # 入口点 — 环境验证、MCP 服务器设置、stdio 传输
handlers.ts # 工具定义和处理程序调度(可测试)
errors.ts # RFC 7807 ProblemDetails -> MCP 工具错误映射
vendor/signatrust-sdk/ # 供应商 HTTP 客户端 + 类型(零外部运行时依赖)
.ts # 协同
```
HTTP 类型在/vendor/signatrust 下作为供应商,以便该包除了 `@modelcontextprotocol/sdk外没有其他外部运行时依赖。