JSON模型生成服务

一个专门用于从JSON生成类型安全模型的MCP服务器,支持多种编程语言,包括Dart和Kotlin。

  • by AscEmon
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 AscEmon/quicktype-mcp

使用说明

Quicktype MCP服务器

MCP(模型上下文协议)服务器,专门用于从JSON生成模型。该工具简化了为各种编程语言(包括Dart、Kotlin)创建类型安全模型的过程。

特性

  • 为多种编程语言生成模型
  • 自动JSON验证和修复
  • 生成空安全模型
  • 处理复杂的嵌套JSON结构
  • 包括序列化/反序列化方法

先决条件

  • Python 3.10或更高版本
  • 互联网连接(访问quicktype.io API)

用作MCP服务器

该工具被设计为用作其他应用程序可以连接的MCP服务器。该服务器公开了一个简单的API,用于从JSON输入生成模型。

API

服务器公开以下端点:

  • generate_model:从JSON输入生成模型

参数:

  • json_input:用于生成模型的JSON字符串
  • class_name:生成的类的名称(默认值:Model)
  • language:生成代码的编程语言(dart、kotlin、typescript、swift、python、java、go)
{
  "quicktype-mcp": {
    "command": "uv",
    "args": [
      "--directory",
      "/path/to/quicktype-mcp",
      "run",
      "main.py",
    ]
  }
}

可用的MCP工具

  1. 发电机模型:从JSON生成模型

    • 参数:
      • json_input:用于生成模型的JSON字符串
      • class_name:生成的类的名称(默认值:“Model”)
      • language:为(dart、kotlin)生成代码的编程语言
  2. list_语言:列出所有支持的语言

  3. fix_json:修复并格式化无效的JSON输入

支持的语言

服务器目前支持为以下语言生成模型:

Dart(内置序列化功能)

对于Dart,生成的模型包括内置的序列化方法(fromJson 和 toJson):

// To parse this JSON data, do
//
//     final model = modelFromJson(jsonString);

import 'dart:convert';

class Model {
  int? id;
  String? name;

  Model({
    this.id,
    this.name,
  });

  factory Model.fromJson(Map<String, dynamic> json) => Model(
    id: json["id"],
    name: json["name"],
  );

  Map<String, dynamic> toJson() => {
    "id": id,
    "name": name,
  };
}

Kotlin(使用kotlinx序列化)

对于Kotlin,生成的模型使用 kotlinx.serialization 注释:

// To parse the JSON, install kotlin's serialization plugin and do:
//
// val json = Json { allowStructuredMapKeys = true }
// val model = json.decodeFromString(Model.serializer(), jsonString)

import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*

@Serializable
data class Model(
    val id: Int? = null,
    val name: String? = null
)

Kotlin生成器生成以下代码:

  • 用途 kotlinx.serialization 自动序列化/反序列化的注释
  • 使用Kotlin的null安全特性正确处理可以为null的类型
  • 将snake_case JSON键转换为camelCase Kotlin属性
  • 用途 @SerialName 当属性名与JSON键不同时的注释
  • 支持嵌套对象、列表和复杂数据结构

故障排除

如果您遇到服务器未运行的问题,请确保:

  1. 您有活动的互联网连接
  2. 所有依赖项均已安装
  3. 正在使用正确的Python版本(3.10+)

对于生成的模型的问题:

  1. 确保JSON有效
  2. 如果遇到错误,请尝试简化复杂的JSON结构
  3. 检查类名是否符合目标语言的命名约定

生成模型的特征

  • 零安全:在适当的时候,所有字段都正确标记为可空
  • JSON序列化:包括序列化/反序列化方法
  • 嵌套对象:使用自己的类正确处理嵌套对象
  • 列表和地图:正确处理集合及其泛型类型
  • 类型安全:为JSON值使用适当的类型

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。