FastAPI 的用户许多一定用过 FastAPI-MCP 这个 package 来将自己的 API 转换成 MCP 服务。 在使用的过程中会遇到一些问题,比如 Endpoints 不断上升的时候,会造成的 Context 的大量占用,以及 Response 的 Size 如果过大的话,也会容易造成 Context 过大的问题。比如一个列表页的 API 可能动则上百 K 或者几 MB ,那么这个数据在 Agent 中获取到的话,就容易让 Context 超出上限。 针对这个问题的解决方案,有一个思路是借鉴 GraphQL 的做法。 因为 FastAPI 提供了 return annotation ,所以可以将每一个 endpoint 都当成一个 GraphQL 的节点,然后将它返回的数据类型变成这个节点下的子节点树。 这样子它就可以变成一个 query 和 mutation 的 GraphQL schema 。 再结合强类型的返回类型描述,我们可以实现类似于 GraphQL 中 pick 字段的能力。 前者的话,它解决了 Endpoint 增长的时候 MCP tools 过多的问题。它相当于通过一个 queryschema 的接口,获取到了所有的可用的方法清单。 而后者则解决了方法返回数据过大的问题,因为你可以只摘取里面你所需要的字段,这样可以极大地减小返回数据的大小。同时基于 GraphQL ,你还能实现一个请求中调用多个方法的能力,这样子可以节省大量来回调用的成本。 https://github.com/KLR-Pattern/fastapi-gql-mcp 这个开源项目就是这个思路的实现。 尚处于早期开发中,但是很多功能都已经实现了,并且还在不断高速迭代打磨中。 测试覆盖率 95%以上。 欢迎大家尝试使用,感谢。


  • 情报分类:开源项目与落地
  • 分类依据:内容涉及项目实践、创业、副业或变现
  • 信息来源:服务器 / V2EX
  • 发布时间:2026/10/6 21:26:28