@cedar-policy/mcp-schema-generator-wasm

中文文档
0.7.0发布于 2026/10/22Apache-2.0TypeScriptCommonJS零依赖构建来源已验证近 30 天下载 2.6万

WASM绑定了雪松-政策-mcp-schema-生成器,让SchemaGenerator接触到了JavaScript/TypeScript.

中文使用文档
文档目录9 节
  1. 使用量
  2. API 密码
  3. generateSchema(schemaStub, toolsJson, configJson?)
  4. 配置
  5. generateRequest(schemaStub, toolsJson, inputJson, principal…
  6. 大楼
  7. npm 发布
  8. 与Rust发电机的关系
  9. 许可证

雪松-政策- mcp-schema-生成器-wasm

WASM 绑定 雪松政策- mcp-schema-生成器,显示 SchemaGenerator 到 Java 脚本和 TypeScript 通过 wasm-bindgen。 。 。 .

这使得Node.js和浏览器环境能够从 MCP 工具描述中生成 Cedar 授权计划 完全一样的行为 包括正确处理:

  • 贾森 number 作为 Long 或者说 Decimal (可配置)
  • additionalProperties 作为锡达标记的实体
  • 嵌入对象的空格类型分解

使用量

安装 npm 包 :

npm install @cedar-policy/mcp-schema-generator-wasm
const { generateSchema } = require('@cedar-policy/mcp-schema-generator-wasm');

const stub = `
namespace MyServer {
    @mcp_principal
    entity User;
    @mcp_resource
    entity McpServer;
    action "call_tool" appliesTo {
        principal: [User],
        resource: [McpServer]
    };
}
`;

const tools = JSON.stringify([
  {
    name: 'read_file',
    description: 'Read a file from disk',
    inputSchema: {
      type: 'object',
      properties: { path: { type: 'string' } },
      required: ['path'],
    },
  },
]);

const result = JSON.parse(generateSchema(stub, tools));

if (result.isOk) {
  console.log(result.schema);     // Human-readable .cedarschema
  console.log(result.schemaJson); // JSON for Cedar WASM isAuthorized()
} else {
  console.error(result.error);
}

API 密码

generateSchema(schemaStub, toolsJson, configJson?)

参数类型说明
schemaStubstring锡达计程车 @mcp_principal 财务报告和审定财务报表 @mcp_resource 说明
toolsJsonstringMCP工具描述为 JSON( tools 阵列从 tools/list(中文(简体) )
configJsonstring?可选配置为 JSON

回返情况: JSON 有字段的字符串 :

外地类型说明
schemastring | null生成 Cedar 计划 .cedarschema 文本
schemaJsonstring | null作为JSON(用于 isAuthorized()(中文(简体) )
errorstring | null如果生成失败, 错误消息
isOkboolean世代是否成功

配置

{
  "includeOutputs": false,
  "objectsAsRecords": false,
  "eraseAnnotations": true,
  "flattenNamespaces": false,
  "numbersAsDecimal": false,
  "deduplicateEntityTypes": false
}
选项默认说明
includeOutputsfalse在动作中包含工具输出计划
objectsAsRecordsfalse对没有对象使用记录而不是实体 additionalProperties
eraseAnnotationstrue删除 @mcp_* 产出的说明
flattenNamespacesfalse将所有类型平整为单一命名空间
numbersAsDecimalfalse编码 JSON number 作为锡达 Decimal 改为 Long
deduplicateEntityTypesfalse将各种工具的相同实体类型合并到最小的共同祖先名称空间

generateRequest(schemaStub, toolsJson, inputJson, principalType, principalId, resourceType, resourceId, configJson?)

从 MCP 工具调用中生成 Cedar 授权请求组件 .

参数类型说明
schemaStubstringCedar schema stub (和 generateSchema(中文(简体) )
toolsJsonstringMCP 工具描述为 JSON
inputJsonstringMCP 工具调用输入{"params": {"tool": "...", "args": {...}}}(中文(简体) )
principalTypestring本金的锡达实体类型(例如, "User"(中文(简体) )
principalIdstring主要标识符(例如:, "alice"(中文(简体) )
resourceTypestring用于资源的锡达实体类型(例如, "McpServer"(中文(简体) )
resourceIdstring资源标识符(例如, "my-server"(中文(简体) )
configJsonstring?可选配置为 JSON

回返情况: JSON 有字段的字符串 :

外地类型说明
principalstring | null主要实体(例如, MyServer::User::"alice"(中文(简体) )
actionstring | null行动实体(例如, MyServer::Action::"read_file"(中文(简体) )
resourcestring | null资源实体(例如, MyServer::McpServer::"my-server"(中文(简体) )
entitiesJsonstring | null作为 JSON 数组字符串的实体
errorstring | null如果生成失败, 错误消息
isOkboolean世代是否成功

示例

const { generateRequest } = require('@cedar-policy/mcp-schema-generator-wasm');

const stub = `
namespace MyServer {
    @mcp_principal
    entity User;
    @mcp_resource
    entity McpServer;
    action "call_tool" appliesTo {
        principal: [User],
        resource: [McpServer]
    };
}
`;

const tools = JSON.stringify([
  {
    name: 'read_file',
    description: 'Read a file from disk',
    inputSchema: {
      type: 'object',
      properties: { path: { type: 'string' } },
      required: ['path'],
    },
  },
]);

const input = JSON.stringify({
  params: { tool: 'read_file', args: { path: '/etc/config.yaml' } },
});

const result = JSON.parse(
  generateRequest(stub, tools, input, 'User', 'alice', 'McpServer', 'my-server')
);

if (result.isOk) {
  console.log(result.principal);    // MyServer::User::"alice"
  console.log(result.action);       // MyServer::Action::"read_file"
  console.log(result.resource);     // MyServer::McpServer::"my-server"
  console.log(result.entitiesJson); // JSON array of entities for isAuthorized()
} else {
  console.error(result.error);
}

大楼

# Install wasm-pack
cargo install wasm-pack

# Build for Node.js
wasm-pack build --target nodejs --scope cedar-policy

# Build for browsers
wasm-pack build --target web --scope cedar-policy

npm 发布

Npm 包名为:

@cedar-policy/mcp-schema-generator-wasm

拉斯特箱子的名字还在 cedar-policy-mcp-schema-generator-wasm期间 释放, 生成 wasm-pack 软件包元数据已正常化, 因此 npm 软件包使用上方的更短的名称,同时保留 Cargo.toml 版本.

释放是手动完成的 Publish MCP schema generator WASM to npm GitHub 动作工作流程 。 工作流程:

  1. 验证它是从 main· ;
  2. 验证窗体标记 cedar-policy-mcp-schema-generator-wasm-v<MAJOR>.<MINOR>.<PATCH>· ;
  3. 检查标签版本是否匹配此箱子 Cargo.toml· ;
  4. 运行 wasm-pack build --target nodejs --scope cedar-policy· ;
  5. 使生成的 npm 包元数据正常化;
  6. 运行 npm pack --dry-run; 和 :
  7. 计算正确的 npm 二分位;和
  8. 出版单位 npm publish --access public --tag <tag> --provenance。 。 。 .

工作流程预计 npm 认证将使用 npm 信任的发布方式 存储器的释放环境。 它不需要一个 NPM_TOKEN 暗号.

与Rust发电机的关系

这个箱子很薄 wasm-bindgen 围绕现有的 cedar-policy-mcp-schema-generator 破烂的箱子。 所有计划生成逻辑、类型映射和边缘案件处理都委托给Rust执行。 WASM绑定没有添加独立的逻辑.

许可证

阿帕奇 - 2.0

版本与发布记录

@cedar-policy/mcp-schema-generator-wasm 共发布 3 个版本,首次发布于 2026/06/10;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.7.0latest2026/10/2217 天前
0.6.12026/09/241 个月前
0.6.02026/06/104 个月前

关于 @cedar-policy/mcp-schema-generator-wasm 的常见问题

@cedar-policy/mcp-schema-generator-wasm 是什么?

WASM绑定了雪松-政策-mcp-schema-生成器,让SchemaGenerator接触到了JavaScript/TypeScript.

如何安装 @cedar-policy/mcp-schema-generator-wasm?

在项目目录运行 npm install @cedar-policy/mcp-schema-generator-wasm,或使用 pnpm add / yarn add / bun add。

@cedar-policy/mcp-schema-generator-wasm 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cedar-policy/mcp-schema-generator-wasm 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cedar-policy/mcp-schema-generator-wasm 可以商用吗?

@cedar-policy/mcp-schema-generator-wasm 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cedar-policy/mcp-schema-generator-wasm 的下载量有多少?

根据 npm 官方下载统计,@cedar-policy/mcp-schema-generator-wasm 在 2026/10/10 – 2026/11/08 这 30 天内被下载 26,417 次,日均约 881 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cedar-policy/mcp-schema-generator-wasm 还在维护吗?

最新版本 0.7.0 发布于 2026/10/22(17 天前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/06/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。