项目简介
FastApps旨在简化ChatGPT插件或自定义动作的开发。它提供了一个Python后端框架和React前端集成,让开发者能够快速构建可供LLM调用的工具(Tools)和展示的资源(Resources),实现丰富、交互式的对话体验。框架内置对MCP协议、类型安全、CLI工具和ngrok集成的支持。
主要功能点
- 工具(Tools)定义与执行: 使用Python定义业务逻辑,并通过Pydantic自动生成工具的输入Schema,供LLM理解和调用。
- 资源(Resources)托管与渲染: 自动将React前端组件打包成HTML资源,通过MCP协议提供给LLM客户端进行渲染,实现丰富UI展示。
- MCP协议支持: 完全遵循Model Context Protocol (MCP) 规范,确保与ChatGPT等LLM客户端的无缝通信。
- 内置身份验证: 支持OAuth 2.1协议,可配置全局或针对单个工具的认证策略,保障数据安全。
- 开发效率工具: 提供CLI命令行工具,简化项目初始化、组件创建和本地开发服务器的启动(包含ngrok隧道,方便外部访问)。
- 类型安全: Python后端使用Pydantic进行数据验证,前端使用TypeScript增强类型安全。
安装步骤
- 创建虚拟环境(推荐):
python -m venv venv # macOS/Linux source venv/bin/activate # Windows venv\Scripts\activate - 安装FastApps并初始化项目:
pip install fastapps fastapps init my-app cd my-app - 安装项目依赖:
pip install -r requirements.txt npm install - 创建你的第一个组件:
这将生成两个文件:'server/tools/my_widget_tool.py'(后端逻辑)和'widgets/my-widget/index.jsx'(前端UI)。fastapps create my-widget
服务器配置(供MCP客户端配置信息)
MCP客户端需要配置与FastApps MCP服务器连接的信息。以下是JSON格式的配置示例及其注释:
{ "name": "MyFastAppsServer", // 服务器的显示名称,可自定义 "command": "python", // 启动FastApps服务器的命令 "args": [ // 启动命令的参数列表 "server/main.py" ], "workingDirectory": "/path/to/your/my-app", // **重要**: FastApps项目的根目录,确保MCP客户端在该目录中执行命令 "capabilities": { // 服务器支持的能力声明(FastApps默认支持) "supportsCustomResources": true, // 支持自定义资源 "supportsAuth": true, // 支持身份验证 "supportsToolCalls": true, // 支持工具调用 "supportsResourceTemplates": true // 支持资源模板 } }
请注意:
- 在实际部署或本地开发时,MCP客户端还需要MCP服务器的公共可访问URL来建立连接。
- 当您使用'fastapps dev'命令启动本地服务器时,它会提供一个ngrok公共URL(例如 'https://xyz.ngrok.io')。MCP客户端的实际端点通常是这个公共URL加上'/mcp',例如 'https://xyz.ngrok.io/mcp'。
基本使用方法
- 编辑组件代码: 根据你的需求修改'server/tools/my_widget_tool.py'(Python后端逻辑)和'widgets/my-widget/index.jsx'(React前端UI)。
- 构建前端组件:
npm run build - 启动开发服务器并提供公共访问(推荐):
首次运行会提示你输入ngrok Auth Token(免费获取地址:'https://dashboard.ngrok.com/get-started/your-authtoken')。启动后,它会显示一个公共URL,例如 'https://xyz.ngrok.io'。fastapps dev - 在ChatGPT中测试: 将'fastapps dev'命令输出的公共URL(例如 'https://xyz.ngrok.io')加上 '/mcp'(即 'https://xyz.ngrok.io/mcp')添加到ChatGPT的设置 > 连接器中,即可在对话中测试你的自定义组件。
信息
分类
开发者工具