How to set up a remote MCP server and connect it to ChatGPT deep research

Wanted to share a repo I put together (typescript, next.js) with an example of a working custom connector with OAuth. Hopefully it can help a few folks here get started quicker.

GitHub:

obannon37/chatgpt-deep-research-connector-example

(posting repo/project as links seem to get blocked)

My experience was the same - I can’t get Deep Research to actually user the data I return from the search tool. I can see in my logs that it’s passing data but ChatGPT acts like I’m speaking gibberish to it… but I don’t know why!

Some more docs or some guidance here from OpenAI would be appreciated. We want this to work!

same here.

I’m also very disappointed with the VERY LIMITED implementation. Anyway I have another weirder problem: my MCP is working in assistant (‘search’ and ‘fetch’ correctly found as tools and working perfectly), but when added to Deep Research it says it doesn’t follow the specifications? How do the two differ?

Getting the red text error message next to the custom connector saying it doesn’t follow the specifications happens sometimes even when the connector does follow the spec. If it does actually follow the spec, it will still work when doing Deep Research though!

1 Like

Actually I can confirm, you go on Edit and there is all fine, reloading the page it makes it then appear in Deep Research. An incredibly fragile and limited MPC implementation is what they did.

@sobannon in your working example you talk about implementing a custom OAUTH for various reasons…any more light on it? I’m trying to implement a simple OAUTH with Clark, works perfectly on Claude and locally on Cursor, but ChatGPT after being called back from Clerk after authorisation simply stalls for a few seconds on a blank page and then says there was an error. I see on my side that it never calls back to my endpoints after reaching https://chatgpt.com/connector_platform_oauth_redirect

What are the reasons you needed to implement a custom OAUTH?

This seems based on the example code, and is incorrect I think. According to the schema OpenAI publishes there are multiple required return fields like id, title,text…

It’s super confusing - the page says one thing and the example implies another. And the error messages are very unhelpful.