Just submitted my MCP Server to the OpenAI Apps SDK – Adspirer (sorry long post)
By Holidays in Europe / December 22, 2025 / No Comments / Uncategorized
Streamlining AI Integrations: A Comprehensive Guide to Submitting Your MCP Server to the OpenAI Apps SDK
If you’re developing an application that integrates external APIs with ChatGPT via the OpenAI Apps SDK, navigating the submission process can be intricate. Recently, I completed the submission of my MCP server—Adspirer—to the OpenAI platform, and I want to share a detailed walkthrough to help others make the process smoother. This guide covers each step, common pitfalls, and best practices for a successful application review.
Overview of the Application
Adspirer (adspirer.com) operates as an MCP (Multi-Connect Platform) server interfacing with Google Ads, TikTok Ads, and Meta Ads APIs. Users can perform various advertising-related tasks—such as campaign creation, performance analysis, and keyword research—directly within ChatGPT, supported by a suite of 36 specialized tools.
Step-by-Step Submission Process
- Designing App Icons
Two distinct icons are required to ensure proper display across ChatGPT themes:
- Light Mode Icon
- Dark Mode Icon
Ensure both are in a suitable format and appropriately represent your app’s branding.
- Providing App Metadata
Complete the app’s descriptive details:
- App Name: Keep it concise.
- Short Description: A brief, one-line summary appearing in search results.
- Long Description: An expanded explanation of app features and functionality.
- Category Selection: Choose the most relevant classification.
- Privacy Policy URL: Must be a live URL hosting your privacy policy.
-
Terms of Service URL: Also required to be live.
-
Configuring MCP Server Settings
Set your MCP server endpoint, such as https://mcp.adspirer.com/mcp, and select OAuth as the authentication method.
- Domain Ownership Verification
OpenAI requires verification of domain ownership by serving a specific token. They provide a challenge token to be hosted at:
GET /.well-known/openai-apps-challenge
This endpoint must return the token as plain text. Here’s an example implementation using FastAPI:
“`python
from fastapi.responses import PlainTextResponse
@app.get(“/.well-known/openai-apps-challenge”)
async def openai_apps_challenge():
return PlainTextResponse(content=”your-verification-token”, media_type=”text/plain”)
“`
OpenAI will ping this endpoint during verification; ensure it responds correctly to confirm domain ownership.
- Setting Up OAuth Redirect URIs
Add OpenAI’s redirect URI to your OAuth