AoifeLab Web 将渲染知识体系、特性库与 Shader 资产通过 Model Context Protocol 暴露给 Agent 平台,使 AI 能读取结构化数据并指导各引擎内的效果实现。
本文档为 MCP 子系统的完整开发计划,与 渲染验证与引擎落地技术选型 配套。
1. 总体目标
1.1 要解决的问题
当前网站已沉淀渲染知识框架、特性库与 HLSL 参考实现,但这些资产仅供人类浏览。Agent 无法:
- 按语义检索「透射」特性的输入、通道、参数契约
- 理解该特性在材质研发管线中的上下游位置
- 将语言无关的 Spec 翻译为 UE / Unity 等引擎的具体实现步骤
MCP 子系统的目标是打通 网站资产 → Agent 可读协议 → 引擎落地 的自动化链路。
1.2 成功标准
| 阶段 | 成功标准 |
|---|---|
| MCP 可读 | Cursor / Claude Desktop 等客户端可连接 /api/mcp,调用 Tool 返回 Canonical Spec |
| MCP 可发现 | 发布至 MCP Registry,可被下游聚合器搜索 |
| Agent 可指导 | Agent 凭 Spec + HLSL + 框架上下文,生成 UE Custom HLSL 落地步骤 |
| 闭环可验证 | 引擎落地后,结合 RenderDoc MCP 完成抓帧复核 |
1.3 总体架构
┌─────────────────────────────────────────────────────────────┐
│ 网站数据层(唯一真相源) │
│ framework-data · knowledge-data · mcp-feature-specs │
│ repo-feature-shaders · repo-feature-categories │
└──────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────▼──────────────────────────────────┐
│ MCP Server(/api/mcp · Streamable HTTP) │
│ Resources · Tools · Prompts │
└──────────────────────────┬──────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
MCP Registry Cursor / Claude 自建 Agent 平台
│ │ │
└────────────────┼────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 引擎翻译层(Engine Adapter) │
│ UE(首验)→ Unity → Godot … │
└──────────────────────────┬──────────────────────────────────┘
▼
引擎内验证(RenderDoc MCP)
2. 核心设计原则
| 原则 | 说明 |
|---|---|
| Spec 为契约 | Canonical Spec 是语言无关的特性定义;MCP 返回 Spec,不返回页面 HTML |
| 数据单源 | MCP Server 直接读取 lib/,不与页面维护两套内容 |
| 能力分层 | Resources(只读知识)/ Tools(检索与翻译动作)/ Prompts(预置工作流) |
| 验证门控 | validated 标记控制 MCP 推荐优先级;未验证特性返回 draft 状态 |
| UE 优先 | 首条引擎落地链路面向 UE;HLSL 资产与 translate_to_engine 先适配 UE |
| 渐进暴露 | 先只读检索,再引擎指导,最后 Authoring(写文件 / 触发 Editor 脚本) |
3. 数据层设计
3.1 特性规格层(Canonical Spec)
文件: lib/mcp-feature-specs.ts
页面: /tools/mcp/feature-spec
状态: ✅ 初版已完成(Transmission 完整 Spec,其余 draft)
每个特性存一份与语言无关的定义,是 MCP 往各引擎翻译时的契约:
{
"id": "Transmission",
"inputs": ["BaseColor", "Normal", "ViewDir", "UV"],
"channels": {
"iChannel0": { "role": "environment", "type": "cube|2d" },
"iChannel1": { "role": "thickness", "channel": "R" },
"iChannel2": { "role": "absorption", "channel": "RGB" }
},
"parameters": {
"IOR": { "default": 1.45, "range": [1.0, 2.5] },
"TransmissionWeight": { "default": 1.0, "range": [0, 1] }
},
"algorithm": "refract_sample + beer_lambert + schlick_fresnel",
"validated": true
}
字段说明:
| 字段 | 类型 | 含义 |
|---|---|---|
id | string | 与渲染特性库 label 一致 |
inputs | string[] | 函数 g(Input) 的输入,来自特性依赖层 |
channels | Record | 采样通道语义(role / type / channel) |
parameters | Record | 宿主材质可调参数(default + range) |
algorithm | string | 算法组合标识,与 Shader 语言无关 |
validated | boolean | 网站验证通过后打标 |
规划扩展: 将单一 validated 拆为 algorithmValidated(WebGL 函数验证)与 lookdevValidated(WebGPU 画面验证),与技术选型文档 §4.3 对齐。
3.2 Shader 资产分层
同一 Spec 维护多语言载体:
Canonical Spec(契约)
├── glsl → WebGL 网站预览(渲染特性库,待建)
├── wgsl → WebGPU 网站预览(实验台,待建)
└── hlsl → UE MCP 导出(repo-feature-shaders.ts,进行中)
文件映射:
| 载体 | 文件 | 状态 |
|---|---|---|
| HLSL | lib/repo-feature-shaders.ts | ✅ Transmission |
| GLSL | lib/feature-shader-glsl.ts | ❌ 待建 |
| WGSL | lib/feature-shader-wgsl.ts | ❌ 待建 |
3.3 框架上下文层
文件: lib/framework-data.ts
用途: MCP Tool get_framework_context 返回特性在数据流中的 role、inputs、outputs 上下游节点。
示例:Transmission 属于 rendering-feature 节点,上游为 shading-model-step,下游为 feature-dependency。
3.4 知识体系层
文件: lib/knowledge-data.ts
用途: MCP Resource 暴露五大知识体系的节点详情,供 Agent 理解渲染与性能背景。
4. 站点入口(已完成)
| 入口 | 路径 | 状态 |
|---|---|---|
| 工具首页卡片 | /tools | ✅ |
| 导航子菜单 | 工具 → MCP | ✅ |
| MCP 介绍页 | /tools/mcp | ✅ |
| 特性规则设计 | /tools/mcp/feature-spec | ✅ |
相关实施记录:
5. MCP Server 设计
5.1 技术选型
| 维度 | 选型 | 理由 |
|---|---|---|
| 协议 | MCP 2025-11-25 | 当前稳定规范 |
| 传输 | Streamable HTTP | 远程 Server 标准方式;适配 Vercel Serverless |
| SDK | @modelcontextprotocol/sdk | 官方 TypeScript SDK |
| 部署 | Next.js App Router /api/mcp | 与网站同域,复用 lib/ 数据 |
| 会话 | 无状态(sessionIdGenerator: undefined) | Vercel 友好;后续可按需加 Redis |
5.2 目录规划
Git/
├── app/api/mcp/route.ts # HTTP 入口(GET / POST / DELETE / OPTIONS)
├── lib/mcp/
│ ├── server.ts # McpServer 实例与能力注册
│ ├── tools.ts # Tool 定义与 handler
│ ├── resources.ts # Resource 定义与 handler
│ └── prompts.ts # Prompt 模板
└── lib/mcp-feature-specs.ts # 已有:Spec 数据层
5.3 Resources(只读知识)
Agent 通过 URI 读取静态内容,适合上下文自动注入。
| URI | 内容 | 数据源 |
|---|---|---|
aoife://feature/{id} | 特性 Canonical Spec JSON | mcp-feature-specs.ts |
aoife://feature/{id}/hlsl | HLSL 参考实现 | repo-feature-shaders.ts |
aoife://framework/{nodeId} | 框架节点详情 + 上下游 | framework-data.ts |
aoife://knowledge/{systemId}/{nodeId} | 知识体系节点 | knowledge-data.ts |
aoife://pipeline/flow | 完整数据流概览 | framework-data.ts |
5.4 Tools(可调用动作)
Agent 主动调用,返回结构化结果。
| Tool | 参数 | 返回 | 优先级 |
|---|---|---|---|
search_features | query, category? | 匹配特性列表(id / detail / validated) | P0 |
get_feature_spec | id | Canonical Spec JSON | P0 |
get_feature_hlsl | id | HLSL 源码或占位说明 | P0 |
get_framework_context | nodeId | 节点 role + inputs/outputs 邻居 | P1 |
list_features_by_category | category | 分类下全部特性 Spec 摘要 | P1 |
get_validation_checklist | id | 验证项清单(Fresnel / 厚度 / 吸收等) | P1 |
translate_to_engine | id, engine | UE / Unity 实现步骤与节点映射 | P2 |
search_knowledge | query | 知识体系检索 | P2 |
5.5 Prompts(预置工作流)
| Prompt | 参数 | 行为 |
|---|---|---|
implement-rendering-feature | featureName, targetEngine | 串联:查 Spec → 读 HLSL → 框架上下文 → 引擎步骤 → 验证清单 |
explain-pipeline-position | featureName | 解释特性在材质研发管线中的位置 |
compare-features | featureA, featureB | 对比两个特性的输入、算法与适用场景 |
5.6 API 路由实现要点
// 概念示意
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js"
export async function POST(req: Request) {
const transport = new WebStandardStreamableHTTPServerTransport({
sessionIdGenerator: undefined,
})
const server = createAoifeMcpServer()
await server.connect(transport)
return transport.handleRequest(req)
}
注意事项:
- 导出
GET、POST、DELETE、OPTIONS - 配置 CORS 以支持浏览器类 Client
- 错误时返回标准 JSON-RPC 错误格式
- 生产环境可加 API Key 或 OAuth(P3)
6. Registry 发布与可发现性
6.1 发布流程
- 部署
/api/mcp至生产域名 - 编写
server.json:
{
"name": "com.aofielab/rendering-knowledge",
"version": "1.0.0",
"description": "渲染与性能一体化知识体系:特性 Spec、HLSL 参考、管线上下文与 UE 落地指导",
"websiteUrl": "https://你的域名",
"remotes": [{
"type": "streamable-http",
"url": "https://你的域名/api/mcp"
}]
}
- 用 mcp-publisher CLI 发布
- 证明命名空间:
com.aofielab(DNS TXT)或io.github.账号(GitHub OAuth)
6.2 客户端配置示例
Cursor(~/.cursor/mcp.json):
{
"mcpServers": {
"aofielab": {
"url": "https://你的域名/api/mcp"
}
}
}
6.3 可发现性策略
- 在
/tools/mcp接入方式区块补充 Registry 链接与配置片段 server.json描述含关键词:rendering,shader,HLSL,UE5,material feature- Registry 是元数据目录;终端用户仍在各客户端手动或经由聚合器添加 MCP
7. 引擎翻译层
7.1 首验引擎:Unreal Engine
| 阶段 | 集成方式 | MCP 能力 | 优先级 |
|---|---|---|---|
| P0 | Custom HLSL 节点 | 返回 HLSL 文本 + 参数说明 | ✅ 首选 |
| P1 | Material Function | 返回 MF 结构与节点图描述 | 第二阶段 |
| P2 | Substrate Slab | 返回 Slab 配置建议 | 后期 |
| — | Custom Shading Model | 改引擎源码 | 不做 |
7.2 translate_to_engine 输出结构(规划)
{
"engine": "UE5",
"feature": "Transmission",
"steps": [
"创建 Custom HLSL 函数节点,粘贴 get_feature_hlsl 返回的代码",
"在母材质中暴露 IOR、TransmissionWeight 参数,范围见 Spec",
"绑定 iChannel0 为 Scene Texture / Cube,iChannel1 为厚度贴图 R"
],
"parameters": { "...": "来自 Spec" },
"validation": ["掠射角 Fresnel 增强", "厚区 Beer-Lambert 吸收", "薄区保留 BaseColor"]
}
7.3 首条落地链路
网站 Canonical Spec + HLSL(Transmission)
→ MCP get_feature_spec / get_feature_hlsl
→ Agent 生成 UE Custom HLSL 部署步骤
→ 写入 UE 工程 Content/Shaders/Features/
→ LookDev 场景目视确认
→ RenderDoc MCP 抓帧对比(验证闭环)
7.4 扩展引擎(P5)
| 引擎 | 适配器重点 |
|---|---|
| Unity | Shader Graph Custom Function / HLSLINCLUDE |
| Godot | visual shader 或 .gdshader |
| 自研引擎 | 按 Spec 的 algorithm 字段映射内部材质系统 |
8. 与网站验证闭环的关系
MCP 不替代网站内 GPU 验证,而是读取验证结果:
WebGL 特性库验证(algorithmValidated)
↓
Canonical Spec.validated = true
↓
MCP 优先推荐 + translate_to_engine
↓
UE 落地
↓
RenderDoc MCP 引擎内复核
| 验证层 | 运行时 | 影响 MCP 行为 |
|---|---|---|
| 函数级 | WebGL / GLSL | 控制 algorithmValidated |
| 画面级 | WebGPU / WGSL | 控制 lookdevValidated |
| 引擎级 | UE + RenderDoc | Tool 返回的验证清单 |
9. 实施路线图
阶段总览
| 阶段 | 名称 | 核心产出 | 依赖 |
|---|---|---|---|
| M0 | 站点入口 | /tools/mcp、/tools/mcp/feature-spec | — |
| M1 | MCP Server 骨架 | /api/mcp + search_features + get_feature_spec | M0 |
| M2 | 知识暴露扩展 | Resources + get_feature_hlsl + get_framework_context | M1 |
| M3 | 引擎指导 | translate_to_engine(UE) + implement-rendering-feature Prompt | M2 |
| M4 | Registry 发布 | server.json + 生产部署 + 客户端文档 | M1 |
| M5 | UE Authoring | 写 HLSL 文件 + Editor Python 脚本(可选) | M3 |
| M6 | 跨引擎扩展 | Unity / Godot 适配器 | M3 |
M0 — 站点入口 ✅ 已完成
- 工具导航子菜单 MCP
-
/tools/mcp介绍页 -
/tools/mcp/feature-spec特性规则设计 -
lib/mcp-feature-specs.ts数据层
M1 — MCP Server 骨架(当前重点)
| 任务 | 文件 | 说明 |
|---|---|---|
| 安装 SDK | package.json | @modelcontextprotocol/sdk |
| HTTP 入口 | app/api/mcp/route.ts | Streamable HTTP 无状态 |
| Server 注册 | lib/mcp/server.ts | name / version / capabilities |
| P0 Tools | lib/mcp/tools.ts | search_features, get_feature_spec |
| 本地验证 | — | Cursor 连接 localhost:3000/api/mcp 测试 |
完成标准: Cursor 中调用 get_feature_spec("Transmission") 返回完整 JSON。
M2 — 知识暴露扩展
| 任务 | 说明 |
|---|---|
| Resources 注册 | aoife://feature/{id} 等 URI |
get_feature_hlsl | 返回 repo-feature-shaders.ts 内容 |
get_framework_context | 返回上下游节点 |
list_features_by_category | 按 Optical Transport 等分类列表 |
| 补全 Spec | 逐特性完善 fullSpecs(与 Shader 资产计划同步) |
完成标准: Agent 能一次性获取 Transmission 的 Spec + HLSL + 管线位置。
M3 — 引擎指导
| 任务 | 说明 |
|---|---|
translate_to_engine | 先实现 UE5 输出模板 |
get_validation_checklist | 按特性生成验证项 |
implement-rendering-feature Prompt | 串联完整工作流 |
| MCP 页第二、三张卡片 | 链到管线上下文 / 引擎指导子页(可选) |
完成标准: Agent 凭 MCP 输出可生成 UE Custom HLSL 落地文档。
M4 — Registry 发布
| 任务 | 说明 |
|---|---|
| 生产部署 | /api/mcp 公网可访问 |
server.json | 填写 remotes URL |
| DNS / GitHub 验证 | 命名空间所有权 |
| 站点文档更新 | /tools/mcp 接入配置可复制 |
完成标准: Registry API 可搜索到 com.aofielab/rendering-knowledge。
M5 — UE Authoring(可选,高权限)
| 任务 | 说明 |
|---|---|
| 写文件 Tool | deploy_hlsl_to_ue(需本地路径参数) |
| Editor 脚本 | Python / 命令行触发材质更新 |
| 安全门控 | 仅 elicitation 确认后执行写操作 |
M6 — 跨引擎扩展
- Unity Shader Graph 适配
- Godot 适配
- 各引擎
translate_to_engine分支
10. 代码与页面对照表
| 模块 | 路径 / 文件 | 当前状态 | MCP 目标状态 |
|---|---|---|---|
| 特性规格 | lib/mcp-feature-specs.ts | ✅ 初版 | 补全各特性 + 双验证状态 |
| HLSL 资产 | lib/repo-feature-shaders.ts | ✅ Transmission | 逐特性补充,MCP 可读 |
| MCP Server | app/api/mcp/route.ts | ❌ 待建 | Streamable HTTP 端点 |
| MCP 工具 | lib/mcp/tools.ts | ❌ 待建 | P0 Tools |
| MCP 资源 | lib/mcp/resources.ts | ❌ 待建 | URI 资源 |
| MCP 介绍 | app/tools/mcp/page.tsx | ✅ | 补充 Registry 配置 |
| 规则设计 | app/tools/mcp/feature-spec/page.tsx | ✅ | 与 Spec 数据同步 |
| 框架数据 | lib/framework-data.ts | ✅ | MCP 上下文源 |
| 知识数据 | lib/knowledge-data.ts | ✅ | MCP Resource 源 |
11. 风险与约束
| 风险 | 缓解 |
|---|---|
| Serverless 冷启动延迟 | 无状态 + 轻量 Tool;避免大文件内联 |
| Spec 与 Shader 不同步 | Spec 为唯一真相源;Shader 从 Spec 注释生成 |
| 引擎翻译质量不稳定 | 输出结构化步骤 + 验证清单,而非保证可编译 |
| Registry 预览期变更 | 锁定 v0.1 API;server.json 版本化管理 |
| 写文件安全风险 | Authoring 放 M5,需用户确认(elicitation) |
12. 与其他子系统协作
| 子系统 | 协作方式 |
|---|---|
| 渲染特性库 WebGL 验证 | algorithmValidated 回写 Spec |
| 实验台 WebGPU 验证 | lookdevValidated 回写 Spec |
| Shader 资产计划 | 每新增 HLSL,get_feature_hlsl 自动覆盖 |
| RenderDoc MCP | 引擎落地后的抓帧验证 |
| 技术选型文档 | 双运行时、UE 首验、Spec 契约保持一致 |
13. 相关文档
- 2026-07-16-渲染验证与引擎落地技术选型.md
- 2026-07-16-工具MCP子页面计划.md
- 2026-07-16-MCP特性规则设计子页面计划.md
- 2026-07-16-渲染特性Shader资产计划.md
修订记录
| 日期 | 说明 |
|---|---|
| 2026-07-16 | 初版:完整 MCP 开发计划,含架构、数据层、Server 设计、Registry、引擎翻译与 M0–M6 路线图 |