The framework for apps in ChatGPT
PyPI
Python
PyPI Downloads
License
CI Status
Code style: black
Ruff
GitHub Stars
📚 Documentation: https://docs.fastapps.org/
👥 Community: Join Our Discord
We recommend installing FastApps with uv:
uv tool install fastapps
uv tool install --upgrade fastapps # Update to the latest versionFor full installation instructions, including verification, upgrading from the official MCPSDK, and developer setup, see the Installation Guide.
Then, you can quickstart by running commands below :
uv run fastapps init my-app cd my-app uv sync # Install Python deps & create uv.lock uv run fastapps dev
That's it! You'll gonna see an image with a public url. You can test the server with following guides.
The public url is one-time, generated with cloudflare tunnel.
FastApps projects now rely on pyproject.toml + uv.lock for Python dependencies.
uv syncinstalls everything defined inpyproject.tomland writes/updatesuv.lockfor reproducible builds. Run it whenever you pull new changes or after editing dependencies.uv add <package>adds new dependencies and immediately updates bothpyproject.tomlanduv.lock.uv run <command>executes CLI tools (likefastapps dev) inside the synced environment without activating a virtualenv manually.
Tip: If
uvis not installed, follow their installation instructions and rerunuv sync. Withoutuv, FastApps commands that manage dependencies (e.g.,fastapps init,fastapps use) will fail with a helpful error message.
MCP server is available at /mcp endpoint of fastapps server.
Example : https://your-public-url.trycloudflare.com/mcp
Option A: Test on MCPJam Inspector
Add your public URL + /mcp to ChatGPT.
npx @mcpjam/inspector@latest
Option B: Test on ChatGPT
Add your public URL + /mcp to ChatGPT's "Settings > Connectors" .
uv run fastapps create additional-widget
FastApps provides pre-built templates to jumpstart your widget development:
# Create widget from a template uv run fastapps create my-list --template list # Vertical list with items uv run fastapps create my-carousel --template carousel # Horizontal scrolling cards uv run fastapps create my-albums --template albums # Photo gallery viewer
You'll only need to edit these 2 folders:
This folder contains backend .py files, where you define conditions & server logics for the app.
Example :
### my_widget_tool.py from fastapps import BaseWidget, Field, ConfigDict from pydantic import BaseModel from typing import Dict, Any class MyWidgetInput(BaseModel): model_config = ConfigDict(populate_by_name=True) name: str = Field(default="World") class MyWidgetTool(BaseWidget): identifier = "my-widget" title = "My Widget" input_schema = MyWidgetInput invoking = "Processing..." invoked = "Done!" widget_csp = { "connect_domains": [], # APIs you'll call "resource_domains": [] # Images/fonts you'll use } async def execute(self, input_data: MyWidgetInput) -> Dict[str, Any]: # Your logic here return { "name": input_data.name, "message": f"Hello, {input_data.name}!" }
The folder contains frontend component codes that will show up on the app screen according to the rules you've define with python codes above.
Apps in GPT components are react components - FastApps follows it. You can custom compoenents as you wish.
// my-widget/index.jsx import React from 'react'; import { useWidgetProps } from 'fastapps'; export default function MyWidget() { const props = useWidgetProps(); return ( <div style={{ padding: '40px', textAlign: 'center', background: '#4A90E2', color: 'white', borderRadius: '12px' }}> <h1>{props.message}</h1> <p>Welcome, {props.name}!</p> </div> ); }
That's it! These are the only files you need to write.
We welcome contributions! Please see our contributing guidelines:
- Contributing Guide - How to contribute to FastApps
- Code Style Guide - Code formatting and style standards
- GitHub Workflows - CI/CD documentation
# Fork and clone the repository git clone https://github.com/YOUR_USERNAME/FastApps.git cd FastApps # Install uv (if not already installed) # curl -LsSf https://astral.sh/uv/install.sh | sh # Install development dependencies (recommended - matches CI) uv sync --dev # Install pre-commit hooks (already installed via uv sync --dev) uv run pre-commit install # Make changes and ensure they pass checks uv run black . uv run ruff check --fix . uv run pytest # Submit a pull request
MIT © FastApps
- PyPI: https://pypi.org/project/fastapps/
- React Hooks: https://www.npmjs.com/package/fastapps
- GitHub: https://github.com/FastAppsOrg/FastApps
- MCP Spec: https://modelcontextprotocol.io/