NexusX:定义一次模型,自动生成 REST + MCP - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
tangkikodo

NexusX:定义一次模型,自动生成 REST + MCP

  •  
  •   tangkikodo 1h 29m ago 85 views

    写一个后端应用,如果既要给前端提供 REST API ,又要给 AI Agent 提供 MCP 接口,通常的做法是维护两套接口定义。同样的业务逻辑写两遍,同样的参数校验写两遍,同样的类型定义维护两遍。改一个字段名要同步改两个地方, 费时费力

    nexusx 的做法不同。你使用内置的 skill 聊需求和设计, 他会用 SQLModel 定义实体和关系,然后框架自动生成 GraphQL 、REST 和 MCP 三种协议接口。一个 Service 类和方法定义,同时服务前端 HTTP 请求和 AI Agent 的 MCP 调用。改模型定义,三种协议自动同步。

    它的工作方式是这样的:实体定义就是普通的 SQLModel ,加上 @query 和 @mutation 装饰器标记查询和变更方法。然后 DefineSubset 声明 DTO ,框架自动处理数据加载和 N+1 问题。最后一行代码生成 REST 路由或 MCP 服务。

    它内置的申明式数据构建能力, 可以写出清晰明了的数据结构, 借助 pydantic 的能力, 在 MCP 中可以提供详尽的信息方便 LLM 去判断。

    它的 MCP 能力有被精心设计, 使用渐进披露的方式, 一方面节省 context , 另一方面接口提供了详尽的信息描述,docstring 到 field description 以及 field type 都能被 LLM 感知到。 还支持了 selection 功能避免返回过大的 reponse 浪费 context 。

    项目的 skill 文件注册到 Claude Code 后,可以用自然语言描述业务需求,AI 自动执行四阶段流程:澄清需求、生成 SQLModel 和数据库初始化、填充查询方法、生成 DTO 和 REST 接口。生成的代码不是一次性模板,而是可以直接演进的产品代码。

    对于想要快速构建一个同时支持 REST 和 MCP 、并且代码结构清晰好维护的后端应用来说,这个模式值得看看。

    它甚至内置了一套 GraphQL 接口, 可以方便的查看持久层的数据

    GitHub: https://github.com/allmonday/sqlmodel-nexus

    项目还在迭代中, 欢迎大家给出建议和意见!

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     5737 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 03:24 PVG 11:24 LAX 20:24 JFK 23:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86