Pre-alpha 文档
在不削弱 Policy 的前提下暴露有界 MCP Server。
在严格 Stateless HTTP、Decoded Authorization 与精确证据后组合 StateKnot-owned Tools、Resources、Prompts、Completion 与 MRTR。
让 Policy 留在 Request Path 中
- 校验 Host、Origin、Version Metadata 与 Streaming Body Limit。
- 把 Bearer Credential 认证为有界 Principal。
- 应用调用方实现的 Cross-replica Admission 与 Quota Policy。
- 解码 JSON-RPC Operation;Transport Header 仍只是 Hint。
- 先授权,再披露存在性或 Schema Diagnostic。
- 校验 Input、带 Cancellation 执行,再校验 Result。
只要配置中存在非字面 Loopback Host,Anonymous Service 构建就会失败。公网部署 必须在边界启用 TLS、Bearer Authentication、显式 Host/Origin Allowlist 与共享 Admission 实现。
只声明已经配置的 Surface
| Surface | StateKnot Boundary |
|---|---|
| Tools | Immutable Executable Registry、Offline JSON Schema 2020-12 Input/ Output Validation、Progress、Cancellation 与 Bounded Content。 |
| Resources | Absolute URI/Template Validation、Authorization-first Read、 MIME/Base64 Limit 与显式 Result Cache Policy。 |
| Prompts | 唯一且有界的 Argument、Diagnostic 前授权,以及 Bounded Multi-content Message。 |
| Completion | Optional Capability;Authenticated Reference,最多 100 个唯一且 Pagination-consistent 的 Value。 |
| MRTR | 有界 Elicitation/Sampling/Roots Request,以及 Integrity-protected、 Expiring、Operation-bound Request State。 |
未配置 Surface 返回 Method-not-found。Builder 不会发布空 Placeholder Capability; 官方 Rust SDK 仍是 Private Wire Adapter,而不是 StateKnot Domain Model。
接收流量前冻结 Catalog
Tool Schema 在启动时 Offline 编译;未解析或网络 $ref 会使构建失败。
Tool、Resource、Template 与 Prompt Catalog 强制 Count/Byte Ceiling、拒绝重复、
确定性排序并暴露 Stable Digest。Scope-filtered Discovery 使用 Principal-bound
Cursor。只要存在 Scope-restricted Entry,Public Cache 就会被拒绝。
Description、Annotation、Schema、Server Instruction、Client Capability 与 Completion Value 都是不可信 Data,永远不会授予 Authority。
组合一个 Application
let options = McpServerApplicationOptions::new(
"inventory-mcp",
"1.0.0",
100,
Duration::from_secs(60),
McpServerCacheScope::Private,
)?;
let app = McpServerApplicationBuilder::new(options)
.with_tools(tool_registry, tool_authorization)?
.with_resources(resource_catalog, resource_reader, resource_authorization)?
.with_prompts(prompt_catalog, prompt_renderer, prompt_authorization)?
.with_completion_provider(completion_provider)?
.build()?;
let service = McpServerHttpService::with_admission_control(
app,
http_options,
McpServerAuthentication::bearer(authenticator, bearer_challenge),
admission_control,
)?;
把 Tower Service 挂载到一个精确的 Axum/Hyper Endpoint。Registry
只在启动时构建 一次,不能按 Request 重建。Application Authorization
必须使用解码后的 Operation, 不能使用 Mcp-Method 或 Mcp-Name Transport Hint。
复现证据
cargo test -p stateknot-integrations mcp_server_ --locked
bash conformance/mcp-server/run-2026-07-28.sh 固定 Runner 通过全部 37 个计分 Server Scenario:114 项 Assertion Success、5 项 Capability Check Skip、1 项 SSE Info、0 Failure、0 Warning。3 个 Pending 且 Unscored 的 Schema/Header Gate 另有 32 项 Success。官方 Fixture 验证生产 Transport;StateKnot Registry 与 Policy 另有 Real-HTTP Test。发布兼容性声明前, 请阅读精确 Claim Boundary。