NoodleSeed-com/hello-chatgpt-apps
If you are the rightful owner of hello-chatgpt-apps and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Noodle Seed ChatGPT App is a production-ready application built with OpenAI's Apps SDK and Model Context Protocol (MCP) to help businesses engage with over 800 million ChatGPT users.
Noodle Seed ChatGPT App
Get Your Business on ChatGPT in Minutes
A production-ready ChatGPT app built with OpenAI's Apps SDK and Model Context Protocol (MCP). Features rich, interactive React widgets that showcase Noodle Seed's platform for helping businesses reach 800M+ ChatGPT users.
Implementation follows official OpenAI patterns from openai/openai-apps-sdk-examples, specifically the pizzaz_server_python
reference implementation.
Features
- šØ 4 Interactive Widgets - Beautiful React components with shared styling
- š OpenAI Best Practices - Follows official design guidelines (max 2 CTAs, no nested scrolling, WCAG AA)
- š§ MCP Server - FastMCP-based server with proper widget resource registration
- š Production Ready - FastAPI + fly.io deployment
- š¦ Modern Tooling - TypeScript, esbuild, uv for Python
Project Structure
noodleseed/
āāā server/
ā āāā noodleseed_app.py # MCP server with tools and widget resources (main)
ā āāā simple_app.py # Simplified example with inline HTML (reference)
āāā web/
ā āāā src/
ā ā āāā common/ # Shared styles and types
ā ā āāā GetStarted.tsx # Service overview widget
ā ā āāā ComparePlans.tsx # Pricing comparison widget
ā ā āāā CaseStudy.tsx # Success stories widget
ā ā āāā ContactForm.tsx # Sales inquiry widget
ā āāā dist/ # Built widget bundles
ā āāā build.js # esbuild configuration
āāā Dockerfile # Multi-stage build
āāā fly.toml # Fly.io configuration
āāā pyproject.toml # Python dependencies (mcp[fastapi])
Available Tools
- get_started - Service overview with pricing and benefits
- compare_plans - Side-by-side tier comparison
- get_case_study - Industry-specific success stories
- contact_sales - Sales inquiry submission
Local Development
Prerequisites
- Python 3.11+
- Node.js 18+
- uv (Python package manager)
- fly CLI (for deployment)
Setup
- Install Python dependencies:
uv sync
- Install Node.js dependencies:
cd web && npm install
- Build widgets:
cd web && npm run build
- Run the server locally:
# Option 1: Run directly with Python
python server/noodleseed_app.py
# Option 2: Run with uvicorn (recommended for production)
uvicorn server.noodleseed_app:app --host 0.0.0.0 --port 8080
The server will start at http://localhost:8080
Testing with ChatGPT
For local testing with ChatGPT Developer Mode, you need to expose your server:
- Using ngrok:
ngrok http 8080
-
Add to ChatGPT:
- Go to ChatGPT Settings ā Apps & Connectors
- Enable Developer Mode
- Click "Create" ā Enter your ngrok URL +
/mcp
- Name it "Noodle Seed"
-
Try these queries:
- "Noodle Seed, how can I get my business on ChatGPT?"
- "Noodle Seed, compare the Starter and Enterprise plans"
- "Noodle Seed, show me a real estate case study"
- "Noodle Seed, I want to contact sales"
Deployment to Fly.io
Initial Setup
- Install fly CLI:
curl -L https://fly.io/install.sh | sh
- Login to fly.io:
fly auth login
- Launch the app:
fly launch
Follow the prompts:
- Choose app name (or use default)
- Select region (default: iad)
- Don't add PostgreSQL or Redis
- Don't deploy yet
Deploy
fly deploy
Get Your URL
fly status
Your app will be available at: https://[app-name].fly.dev
The MCP endpoint for ChatGPT is: https://[app-name].fly.dev/mcp
Monitor
# View logs
fly logs
# Check status
fly status
# Open in browser
fly open
Widget Development
Watch Mode
For active widget development with auto-rebuild:
cd web && npm run watch
Design Guidelines
Following OpenAI's official guidelines:
- ā Max 2 primary actions per widget
- ā No nested scrolling (content auto-fits)
- ā System colors and fonts for native feel
- ā WCAG AA contrast ratios
- ā State payload < 4k tokens
- ā Responsive and accessible
Adding New Widgets
- Create new component in
web/src/YourWidget.tsx
- Add to
components
array inweb/build.js
- Register resource in
server/noodleseed_app.py
- Create corresponding tool that returns
structuredContent
+_meta
Environment Variables
PORT
- Server port (default: 8080)
Architecture
MCP Server (server/noodleseed_app.py)
- Registers 4 HTML widget resources with
mimeType: "text/html+skybridge"
- Each widget URI:
ui://widget/{name}.html
- Tools return structured data + widget reference via
_meta["openai/outputTemplate"]
Widgets (web/src/)
- React components bundled with esbuild
- Receive data via
window.openai.toolOutput
ormessage
events - Can call tools via
window.openai.callTool()
- Sandboxed iframes with system styling
Production Server (app.py)
- FastAPI wrapper for HTTP transport
- Health checks for fly.io
- CORS configured for development
OpenAI Apps SDK Integration
This app is designed to work with OpenAI's Apps SDK and ChatGPT's MCP integration:
- Protocol: Model Context Protocol (MCP)
- Transport: HTTP with Server-Sent Events (SSE), using
stateless_http=True
- Framework: FastMCP (official Python MCP SDK with FastAPI integration)
- Widgets: React components in sandboxed iframes with
text/html+skybridge
MIME type - Data Flow: Tool ā Structured Content ā Widget Rendering
- Pattern: Follows OpenAI's official examples
Implementation Details
MCP Server (server/noodleseed_app.py)
- Uses
mcp[fastapi]
package (official MCP SDK for Python) - Initialized with
stateless_http=True
for proper SSE support - Registers 4 HTML widget resources with
mimeType: "text/html+skybridge"
- Each widget URI follows pattern:
ui://widget/{name}.html
- Tools return three components:
content
: Text confirmation for ChatGPTstructuredContent
: JSON data payload for widgets_meta
: OpenAI metadata includingopenai/outputTemplate
widget binding
License
MIT
Support
For questions about Noodle Seed: sales@noodleseed.com
For technical issues: Open an issue on GitHub