Skip to content

flet-mcp 是一个 MCP(模型上下文协议,Model Context Protocol) 服务器, 为 LLM 智能体和 AI 编程助手提供关于 Flet 的、准确且版本特定的知识。智能体无需依赖模型自身的训练数据—— 那会随时间漂移过时,并导致产生幻觉般的控件、属性和枚举成员——而是可以按需查阅真实的 Flet API、 搜索示例项目、查找图标,并检查 CLI 选项。

无论是在 AI 驱动的编辑器内部(Claude Desktop、Cursor、VS Code 等),还是在你自己构建用于生成或重构 Flet 代码的智能体中,它都很有用。

安装 ​

bash
pip install flet-mcp

这会注册一个 flet mcp 命令(必须安装 flet CLI,这在任何正常的 Flet 项目中都已满足)。该包自带一个预构建的 API 索引, 因此无需额外的构建步骤即可开始使用。

运行服务器 ​

通过默认的 stdio 传输方式启动服务器(大多数桌面 AI 客户端使用此方式):

bash
flet mcp

或者通过 HTTP 暴露它:

bash
flet mcp --transport streamable-http --port 8000

配置 AI 客户端 ​

大多数支持 MCP 的客户端通过一个简短的 JSON 片段来配置。例如,在 Claude Desktop 的 claude_desktop_config.json 中:

json
{
  "mcpServers": {
    "flet": {
      "command": "flet",
      "args": ["mcp"]
    }
  }
}

Cursor、VS Code 和其他客户端在各自的 MCP 设置中使用相同的 command / args 结构。

工具分组 ​

工具被组织成若干组,通过服务器启动时读取的 FLET_MCP_ENABLE_* 环境变量来开关。默认值聚焦于减少幻觉的起步集合—— API 和 icons 处于开启状态,其余全部关闭:

分组变量默认值工具
APIFLET_MCP_ENABLE_API开启list_controls、get_api、get_enum、search_enum_members、enum_has_member
IconsFLET_MCP_ENABLE_ICONS开启find_icon
ExamplesFLET_MCP_ENABLE_EXAMPLES关闭search_examples、get_example
CLIFLET_MCP_ENABLE_CLI关闭get_cli_help

可接受的真值(truthy)为 1、true 和 yes(不区分大小写)。例如,要启用示例搜索工具:

bash
FLET_MCP_ENABLE_EXAMPLES=1 flet mcp

已启用的分组也会体现在服务器的启动说明中,因此那些把说明转发给模型的客户端,能让模型的指引与实际注册的工具保持同步。

文档搜索

文档搜索分组(search_docs / get_doc)已在规划中但尚未启用—— 它正在被重新改造,以索引当前基于 Docusaurus 的文档站点。

各工具的作用 ​

工具描述
get_api主要的校验器。按名称查阅任意 Flet 符号——控件、服务、数据类类型(ButtonStyle、Padding 等)、事件或枚举。对于已安装的 Flet 版本,「未找到」的结果是确定性的。异步方法会被标记为 "async": true,每条记录都带有 "package" 字段,指明它所在的 pip 包(核心为 "flet",否则是像 "flet-audio" 这样的扩展包)。
list_controls浏览可用的控件与服务,可使用按类别/类型筛选的可选参数。
get_enum获取一个枚举的成员。
search_enum_members通过子串搜索大型枚举(Icons、CupertinoIcons)。
enum_has_member在使用某个枚举成员前,先验证它是否存在。
find_icon按关键字搜索 Material 和 Cupertino 图标,支持同义词匹配(例如「user」能找到 account_circle)。
search_examples按关键字搜索 Flet 示例项目,可按平台筛选。
get_example获取由 search_examples 返回的某个示例的完整源码与元数据。
get_cli_help获取 flet CLI 命令及其选项的结构化帮助信息。

从你自己的智能体使用 Flet MCP ​

该服务器也可以作为一个 FastMCP 实例被导入,因此自定义智能体可以直接消费它。

使用 Pydantic AI:

python
from pydantic_ai import Agent
from pydantic_ai.toolsets import MCPToolset
from flet_mcp import mcp

agent = Agent("anthropic:claude-sonnet-4-6", toolsets=[MCPToolset(mcp)])
result = agent.run_sync("Create a Flet app with a login form")

或者通过 FastMCP 客户端在进程内调用——无需子进程,也无需传输层。在导入 flet_mcp 之前设置好 FLET_MCP_ENABLE_* 变量,以便所需的工具分组完成注册;客户端会把结构化结果反序列化到 .data 上:

python
import asyncio
from fastmcp import Client
from flet_mcp import mcp

async def main():
    async with Client(mcp) as client:
        api = (await client.call_tool("get_api", {"name": "TextField"})).data
        print(api["kind"], api["package"], len(api["properties"]))

asyncio.run(main())

关注我,学习大模型、大数据、Python等热门技术。