Private Trakt MCP
Provides tools for accessing a private Trakt account, including viewing history, TV progress, recommendations, watchlists, and ratings. In tracking mode it can also mark episodes watched, add items to the watchlist, and save ratings, while excluding deletion, check-ins, scrobbling, and recommendation hiding.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Private Trakt MCPHow far am I through season 2 of The Bear?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Private Trakt MCP on Cloudflare
A single-owner ChatGPT connector for viewing history, TV progress, recommendations, watchlists, and ratings. Runs a pinned wwiens Trakt server behind the owner-only OAuth gateway adapted from the Intervals template.
GitHub OAuth verifies the exact numeric owner. ChatGPT receives separate gateway tokens with S256 PKCE, explicit browser-bound consent, audience checks, and refresh validation. Public discovery/registration never grants access to your data.
flowchart LR
C[ChatGPT] -->|OAuth and MCP| W[Worker]
W -->|Owner identity| G[GitHub OAuth]
W --> K[OAuth KV]
W --> D[Owner Durable Object]
D --> P[Python Trakt container]
P --> T[Trakt API]
P -->|Private token bridge| DThe public template defaults to read-only (29 tools, including three account
authorization tools). Private accessMode: track adds mark watched, add to
watchlist, and save rating (32 tools). Writes require intentional user
requests; marking history twice may create duplicate plays. Deletion, check-ins,
scrobbling, and recommendation hiding are excluded at registration. Saving a
rating may replace an existing rating. clear_auth disconnects Trakt; it does not
delete viewing data.
Trakt tokens persist in Cloudflare Durable Object storage before login/refresh reports success. Container disk is never the source of truth. Container restarts retain authorization; an unfinished device-code flow must be restarted.
Setup
Set up with a coding agent
Fork or clone this template into your repository, then give the agent:
Follow AGENTS.md's end-to-end setup and resume runbook to deploy my own single-owner Trakt MCP server to my Cloudflare account. Automate the authorized checks, configuration and deployment; guide me through browser approvals and secure secret entry. Ask whether I want read-only or tracking mode. Complete Trakt device authorization and a real personal-data query, then report each acceptance result and any outstanding user-only checks.
The agent runbook covers fresh setup, interrupted provisioning and existing instances. The troubleshooting guide records the failures encountered in live setup and the verified fixes.
Prerequisites and local checks
Requires Node from .node-version, Docker with Linux amd64, Chrome/Chromium,
and a Cloudflare Workers Paid account with Containers. Usage is billable; one
named instance and ten-minute idle sleep are not a spending cap.
npm ci
npm run check:public
npm run check
REQUIRE_BROWSER_TESTS=true npm test
docker build --platform linux/amd64 -t trakt-mcp:test .
npm run test:container
npm run test:adapter
npm run build
npx cf deploy --prebuilt --mode production --dry-runCopy deployment.json to ignored mode-0600 deployment.local.json. Fill your
account, stable origin, verified numeric GitHub owner ID, GitHub OAuth Client ID,
and Trakt Development app Client ID. Set accessMode to track for the three
tracking tools. Keep deleteMode: none. TRAKT_DEPLOYMENT_FILE selects an
alternative private settings file. No credentials or personal settings belong in
the public template.
Follow deployment, including secure GitHub secret entry.
Connect ChatGPT to PUBLIC_ORIGIN/mcp, choose OAuth, and leave client
credentials blank when optional. Approve consent and GitHub login. Then ask the
connector to start Trakt device authorization, approve the displayed code on
Trakt, and ask it to check authorization status. Refresh tools after changes.
Visible tools alone are not acceptance: execute a small personal history/progress
query after Trakt approval. Current Trakt apps need no client secret; the required
GitHub client secret belongs to a different authentication layer.
Gateway: Apache-2.0. Trakt server: MIT; its notice is included in the image. Source commits and modifications are recorded in NOTICE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query your Twitch streams, events, supporters, raids & rankings from an AI assistant via OAuth.
Connects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.
Connect your AI assistant to Revnu, your autonomous growth agent for outbound sales, SEO, content, social media and ads. Use this MCP connector to read leads and campaign results, review and approve queued work, hand jobs to your Revnu agent, and schedule recurring workflows from your AI chat. Supports Streamable HTTP and OAuth with permissions you choose at sign-in. Tools act on your connected Revnu account; write actions require explicit permissions. Learn more and connect at https://revnu.com/mcp.
Manage your Twitch raid-train schedule from an AI assistant: claim, release & trade slots via OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables MCP-compatible AI agents to interact with Trakt.tv, including search, movies, TV shows, and user account features like watchlist and history.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query TV and movie metadata from Trakt, including details, trending, popular content, and watch tracking signals through MCP tools.1 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables ChatGPT to connect to and interact with Strava via a stateless relay with browser-guided OAuth sign-in.MIT
- AlicenseCqualityAmaintenanceEnables reading and writing Trakt data from Claude.ai and Claude Code, covering all 334 API endpoints including shows, movies, lists, calendars, scrobbling, and account sync.339122 npmMIT