Setup guide
Seerr MCP setup
This guide connects an Overseerr or Jellyseerr you already run to an AI assistant, using SeerrSense as the MCP server in between. By the end, the assistant can look titles up on your server, work out which one you meant from a description, and file a request after you confirm it.
What runs where
- On your Seerr: the catalogue, availability, quotas, approvals, notifications and the request history. SeerrSense does not replace any of it, and every request is filed through your instance.
- On this server: the MCP endpoint, your sign-in, and the address and API key of your Seerr, with the key encrypted before it is stored. The privacy page says what is kept, for how long, and what the operator can technically see.
- At the model provider: only the phrase you typed, and only when ordinary search finds nothing. The model proposes titles, people and years. It never returns provider ids, and each candidate is checked against your Seerr before you see it.
Before you start
- An Overseerr or Jellyseerr with an address reachable from the internet. Private and internal addresses are refused.
- Its API key, from Settings, then General, then API Key in your Seerr. If the instance sits behind Cloudflare Access, you also need a service token.
- A Google account. On this server, any Google account with a verified e-mail address can sign in.
- An assistant that can use a remote MCP server: Claude, ChatGPT, or another MCP client.
1. Add the connector
The endpoint is the same in every client:
https://seerrsense.mctl.ai/mcp
- claude.ai, Pro or Max: Customize → Connectors → + Add → Add custom connector, then paste the endpoint. On Team and Enterprise, an owner adds it under Organization settings → Connectors, then members press Connect under Customize → Connectors. Anthropic's guide.
- ChatGPT: open Plugins, press the plus button, choose Add
custom MCP server, enter a name and the endpoint, and set authentication to OAuth.
Availability depends on your plan and workspace: OpenAI lists some plans as limited to
read and fetch actions, which would leave out
request_media. OpenAI's guide. - Claude Code:
claude mcp add --transport http seerrsense https://seerrsense.mctl.ai/mcp
2. Sign in with Google
Signing in starts on the first Connect. One consent screen names the client and what it
is being granted: seerr:read for the lookups and seerr:request for
filing requests. There is no token to copy.
3. Attach your Seerr
Open /account and enter your Seerr address, such as
https://seerr.example.com, and its API key. For an instance behind Cloudflare Access,
add its service token in the CF-Access-Client-Id and
CF-Access-Client-Secret fields. Test and save tries the credentials against
your instance before storing them.
4. Run a read-only check
Before requesting anything, ask your assistant:
Use SeerrSense to check who I am,
then tell me whether Arrival is on my server.
This calls whoami and search_media, and neither can change anything.
In the whoami result, connected should be true:
{
"email": "[email protected]",
"source": "own",
"connected": true
}
Each match from search_media carries a TMDB id and a status from your Seerr, such as
AVAILABLE, PENDING or UNKNOWN. UNKNOWN means
your Seerr has no record of the title yet.
5. Resolve an imprecise title
When you remember the story but not the name, describe it:
Find the Danish political drama
with the female prime minister.
resolve_media tries your Seerr's search first and uses the language model only if
that fails. It returns one candidate, with a confidence score and the reason for the match.
The response below is shortened:
{
"candidate": {
"title": "Borgen",
"mediaType": "tv",
"year": 2010,
"providerId": 42445,
"status": "UNKNOWN"
},
"confidence": 0.85,
"matchReason": "title inferred from the description"
}
6. Verify the candidate
Check the title and year against what you had in mind. A high score is the resolver's own estimate, not a guarantee. To see the current record for that id, including whether a request is already waiting for approval, ask:
What is the status of that one on my Seerr?
That calls get_media, which is also read-only.
7. Confirm the request
Request season 1 of that.
request_media is the only tool that writes, and it needs the
seerr:request scope. It is declared as a write so that your assistant can ask you to
confirm first. The server then re-reads the record and refuses a title that is already available,
pending or blocklisted. After that, your Seerr's own quotas and approval rules apply.
Troubleshooting
- “No Seerr is connected to this account yet.” Finish step 3 with the same Google account you used in step 2.
- “Could not reach your Seerr.” Check that the address opens from outside your network, and that any Cloudflare Access service token is entered.
- Sign-in does not finish. Remove the connector, add it again, and pick the Google account you meant.
- The assistant shows old tools. Clients cache the tool list. Start a new conversation, or remove and re-add the connector.
For anything else, see Support.
Disconnect
- Keep the account, detach the Seerr: press Disconnect on /account. The stored address and key are deleted immediately.
- Remove everything: press Delete my account on the same page.
- Remove the connector in your assistant as well, so that it stops holding tokens for this server.
To replace or revoke the key itself, generate a new API key in your Seerr.