MCP规范验证器

用于验证MCP服务器规范是否符合OASF MCP模块模式的工具

  • by gilles-gardet
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 gilles-gardet/mcp-spec-validator

使用说明

MCP规范验证器

根据以下内容验证MCP服务器规范 OASF MCP模块架构.

运作原理

输入是单个MCP模块JSON对象。
它在本地根据捆绑的OASF MCP模块模式(JSON模式草案-07)进行验证。

模块格式

{
  "name": "integration/mcp",
  "data": {
    "name": "my-mcp-server",
    "connections": [
      { "type": "streamable-http", "url": "https://example.com/mcp" }
    ]
  }
}

必填字段: name (必须是 "integration/mcp"), data.name, data.connections (至少一个条目)。

连接类型: streamable-http, sse, stdio.

看 src/main/resources/samples/ 更多示例。

配置

src/main/resources/application.yaml:

属性 默认值 描述
oasf.validator.default-schema-version 1.0.0 在以下情况下使用的架构版本 schemaVersion 查询参数缺失
server.port 8060 应用端口

跑步

mvn spring-boot:run

REST API

POST /validate

验证原始MCP模块JSON正文。

查询参数:

参数 必填 说明
schemaVersion 否 覆盖默认架构版本

响应代码:

代码 含义
200 OK 模块有效
422 Unprocessable Entity 模块无效-- errors 数组非空

响应主体:

{
  "valid": false,
  "errors": [
    "$.data.connections: there must be a minimum of 1 items in the array"
  ],
  "warnings": []
}

示例(HTTPie)

# Validate a local JSON file
http POST :8060/validate < src/main/resources/samples/valid-mcp-record.json

# With explicit schema version
http POST :8060/validate schemaVersion==1.0.0 < src/main/resources/samples/valid-mcp-record.json

示例(卷曲)

curl -X POST http://localhost:8060/validate \
  -H "Content-Type: application/json" \
  -d @src/main/resources/samples/valid-mcp-record.json

示例文件

samples/valid-mcp-record.json

http POST :8060/validate < src/main/resources/samples/valid-mcp-record.json

预期: 200 OK, valid: true

一个最小的MCP模块 streamable-http 连接。


samples/valid-mcp-record-stdio.json

http POST :8060/validate < src/main/resources/samples/valid-mcp-record-stdio.json

预期: 200 OK, valid: true

使用的有效模块 stdio 与...的联系 command, args,以及 env_vars.涵盖了作为本地进程启动的MCP服务器的情况(例如基于Docker的GitHub MCP服务器)。


samples/invalid-mcp-record-missing-connections.json

http POST :8060/validate < src/main/resources/samples/invalid-mcp-record-missing-connections.json

预期: 422 Unprocessable Entity, valid: false

这 connections 数组不存在 data。此字段是架构所必需的(minItems: 1).


samples/invalid-mcp-record-unknown-field.json

http POST :8060/validate < src/main/resources/samples/invalid-mcp-record-unknown-field.json

预期: 422 Unprocessable Entity, valid: false

连接包含 unknown_field 未在架构中定义。这 mcp_server_connection 对象用途 additionalProperties: false,因此任何未知字段都被拒绝。


架构版本覆盖

http POST :8060/validate schemaVersion==1.0.0 < src/main/resources/samples/valid-mcp-record.json

预期: 200 OK, valid: true

架构版本通过显式传递 schemaVersion 查询参数。

程序化使用

@Autowired OasfValidator validator;

// Uses the default schema version from application properties
ValidationResult result = validator.validateModule(moduleJson);

// Explicit version override
ValidationResult result = validator.validateModule(moduleJson, "1.0.0");

result.valid();    // true / false
result.errors();   // List<String> — empty when valid
result.warnings(); // List<String>