主题
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 处于开启状态,其余全部关闭:
| 分组 | 变量 | 默认值 | 工具 |
|---|---|---|---|
| API | FLET_MCP_ENABLE_API | 开启 | list_controls、get_api、get_enum、search_enum_members、enum_has_member |
| Icons | FLET_MCP_ENABLE_ICONS | 开启 | find_icon |
| Examples | FLET_MCP_ENABLE_EXAMPLES | 关闭 | search_examples、get_example |
| CLI | FLET_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())