输入检索需求或案件材料,AI 自动拆解法律议题,覆盖式召回相关法律法规、司法解释的条文原文及出处。
Model Context Protocol · 2025-11-25 / 2026-07-28
一个端点,五种法律工具,复制即用
MCP Streamable HTTP 端点:粘贴配置即可让 WorkBuddy、Cursor、Claude Code、Codex、VS Code 等 AI 工具 调用法律问答、法条检索、合同审查与文书生成。无需写集成代码,AI 会在需要时自动调用对应工具, 并引用真实法条原文。
{
"mcpServers": {
"accurlex": {
"type": "http",
"url": "https://accurlex.com/mcp/stream",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
# 推荐:Key 保存在环境变量中,不写入配置文件
# 终端执行: export ACCURLEX_API_KEY=ak_live_YOUR_API_KEY
[mcp_servers.accurlex]
url = "https://accurlex.com/mcp/stream"
bearer_token_env_var = "ACCURLEX_API_KEY"
enabled = true
Cursor 项目配置位于 .cursor/mcp.json;Claude Code 与 VS Code 可使用项目根目录 .mcp.json。VS Code 若使用 .vscode/mcp.json,请将外层键名改为 servers。
* Key 在控制台创建后仅展示一次,请妥善保存;不要把它提交到公开仓库或写入前端代码。Codex 也支持改用 http_headers 直接写 Authorization 头。
端点与协议
| 项目 | 说明 |
|---|---|
| 端点 | POST https://accurlex.com/mcp/stream |
| 协议 | 精确支持 MCP 2025-11-25 与 2026-07-28,共用 Streamable HTTP 端点。2025 版会话由客户端自动管理,无需手动配置;2026 版使用无状态请求 |
| 认证 | 请求头 Authorization: Bearer ak_live_... |
| 流式 | 支持 SSE 流式返回与进度通知;客户端只接受 JSON 时返回单个 JSON 结果 |
| Accept 头 | 建议同时携带 application/json 与 text/event-stream;2025 请求须至少接受其中一种,2026 请求不带 SSE 时返回单条 JSON 结果 |
| 计费口径 | 与 REST v1 完全一致:每日免费额度、点数计费、促销活动均按 API Key 记账。会话隔离不代表业务去重;重新发起调用可能重复计费,请避免自动重试付费调用 |
| 请求体上限 | 单次请求不超过 2MB,超限返回 HTTP 413 + JSON-RPC -32000 |
| 取消语义 | 2026-07-28 断连即取消;2025-11-25 断连后原调用继续执行,客户端须发送 notifications/cancelled 显式取消,且不得自动重放付费请求 |
| 兼容性 | 精确支持 2025-11-25 标准 initialize 生命周期和现有 2026-07-28 协议。首次 initialize 可提出其他版本,服务端返回 2025-11-25;客户端须支持并使用返回版本继续请求。 |
可用工具
5 个 MCP Tool,对应开放平台全部能力
接入后一次性获得全部工具。AI 会根据你的问题自动选择合适的工具;工具的计费与额度规则和 REST API 完全一致。
isError,并在错误详情中给出缺少的 scope 名称;前往控制台修改 Key 权限即可。
提交法律问题(可附带背景材料与多轮历史),AI 基于 Neo-RAG 引擎检索相关法条后生成分析回答。
提交合同全文并指定审查立场(例如“我是买方,重点审查付款与违约条款”),AI 逐条分析风险、引用相关法条并生成审查意见。
根据文书类型和案件事实,生成起诉状、答辩状、代理词等法律文书草稿,可直接作为初稿继续修改。
查询当前 API Key 最近 30 天的调用次数、输入字符数、消耗点数及最新 50 条调用记录。不消耗点数,任意有效 Key 均可调用。
接入指南
常用客户端怎么配
Cursor / VS Code
- 打开 MCP 设置,Cursor 项目配置使用
.cursor/mcp.json) - 添加 Server,类型选择
HTTP - 粘贴 JSON 配置,替换 API Key
- 重启编辑器会话
Claude Code / Codex CLI
- Claude Code 在项目根目录创建
.mcp.json - Codex 在
~/.codex/config.toml粘贴 TOML - 重启会话,直接提问法律问题
- 可用
/mcp(Claude Code)或codex mcp list检查连接
Trae / 其他桌面客户端
- 设置中找到 MCP / 连接器管理
- 添加自定义 MCP Server,类型选
HTTP(Streamable) - 填入 URL 与
AuthorizationBearer 头 - 保存后刷新工具列表
WorkBuddy / 连接器平台
- 审核上架后在连接器市场添加 accurLex;调试阶段可导入连接器包
- 在密码输入框填写开放平台 API Key
- 平台按
2025-11-25自动完成 initialize 与工具发现 - 连接成功后先用“查询账户用量”做免费验证
开始使用
还没有 API Key?先创建一个
登录 accurLex 账号,在控制台创建 API Key 并勾选所需权限,然后复制上方配置到你的 AI 工具即可。从创建到能用,通常不超过两分钟。
常见问题
接入前最常问的几个问题
支持哪些 MCP 客户端?
支持 WorkBuddy 等使用标准 2025-11-25 initialize 握手的客户端,也支持使用 2026-07-28 扩展协议的 Cursor、Claude Code、Codex、VS Code、Trae、Dify 等客户端。仅支持这里列出的两个协议版本。
配置后工具报错 / 不可用怎么办?
MCP 怎么计费?和 REST API 一样吗?
计费规则一致。问答 deep、法条 deep、法条 expert 限免期间各有每账号每天 100 次独立额度,同账号所有 Key、API 与 MCP 共用对应额度;其他付费调用按点数计费。用量按 API Key 分别记录,详见用量页。MCP 本身不额外收费。
旧版 npx stdio 包还能用吗?
不能。旧的 accurlex-mcp-server(stdio 方式)已退役下线,请使用本页的 Streamable HTTP 方式接入。新接入的客户端请直接复制上方配置。
协议参考
Streamable HTTP 接口规范
以下即线上 POST https://accurlex.com/mcp/stream 的实际行为:
支持的方法、请求头、响应格式、错误码与限流规则。
支持的方法
| 方法 | 说明 | 响应 |
|---|---|---|
initialize |
仅 2025-11-25:标准版本协商与客户端信息握手 |
protocolVersion、capabilities.tools、serverInfo、instructions |
server/discover |
仅 2026-07-28:返回该扩展协议支持的版本、能力与服务说明 |
supportedVersions、capabilities、instructions、ttlMs、cacheScope |
ping |
仅 2025-11-25:连接探测,不创建业务任务或用量 |
空 result |
tools/list |
列出 5 个可用工具及 JSON Schema | 两个版本均返回 tools;ttlMs、cacheScope 仅属于 2026 扩展 |
tools/call |
调用工具;Mcp-Name 仅 2026 必填;可选 progressToken(放在 params._meta) |
两个版本均返回 content、structuredContent、isError;2026 另含扩展字段 |
notifications/initialized / notifications/cancelled |
仅 2025-11-25;通知不带 id,后者用于显式取消匹配中的请求 |
HTTP 202 空 body,不返回 JSON-RPC 响应 |
每个 POST 只接受一条 JSON-RPC 2.0 消息;批量数组返回 400 -32600。
请求头
| 头 | 必填 | 说明 |
|---|---|---|
MCP-Protocol-Version | 分版本 | 2025 的 initialize 可由 body 选择版本,后续请求必须为 2025-11-25;2026 请求必须为 2026-07-28 |
Mcp-Method | 仅 2026 必填 | 2026 必须与 body 的 method 一致;2025 客户端使用标准 JSON-RPC body method,无需此头 |
Mcp-Name | 仅 2026 tools/call 必填 | 必须与 body.params.name 一致;含非 ASCII 字符时按官方规则编码为 =?base64?<base64>?= |
Authorization | 业务调用必填 | Bearer ak_live_...,与 REST v1 同一套开放平台 API Key;2025 的 initialize、ping、tools/list 可匿名 |
Content-Type | 是 | application/json |
Accept | 建议 | application/json, text/event-stream;2025 须至少允许其中一种,2026 不带 SSE 时返回单条 JSON 结果 |
请求体与版本协商
- 请求体是单条 JSON-RPC 2.0 消息;批量数组不受支持,返回
400 -32600。 2025-11-25:首次initialize在params.protocolVersion声明版本;后续请求通过MCP-Protocol-Version头声明,不使用 2026 扩展字段。2026-07-28:版本放在body.params._meta['io.modelcontextprotocol/protocolVersion'](顶层_meta作为宽松回退也接受);与版本头不一致时返回-32020。- 请求体上限
2MB;超限返回 HTTP413+ JSON-RPC-32000,不会断连。
2025 标准 initialize 请求体
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": { "name": "workbuddy-compatible-client", "version": "1.0.0" }
}
}
2026 扩展 server/discover 请求体
{
"jsonrpc": "2.0",
"id": 1,
"method": "server/discover",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28"
}
}
}
响应格式
- SSE(
Accept含text/event-stream):连接建立后先发: connected;每条消息为event: message+data: <JSON-RPC>;tools/call带progressToken时先发notifications/progress(≥250ms 节流,progress为生成正文的 UTF-8 字节累计值,不是百分比或计费字符数),空闲时每 15 秒发: ping注释帧保活,最后发送最终响应并关闭流。 - JSON(
Accept不含text/event-stream):返回单条 JSON-RPC 响应。 - 通知(无
id):HTTP202空 body。
tools/call 成功结果字段
| 字段 | 说明 |
|---|---|
resultType | "complete",仅 2026-07-28 扩展结果包含 |
content | [{type:"text", text}],最终回答文本 |
structuredContent | 结构化结果:answer(回答)、original_content(参考法条原文)、citations(法条引用)、warnings(提示)、mode、generation_id、request_id |
isError | false 为成功;true 为工具级失败(HTTP 仍为 200) |
调用示例
initialize(2025 标准握手,WorkBuddy 自动完成)
curl -sS -X POST "https://accurlex.com/mcp/stream" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"workbuddy-compatible-client","version":"1.0.0"}}}'
tools/list(2025 标准工具发现)
curl -sS -X POST "https://accurlex.com/mcp/stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
tools/call(2025 JSON 模式)
curl -sS -X POST "https://accurlex.com/mcp/stream" \
-H "Authorization: Bearer ak_live_YOUR_API_KEY" \
-H "MCP-Protocol-Version: 2025-11-25" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"accurlex_account_usage","arguments":{}}}'
server/discover(2026 扩展协议,JSON 模式)
curl -sS -X POST "https://accurlex.com/mcp/stream" \
-H "Authorization: Bearer ak_live_YOUR_API_KEY" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: server/discover" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}'
tools/call(2026 扩展协议,SSE 流式)
curl -sS -N -X POST "https://accurlex.com/mcp/stream" \
-H "Authorization: Bearer ak_live_YOUR_API_KEY" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/call" \
-H "Mcp-Name: accurlex_legal_qa" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"accurlex_legal_qa","arguments":{"question":"合同约定的违约金过高时,可以请求法院调整吗?","mode":"deep"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","progressToken":123}}}'
SSE 响应(先进度通知,后最终结果)
: connected
event: message
data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":123,"progress":42,"message":"生成中…"}}
event: message
data: {"jsonrpc":"2.0","id":1,"result":{"resultType":"complete","content":[{"type":"text","text":"..."}],"structuredContent":{"answer":"...","original_content":"...","citations":[],"warnings":[],"mode":"deep","generation_id":"...","request_id":"..."},"isError":false}}
工具级失败(HTTP 仍为 200,靠 isError 判断)
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resultType": "complete",
"content": [{ "type": "text", "text": "API Key 无效或未启用对应 scope" }],
"structuredContent": {
"error": "scope_denied",
"message": "API Key 无效或未启用对应 scope",
"hint": "请在开放平台控制台确认 API Key 已启用 scope: qa_expert"
},
"isError": true
}
}
工具参数
accurlex_legal_qa 法律问答
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
question | string | 是 | 法律问题 |
mode | string | 否 | deep(默认,免费)或 expert(付费) |
context_text | string | 否 | 背景材料/案件事实,拼接在问题之前并计入字符数 |
history | array | 否 | 多轮历史:[{role:"user"|"assistant", content}] |
accurlex_law_search 法条检索
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
prompt | string | 是 | 检索需求或案件材料 |
mode | string | 否 | deep(默认,免费)或 expert(专家模式,限时免费) |
accurlex_contract_review 合同审查
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
contract_text | string | 是 | 待审查的合同全文 |
standpoint | string | 是 | 审查立场与要求,例如“我是甲方(买方),请重点审查付款条款和违约责任” |
accurlex_document_draft 文书生成
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
document_type | string | 是 | 文书类型,如“民事起诉状”“答辩状”“代理词” |
facts | string | 是 | 案件关键事实与诉求 |
followup_prompt | string | 否 | 补充要求或特别说明 |
accurlex_account_usage 用量自查
无参数。返回当前 API Key 最近 30 天的用量汇总 summary,以及最新 50 条调用记录 recent。
错误码
错误分两层:协议/传输层错误:顶层 JSON-RPC error 字段,HTTP 可能为 200 或 4xx;工具级错误:HTTP 仍为 200,
通过 result.isError === true 和 structuredContent.error 表达。
业务错误码
| 错误码 | 含义 | MCP 提示文字 |
|---|---|---|
upstream_rejected | 请提交与法律相关的问题 | 请勿闲聊或讨论无关话题。 |
empty_original_content | 未检索到相关内容 | 未检索到相关内容。 |
API_CALL_FAILED | 本次请求未能完成 | 本次请求未能完成,请稍后再试。 |
generation_incomplete | 本次请求未能完成 | 本次请求未能完成,请稍后再试。 |
internal_error | 本次请求未能完成 | 本次请求未能完成,请稍后再试。 |
这五种码在 result.structuredContent.error 中保留大小写和含义。工具调用失败使用既有 result.isError: true,HTTP 通常仍为 200;它与顶层 JSON-RPC 协议错误的数字 error.code 不同。
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resultType": "complete",
"content": [
{
"type": "text",
"text": "请勿闲聊或讨论无关话题。"
}
],
"structuredContent": {
"error": "upstream_rejected",
"message": "请勿闲聊或讨论无关话题。",
"statusCode": 200,
"refunded": true
},
"isError": true
}
}上例是付费合同调用拒识且已退款的示意。content[].text 和 structuredContent.message 对法律无关请求、未检索到内容分别给出上表中的具体提示,其余三种业务失败统一提示“本次请求未能完成,请稍后再试。”。收到前两种提示时,请补充或调整法律问题,避免反复提交相同输入。
用 isError 判断工具调用结果,statusCode 提供状态参考。refunded: true 表示付费点数已返还;免费/促销调用通过释放对应额度结算,该字段可为 false。
2025-11-25 继续使用标准 MCP 结果字段,不含 resultType;content、structuredContent 和 isError 的错误处理方式相同。SSE 通过最终 event: message 中的同一个 JSON-RPC 结果报告失败;进度通知不代表成功,也不是回答正文。
原文或部分回答后收到错误仍按失败结算。现有客户端沿用原请求地址、工具名、参数和协议版本,通过 isError 读取结果,无需更换配置。
协议层 JSON-RPC 错误码
| 协议 | JSON-RPC 错误码 | HTTP | 含义与处理 |
|---|---|---|---|
| 2026 | -32022 | 400 | 缺少或不支持协议版本;使用 2026-07-28 并保持请求头与 _meta 一致。 |
| 2026 | -32020 | 400 | MCP-Protocol-Version、Mcp-Method 或 Mcp-Name 与请求正文不一致;按调用方法校对。 |
| 两版 | -32700 | 400 | JSON 无法解析;检查请求格式。 |
| 两版 | -32600 | 400 | 消息格式无效;2025 还校验 JSON-RPC 版本、请求 ID、通知、initialize 参数和协议协商。 |
| 2025 | -32602 | 400 / 200 | params 不是对象或 initialize 参数无效时为 400;tools/call 缺少名称或 arguments 类型无效时为 200。修正参数后重新调用。 |
| 2025 / 2026 | -32601 | 200 / 404 | 该协议不支持此方法。2025 使用 initialize、ping、tools/list、tools/call;2026 使用 server/discover、tools/list、tools/call。 |
| 两版 | -32000 | 413 | 请求体超过 2 MiB;缩小输入。 |
| 2025 | -32600 | 406 | Accept 不包含 application/json 或 text/event-stream。 |
| 2025 | -32600 | 405 | 端点仅接受 POST;响应 Allow 为 POST。 |
HTTP 状态码
| HTTP | 场景 |
|---|---|
| 200 | 成功或工具级错误(isError) |
| 202 | 通知(无 id),空 body |
| 400 / 403 / 404 / 405 / 406 / 413 | 协议层错误,见上表 |
| 429 | IP 层限流,返回 {"error":"too_many_requests"}(普通 JSON,非 JSON-RPC) |
工具级错误码(structuredContent.error)
| error | 含义 | 处理建议 |
|---|---|---|
idempotency_payload_conflict | 相同幂等键对应不同请求内容 | 同一次操作重试保留原参数;新操作使用新键。 |
request_id_in_use | 2025 版中同一请求 ID 仍在执行 | 等待原调用完成;独立请求使用新的 JSON-RPC ID。 |
api_key_invalid | API Key 无效或未启用 | 到控制台检查 Key 状态 |
scope_denied | Key 缺少对应 scope(hint 会给出缺少的 scope) | 在控制台创建具备所需 scope 的新 Key,完成替换后停用旧 Key |
too_many_requests | 触发工具级限流 | 按下方限流表等待后重试 |
daily_quota_exceeded | 每日免费/促销额度已用尽(hint 区分) | 明日恢复,或切换付费模式 |
question_required / prompt_required / contract_text_and_standpoint_required / document_type_and_facts_required | 缺少必填参数 | 补齐必填字段 |
exceed_char_limit | 输入超过字符上限(limit 字段给出上限) | 按返回的 limit 缩短输入 |
unknown_tool | 工具不存在 | 检查 params.name |
server_not_configured | 服务暂时不可用 | 稍后重试,必要时联系支持 |
idempotent_replay | 相同幂等键和请求内容已有任务,未新增执行或扣费 | 保留原任务标识及首次响应;新操作使用新的幂等键 |
billing_failed 等计费结果码 | 点数不足或计费失败(statusCode 给出对应 HTTP 语义) | 到控制台查看点数/稍后重试 |
upstream_error / upstream_http_error / upstream_response_error / upstream_request_failed / proxy_timeout | 本次请求未能完成(statusCode / refunded 给出详情) | 已退款(refunded: true)可稍后重试 |
generation_absolute_timeout | 超过 20 分钟硬截止(statusCode: 504) | 精简输入后重试 |
cancelled | 任务被取消(statusCode: 499) | 2026 断连即取消;2025 需发送 notifications/cancelled 显式取消 |
usage_query_failed | 用量查询失败 | 稍后重试 |
result.isError;
不要仅凭 HTTP 200 判定调用成功。
额度、计费与限流
| 工具 | 模式 | 计费 | 字符上限 |
|---|---|---|---|
accurlex_legal_qa | deep | 免费(每账号每日 100 次) | 10,000 |
accurlex_legal_qa | expert | 付费 5 点起 | 30,000 |
accurlex_law_search | deep | 免费(每账号每日 100 次) | 10,000 |
accurlex_law_search | expert | 限免期间每账号每日 100 次,至 2026-12-31;到期恢复 5 点起 | 30,000 |
accurlex_contract_review | — | 付费 10 点起 | 30,000(合同 + 立场合计) |
accurlex_document_draft | — | 付费 10 点起 | 30,000(全部字段合计) |
accurlex_account_usage | — | 免费,不消耗点数 | 无 |
计费阶梯与 REST v1 一致:输入超过 10,000 字符按 2 倍、超过 20,000 字符按 3 倍计点。问答 deep、法条 deep、法条 expert 限免期间各有每账号每天 100 次独立额度,同账号所有 Key、API 与 MCP 共用对应额度,上海时间 0 点更新。
取消与幂等
2026-07-28:SSE/JSON 连接关闭即取消;计费前断连不扣费,计费后断连自动退款,并在用量台账记为cancelled。2025-11-25:网络断开只停止响应写入,原调用继续执行并结算;需要取消时发送带原请求 ID 的notifications/cancelled,不得因断线自动重放付费请求。- 同一 API Key 下,相同 HTTP Idempotency-Key、接口和参数复用原任务,返回
idempotent_replay和任务标识,不新增执行或扣费,也不回放首次正文。同键不同内容返回 idempotency_payload_conflict。未传幂等键的重发可能再次计费。一次操作的重试复用原键;下一次独立操作换新键。相同问题本身不保证去重,JSON-RPC ID 用于关联响应;2025 版还会拒绝执行中重复使用的请求 ID。
限流
| 维度 | 窗口 | 上限 |
|---|---|---|
IP(mcp_stream) | 1 秒 | 20 |
工具级 mcp_stream_qa | 3 秒 | 6 |
工具级 mcp_stream_law_search | 3 秒 | 6 |
工具级 mcp_stream_contract_review | 5 秒 | 3 |
工具级 mcp_stream_draft | 5 秒 | 3 |
工具级 mcp_stream_usage | 5 秒 | 12 |
IP 层限流返回 HTTP 429 普通 JSON;工具级限流返回 isError: true + too_many_requests。