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

  1. 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.

  1. 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.

  1. 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.

  1. Setting Up OAuth Redirect URIs

Add OpenAI’s redirect URI to your OAuth

Leave a Reply

Your email address will not be published. Required fields are marked *