Skip to main content

Overview

ChatGPT Apps extend ChatGPT with custom functionality by talking to an external MCP server. Mirobody runs as an OAuth-enabled HTTP Remote MCP server out of the box — all you need is a public HTTPS URL pointed at your Mirobody instance.

How it works

Mirobody’s MCP server is a first-class HTTP service. When you set MCP_PUBLIC_URL in your config, Mirobody advertises that URL as its remote endpoint and accepts MCP traffic over HTTPS at <MCP_PUBLIC_URL>/mcp. ChatGPT (or any remote MCP client) connects there, authenticates via OAuth, and starts calling tools.

Prerequisites

You need a publicly-reachable HTTPS URL that forwards to your Mirobody instance.
1

Make sure Mirobody is running

Local: http://localhost:18080/mcp should return MCP JSON. Verify with:
curl -X POST http://localhost:18080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
2

Choose a public-URL strategy

Option A — quick demo (tunnel from your laptop):
# ngrok
ngrok http 18080

# Or cloudflared
cloudflared tunnel --url http://localhost:18080
Use the resulting HTTPS URL (e.g. https://abc123.ngrok.io).Option B — production (deploy with your own domain): terminate TLS at a reverse proxy (Caddy / nginx / a managed load balancer) and forward to your Mirobody container.
3

Set MCP_PUBLIC_URL

Add to your config.{env}.yaml:
MCP_PUBLIC_URL: "https://abc123.ngrok.io"   # or your production domain
Restart Mirobody. Your public MCP endpoint is now https://abc123.ngrok.io/mcp.
Treat this URL as secret-equivalent — anyone who can reach it can attempt to OAuth into your Mirobody instance.

Creating a ChatGPT App

Once MCP_PUBLIC_URL is set and your tunnel/domain is reachable, register the app in ChatGPT:
1

Access ChatGPT Apps

Open ChatGPT and navigate to the Apps section. You’ll see your existing apps and the option to create new ones.
ChatGPT Apps main interface showing available apps
2

Enable Developer Mode

Click on “Create your own” or access Developer Mode to start building a custom app. This will open the app creation interface where you can configure your Mirobody connection.
ChatGPT Developer Mode for creating custom apps
3

Add your MCP endpoint

In the app configuration:
  1. Name your app: e.g. “Mirobody”
  2. Add MCP endpoint: your MCP_PUBLIC_URL plus /mcp (e.g. https://abc123.ngrok.io/mcp)
  3. Description (optional): describe what your app does
  4. Test connection: ChatGPT validates connectivity and discovers tools
Adding a new ChatGPT app with MCP endpoint configuration
ChatGPT auto-discovers every tool registered in your Mirobody instance — including anything you drop into the top-level tools/ and skills/ directories.
4

Authenticate via OAuth

On first call ChatGPT redirects you to Mirobody’s built-in OAuth login. Sign in once and the token is reused for the rest of the ChatGPT session.
5

Start using your app

The connected ChatGPT session can now:
  • Retrieve health profiles and time-series data
  • Query data from connected providers (Garmin, Whoop, Oura, Renpho, Apple/Google Health, EHR)
  • Call any custom tool you registered in tools/
  • Activate any Skill from skills/
  • Read resources exposed at resources/
Your ChatGPT App is now wired to Mirobody.

Available Capabilities

Once connected, ChatGPT has access to:

Health Profile

Comprehensive user health context and connected device info

Time-Series Queries

400+ standardized indicators with FHIR/LOINC/SNOMED CT cross-vocabulary search

Custom Tools

Anything you registered under tools/

Skills

Claude Agent Skills auto-discovered from skills/

MCP Resources

Static and dynamic resources via resources/

Sandbox Execution

The execute tool runs Python / shell inside an E2B sandbox

Example Use Cases

ChatGPT can synthesize across devices, records, and uploaded files. Real-world examples:

Quick Queries

For simple questions, you can ask:
"Show me my health profile"
"What was my heart rate yesterday?"
"Compare my sleep data from this week to last week"
"What health devices do I have connected?"

Advanced Analysis: Diabetes Management

Prompt: “Summarize the history and recent progress of my diabetes. Use Theta to find data from devices, records, and other relevant sources.”

View Full Conversation

See the complete diabetes analysis conversation

Interactive Chart

Explore the interactive glucose trend visualization

Advanced Analysis: Pain Pattern Recognition

Prompt: “Help me understand the whole picture and the progress of my knee pain. Use all relevant data and find potential drivers. Use visual illustrations if it’s helpful.”

View Full Analysis

See how ChatGPT analyzes complex pain patterns with multi-source data
The same MCP endpoint also works for Claude Desktop, Cursor, and any other MCP client — see MCP Integration.

Security Considerations

OAuth is built in. Anyone calling the MCP endpoint must complete Mirobody’s OAuth flow first, so even a leaked URL can’t be used without a valid session.
Additional hardening:
  • Treat MCP_PUBLIC_URL as a secret; do not share it publicly
  • Put the endpoint behind rate-limiting (Mirobody’s server/ middleware, or your reverse proxy)
  • Monitor access logs for unusual patterns
  • Only expose the tunnel when you’re actively using it
  • For production: TLS at a managed proxy, IP allowlist if possible, observability on /mcp
  • OAuth tokens expire — users will re-authenticate periodically

Troubleshooting

Connection failed

  1. Verify your tunnel / domain is reachable: curl -I https://<MCP_PUBLIC_URL>/mcp
  2. Confirm Mirobody is bound to 0.0.0.0:18080 inside its container
  3. Confirm MCP_PUBLIC_URL matches the URL you’re giving ChatGPT
  4. Restart Mirobody after editing the config — it’s only re-read on startup

Tools not appearing

  1. Hit /mcp directly with tools/list and confirm tools are returned
  2. Check Mirobody logs for tool-loading errors at startup
  3. Make sure your files in tools/ follow the docstring convention (see Adding Tools)
  4. Drop --no-cache and rebuild if you changed mirobody/pub/tools/ and don’t see updates