UAPF MCP服务器

UAPF MCP服务器是一个参考实现,用于处理UAPF包和工作区模式下的工具和资源。

  • by UAPFormat
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 UAPFormat/uapf-mcp

使用说明

uapf mcp

参考 模型上下文协议(MCP) 服务器 UAPF 包装。

服务器连接到正在运行的 uapf发动机 实例并公开用于使用UAPF的规范MCP工具和资源 任何一种包装 包裹 或 工作区 模式。

状态:早期草案-在UAPF v1.0之前,API和工具名称可能会更改。


模式:包与工作区

MCP服务器可以针对单个 .uapf 包或整个工作区 存储库。模式来源于环境变量或引擎元数据:

  • UAPF_MCP_MODE=package –要求 UAPF_PACKAGE_PATH.
  • UAPF_MCP_MODE=workspace –要求 UAPF_WORKSPACE_DIR.
  • UAPF_MCP_MODE=auto (默认)-首选 UAPF_WORKSPACE_DIR那么 UAPF_PACKAGE_PATH,否则将回退到由报告的发动机模式 /_/meta.

在包模式下运行时:

  • uapf.list 总是返回一个单例列表。
  • 使用不同的工具调用 packageId 返回 package_mode_mismatch.

在工作空间模式下运行时:

  • uapf.list 返回引擎工作空间清单。
  • uapf.validate 没有 packageId 验证整个工作区。

配置

# MCP server
MCP_PORT=7900
MCP_TRANSPORT=streamable_http   # streamable_http | sse | ws | stdio
MCP_HTTP_PATH=/mcp
MCP_CORS_ORIGIN=*
UAPF_MCP_NAME=uapf
UAPF_MCP_TOOL_PREFIX=uapf
UAPF_DEBUG_LOG=logs/uapf-engine-http-debug.log

# Engine connectivity
UAPF_ENGINE_URL=http://localhost:3001
UAPF_ENGINE_MODE=auto  # packages | workspace | auto

# Mode selection
UAPF_MCP_MODE=auto     # package | workspace | auto
UAPF_PACKAGE_PATH=/path/to/package.uapf
UAPF_WORKSPACE_DIR=/path/to/workspace/repo

# Security
UAPF_SECURITY_MODE=claims_declare   # off | claims_declare | claims_enforce
UAPF_DIDVC_VERIFIER=none            # none | http
UAPF_DIDVC_VERIFIER_URL=            # required when verifier=http

笔记:

  • UAPF_ENGINE_URL 默认为 http://localhost:3001.
  • UAPF_SECURITY_MODE=claims_enforce 需要一个验证器(见下文)。
  • WebSocket模式仍然可用 ws://<host>:MCP_PORT/mcp-ws 当 MCP_TRANSPORT=ws.
  • HTTP请求/响应调试输出被写入 logs/uapf-engine-http-debug.log 默认情况下。覆盖 UAPF_DEBUG_LOG 重定向日志文件。

标准MCP工具

工具始终以下面的规范名称注册。如果 UAPF_MCP_TOOL_PREFIX 设置为不同的前缀,前缀别名也是 已注册,但规范名称仍可被发现。

  • uapf.describe
  • uapf.list
  • uapf.run_process
  • uapf.evaluate_decision
  • uapf.resolve_resources
  • uapf.get_artifact
  • uapf.validate

工具形状

  • uapf.描述 → { mode, engine: { url, mode }, capabilities, tooling }
  • uapf.list (可选过滤器: level, tag, domain, q) → 数组 包摘要
  • uapf.run_process { packageId, processId, input } → 发动机结果
  • uapf.evaluate_decision { packageId, decisionId, input } → 发动机结果
  • uapf解决方案资源 { packageId, processId?, taskId? } → 引擎 绑定
  • uapf.get人工制品 { packageId, kind, id? }
    • kind=manifest → JSON清单
    • 否则→ { mediaType, contentBase64 }
  • uapf.validate { packageId? } → { ok, issues[] } (工作区或软件包)

MCP资源

服务器发布由uapf引擎支持的只读MCP资源:

  • uapf://manifest/<packageId>
  • uapf://bpmn/<packageId>?id=<processId>
  • uapf://dmn/<packageId>?id=<decisionId>
  • uapf://cmmn/<packageId>?id=<caseId>
  • uapf://bindings/<packageId>?processId=...&taskId=...
  • uapf://policies/<packageId>

资源按包列出,并使用适当的MIME类型提供。BPMN, DMN和其他XML工件作为base64编码的blob返回;清单和 策略以JSON文本形式返回。


安全模式和验证器

服务器支持基本索赔传播:

  • off –无索赔处理。
  • claims_declare (默认)-所需的声明包含在工具/资源中 回应,但不强制执行。
  • claims_enforce –验证所需的声明,并在验证时阻止呼叫 失败。

验证器实施 ClaimsVerifier 从 src/security/verifier.ts:

  • NoneVerifier 总是成功。
  • HttpVerifier –海报 { requiredClaims, context } 到 UAPF_DIDVC_VERIFIER_URL 并期待 { ok, reason? }.

在强制执行模式下,未满足的索赔返回结构化错误 claims_not_satisfied.


安装

git clone https://github.com/UAPFormat/uapf-mcp.git
cd uapf-mcp
npm install

构建并运行

npm run build
npm run start
# MCP server listens on MCP_PORT (default 7900)

发展: npm run dev.


烟雾测试

提供了一个简单的本地健全性检查 scripts/smoke.mjs:

node scripts/smoke.mjs

脚本调用 /_/meta,列出包,获取第一个清单,并运行 对第一个包进行验证。当 MCP_TRANSPORT=streamable_http它 还通过HTTP连接到MCP服务器以运行 listTools, uapf.describe, 和 uapf.list.


部署提示

  • 确保 uapf-engine 可通过以下方式联系 UAPF_ENGINE_URL 并配置为 所需模式(包与工作区)。
  • 设置MCP模式环境变量以匹配部署目标。
  • 根据DID/VC管道配置安全模式和验证器URL。
  • 引擎请求的低级HTTP调试日志位于中的路径上 UAPF_DEBUG_LOG (默认值 logs/uapf-engine-http-debug.log).文件是 自动创建,并用标头记录每个请求/响应 有效载荷摘要。

赞助商UAPF

UAPF是一个开放的、供应商中立的标准——MIT在开放的环境中获得许可和维护。 如果你的工作依赖于可移植的流程定义或通过MCP执行AI代理, 赞助使引擎、MCP服务器和示例得以维护,规范得以发展。