# @cedar-policy/mcp-schema-generator-wasm 中文文档

规范地址：https://npmcn.com/package/%40cedar-policy/mcp-schema-generator-wasm/

版本：0\.7\.0
npm 元数据更新时间：2026-10-22T15:42:04.781Z
中文译文更新时间：2026-11-09T06:57:34.575Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cedar-policy/mcp-schema-generator-wasm
原文对照：https://npmcn.com/package/%40cedar-policy/mcp-schema-generator-wasm/?lang=original
项目主页：https://cedarpolicy.com/
源码仓库：https://github.com/cedar-policy/cedar-for-agents

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：3.6 MB，5 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-06-09T17:17:57.169Z
- 最新版本发布：2026-10-22T15:42:04.337Z
- 近 30 天下载量：26417（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

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

## 安装

```sh
npm install @cedar-policy/mcp-schema-generator-wasm
```

也可以使用：`pnpm add @cedar-policy/mcp-schema-generator-wasm`、`yarn add @cedar-policy/mcp-schema-generator-wasm`、`bun add @cedar-policy/mcp-schema-generator-wasm`

## README

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

WASM 绑定 [雪松政策- mcp-schema-生成器](https://npmcn.com/package/%40cedar-policy/cedar-policy-mcp-schema-generator/),显示 `SchemaGenerator` 到 Java 脚本和 TypeScript 通过 `wasm-bindgen`。 。 。 .

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

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

## 使用量

安装 npm 包 :

```bash
npm install @cedar-policy/mcp-schema-generator-wasm
```

```javascript
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?)`

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

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

| 外地 | 类型 | 说明 |
| --- | --- | --- |
| `schema` | `string | null` | 生成 Cedar 计划 `.cedarschema` 文本 |
| `schemaJson` | `string | null` | 作为JSON(用于 `isAuthorized()`(中文(简体) ) |
| `error` | `string | null` | 如果生成失败, 错误消息 |
| `isOk` | `boolean` | 世代是否成功 |

### 配置

```json
{
  "includeOutputs": false,
  "objectsAsRecords": false,
  "eraseAnnotations": true,
  "flattenNamespaces": false,
  "numbersAsDecimal": false,
  "deduplicateEntityTypes": false
}
```

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

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

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

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| `schemaStub` | `string` | Cedar schema stub (和 `generateSchema`(中文(简体) ) |
| `toolsJson` | `string` | MCP 工具描述为 JSON |
| `inputJson` | `string` | MCP 工具调用输入`{"params": {"tool": "...", "args": {...}}}`(中文(简体) ) |
| `principalType` | `string` | 本金的锡达实体类型(例如, `"User"`(中文(简体) ) |
| `principalId` | `string` | 主要标识符(例如:, `"alice"`(中文(简体) ) |
| `resourceType` | `string` | 用于资源的锡达实体类型(例如, `"McpServer"`(中文(简体) ) |
| `resourceId` | `string` | 资源标识符(例如, `"my-server"`(中文(简体) ) |
| `configJson` | `string?` | 可选配置为 JSON |

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

| 外地 | 类型 | 说明 |
| --- | --- | --- |
| `principal` | `string | null` | 主要实体(例如, `MyServer::User::"alice"`(中文(简体) ) |
| `action` | `string | null` | 行动实体(例如, `MyServer::Action::"read_file"`(中文(简体) ) |
| `resource` | `string | null` | 资源实体(例如, `MyServer::McpServer::"my-server"`(中文(简体) ) |
| `entitiesJson` | `string | null` | 作为 JSON 数组字符串的实体 |
| `error` | `string | null` | 如果生成失败, 错误消息 |
| `isOk` | `boolean` | 世代是否成功 |

**示例**

```javascript
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);
}
```

## 大楼

```bash
# 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 包名为:

```text
@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 是什么？

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 和提交记录判断。

