Ryot MCP Starter
A local MCP server for interacting with a self-hosted Ryot instance, enabling management of workouts, body measurements, media (movies, shows, games), and collections through natural language.
README
Ryot MCP Starter
A local/private MCP server for a self-hosted Ryot instance, focused on workouts/routines, body measurements, movies, shows, and games.
Project layout
src/
index.ts # MCP bootstrap only
ryot.ts # GraphQL client + live schema helpers
schemas.ts # Shared zod schemas/enums
common.ts # Shared helpers
discovery-tools.ts # Schema/debug/discovery tools
workout-tools.ts # Fitness, measurements, routine tools
media-tools.ts # Movies, shows, games, collections, progress tools
media-convenience-tools.ts # Search-and-act, next-episode, collections, raw review helpers
Configure Cursor/Claude
{
"mcpServers": {
"ryot": {
"command": "node",
"args": ["/absolute/path/to/ryot-mcp-starter/dist/index.js"],
"env": {
"RYOT_BASE_URL": "https://ryot.shivansh.top",
"RYOT_AUTH_HEADER": "Bearer YOUR_RYOT_API_TOKEN",
"RYOT_COOKIE": "",
"RYOT_USER_ID": "",
"RYOT_MOVIE_WATCHLIST_COLLECTION": "Movie Watchlist",
"RYOT_SHOW_WATCHLIST_COLLECTION": "Show Watchlist",
"RYOT_GAME_BACKLOG_COLLECTION": "Game Backlog",
"RYOT_WALKING_EXERCISE_ID": "",
"RYOT_SIT_TO_STAND_EXERCISE_ID": "",
"RYOT_WALL_PUSHUP_EXERCISE_ID": ""
}
}
}
}
RYOT_AUTH_HEADER should contain the exact working Authorization value. For Ryot integration tokens this is usually Bearer <token>.
RYOT_USER_ID is only needed for collection tools such as adding a movie to watchlist or a game to backlog.
Build
npm install
npm run build
Restart Cursor/Claude after every rebuild.
Tools
Core/debug
ryot_health_checkryot_graphqlryot_schema_searchryot_find_candidate_operationsryot_workout_discoveryryot_media_discoveryryot_game_discovery
Fitness/routines
ryot_search_exercisesryot_list_recent_workoutsryot_list_workout_templatesryot_get_workout_detailsryot_get_workout_template_detailsryot_log_workoutryot_create_workout_templateryot_log_body_measurementryot_log_walkryot_log_bodyweight_setryot_log_minimum_workoutryot_create_minimum_routine_templateryot_start_today_routineryot_log_weightryot_log_waistryot_list_measurementsryot_log_minimum_dayryot_log_recovery_dayryot_get_weekly_workout_summary
General media
ryot_search_mediaryot_get_metadata_detailsryot_get_user_metadata_detailsryot_mark_media_progressryot_create_collectionryot_add_to_collectionryot_list_collectionsryot_collection_contentsryot_user_metadata_listryot_create_default_collectionsryot_create_or_update_reviewryot_delete_review
Movies
ryot_search_movieryot_get_movie_statusryot_mark_movie_in_progressryot_mark_movie_watchedryot_add_movie_to_watchlistryot_search_and_mark_movie_watchedryot_search_and_add_movie_to_watchlist
Shows
ryot_search_showryot_get_show_statusryot_mark_show_in_progressryot_mark_show_episode_startedryot_mark_show_episode_watchedryot_add_show_to_watchlistryot_search_and_add_show_to_watchlistryot_search_and_mark_show_episode_watchedryot_get_next_show_episoderyot_mark_next_show_episode_watched
Games
ryot_search_gameryot_get_game_statusryot_mark_game_startedryot_mark_game_completedryot_mark_game_droppedryot_mark_game_on_holdryot_update_game_progress_percentryot_add_game_to_backlogryot_search_and_start_gameryot_search_and_update_game_progressryot_search_and_mark_game_completedryot_search_and_add_game_to_backlog
Notes
Ryot list/search endpoints often return a cached response object rather than full objects directly. This MCP uses live schema introspection to build valid GraphQL selections for object return types, so it should return whatever scalar/cached fields your Ryot version exposes without hard-coding wrapper field names.
For workout logging/templates, Ryot requires internal exerciseId values. Use ryot_search_exercises first, then pass those IDs to ryot_log_workout or set default exercise IDs in env vars.
The high-level routine shortcuts can read default exercise IDs from env vars:
RYOT_WALKING_EXERCISE_IDRYOT_SIT_TO_STAND_EXERCISE_IDRYOT_WALL_PUSHUP_EXERCISE_ID
The collection shortcut tools can read default collection names from env vars:
RYOT_MOVIE_WATCHLIST_COLLECTIONRYOT_SHOW_WATCHLIST_COLLECTIONRYOT_GAME_BACKLOG_COLLECTION
The ryot_search_and_* tools are best-effort wrappers: if Ryot returns only a cached search ID and no metadata ID, they return the search response so you can pick the result and call the ID-based tool.
Review tools are intentionally raw until the exact CreateOrUpdateReviewInput for your Ryot version is confirmed with schema discovery.
Keep this MCP private/local. The generic ryot_graphql tool can run arbitrary queries/mutations against your Ryot account.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.