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工具
- 发电机模型:从JSON生成模型
- 参数: - json_input:用于生成模型的JSON字符串 - class_name:生成的类的名称(默认值:“Model”) - language:为(dart、kotlin)生成代码的编程语言
- list_语言:列出所有支持的语言
- 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 json) => Model(
id: json["id"],
name: json["name"],
);
Map 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键不同时的注释 - 支持嵌套对象、列表和复杂数据结构
故障排除
如果您遇到服务器未运行的问题,请确保:
- 您有活动的互联网连接
- 所有依赖项均已安装
- 正在使用正确的Python版本(3.10+)
对于生成的模型的问题:
- 确保JSON有效
- 如果遇到错误,请尝试简化复杂的JSON结构
- 检查类名是否符合目标语言的命名约定
生成模型的特征
- 零安全:在适当的时候,所有字段都正确标记为可空
- JSON序列化:包括序列化/反序列化方法
- 嵌套对象:使用自己的类正确处理嵌套对象
- 列表和地图:正确处理集合及其泛型类型
- 类型安全:为JSON值使用适当的类型
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
