<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj" -->

---
title: How I Accidentally Built an AI Cycling Coach | daily.dev
description: A non-developer describes building a personalized AI cycling coach using Claude, connecting it to his ride-data platform (intervals.icu) via an MCP server, and...
canonical: https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How I Accidentally Built an AI Cycling Coach | daily.dev
og:description: A non-developer describes building a personalized AI cycling coach using Claude, connecting it to his ride-data platform (intervals.icu) via an MCP server, and...
og:url: https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj
og:image: https://api.daily.dev/og/posts/qJ8EVinKJ.png
og:image:alt: How I Accidentally Built an AI Cycling Coach
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How I Accidentally Built an AI Cycling Coach

**[Atomic Spin](https://daily.dev/sources/atomicobject)** · 6 min read · 0 upvotes · 0 comments

## Summary

A non-developer describes building a personalized AI cycling coach using Claude, connecting it to his ride-data platform (intervals.icu) via an MCP server, and even fixing broken server code by asking Claude to debug it directly. The story traces how low-cost AI iteration let someone with no coding background go from frustration with rigid training-plan apps to a working, adaptive coaching system built entirely through conversational prompts and trial and error.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://spin.atomicobject.com/how-i-built-ai-cycling-coach>

## Questions this post answers

### What is an MCP server and why would I use one with Claude?

An MCP server acts as a connector that lets Claude read real external data directly instead of a user manually describing it. In this case, it let Claude access years of cycling ride data, heart rate numbers, and training history stored on intervals.icu, enabling the AI to build and adjust a training plan based on what actually happened each week rather than a static predetermined schedule.

_Developers exploring MCP integrations for personal or agentic projects can follow related coverage on daily.dev._

### Can Claude fix broken code in a tool it's connected to without the user knowing how to code?

Yes, when the intervals.icu API changed and broke several calls in the MCP server's code, a non-developer simply asked Claude to read the code, find the problem, and fix it, which it did after some back and forth. The user's contribution was limited to typing a prompt to point the AI at the broken code.

_Anyone weighing how far AI agents can go on debugging tasks can track real examples like this on daily.dev._

## Similar posts on daily.dev

- [I Let Claude AI Work Beside Me for 30 Days — It Changed How I Build Software](https://daily.dev/posts/i-let-claude-ai-work-beside-me-for-30-days-it-changed-how-i-build-software-eyij78o8j) · Medium · 0 upvotes · 0 comments
- [My AI learning journey](https://daily.dev/posts/my-ai-learning-journey-i6xkd16r0) · Agile Testing · 1 upvotes · 0 comments
- [It’s Over](https://daily.dev/posts/it-s-over-tnbpdxidn) · Swiftjective-C · 0 upvotes · 0 comments

---

Tags: [#ai-coding](https://daily.dev/tags/ai-coding), [#mcp](https://daily.dev/tags/mcp), [#claude](https://daily.dev/tags/claude), [#vibe-coding](https://daily.dev/tags/vibe-coding)

[View this post on daily.dev](https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How I Accidentally Built an AI Cycling Coach","url":"https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj"},"datePublished":"2026-08-15T12:06:20.682Z","dateModified":"2026-09-13T19:57:26.861Z","description":"A non-developer describes building a personalized AI cycling coach using Claude, connecting it to his ride-data platform (intervals.icu) via an MCP server, and...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2b6cb7b0eee97811c1f76b1625fbdb82?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2b6cb7b0eee97811c1f76b1625fbdb82?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Atomic Spin","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Atomic Spin","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/e2af5ce3adaa403a8cf029268b62419f","url":"https://daily.dev/sources/atomicobject"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ai-coding,mcp,claude,vibe-coding","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Atomic Spin","item":"https://daily.dev/sources/atomicobject"},{"@type":"ListItem","position":3,"name":"How I Accidentally Built an AI Cycling Coach"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-i-accidentally-built-an-ai-cycling-coach-qj8evinkj#faq","mainEntity":[{"@type":"Question","name":"What is an MCP server and why would I use one with Claude?","acceptedAnswer":{"@type":"Answer","text":"An MCP server acts as a connector that lets Claude read real external data directly instead of a user manually describing it. In this case, it let Claude access years of cycling ride data, heart rate numbers, and training history stored on intervals.icu, enabling the AI to build and adjust a training plan based on what actually happened each week rather than a static predetermined schedule. Developers exploring MCP integrations for personal or agentic projects can follow related coverage on daily.dev."}},{"@type":"Question","name":"Can Claude fix broken code in a tool it's connected to without the user knowing how to code?","acceptedAnswer":{"@type":"Answer","text":"Yes, when the intervals.icu API changed and broke several calls in the MCP server's code, a non-developer simply asked Claude to read the code, find the problem, and fix it, which it did after some back and forth. The user's contribution was limited to typing a prompt to point the AI at the broken code. Anyone weighing how far AI agents can go on debugging tasks can track real examples like this on daily.dev."}}]}
```

