MONS Athletics

Find your next endurance challenge and train for it with your MONS coach.

使うべきか

品質と安全性

A
説明の品質
94%
スキーマの完全性
83%
命名の品質
87%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'today' description lacks action verbtoday 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~2,995トークン数(ツール定義)
~1.5 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 2.34%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "mons": {
      "url": "https://monsathletics.com/mcp"
    }
  }
}

リモートエンドポイント

https://monsathletics.com/mcpstreamable-http

できること

ツール一覧

ツール(14)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢about_mons

What MONS Athletics is, its training method, who it is for, what it needs (iPhone and Apple Watch), and links to get started.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🟢find_next_challenge(sport, furthest_km, challenge_id)

Takes the furthest a person has run, ridden or swum and gives the first question about their training, plus every challenge in that sport. check_readiness picks the challenge once the questions are answered.

入力スキーマ

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "enum": [
        "running",
        "cycling",
        "swimming"
      ],
      "description": "The sport of the challenge: running, cycling or swimming."
    },
    "furthest_km": {
      "type": "number",
      "minimum": 0,
      "maximum": 10000,
      "description": "The furthest distance the person has ever done in one go in that sport, in kilometres. 0 if never."
    },
    "challenge_id": {
      "description": "Optional: a challenge id from the challenges find_next_challenge lists, when the person names a goal of their own. Omit to let their training answers pick one.",
      "type": "string",
      "maxLength": 64
    }
  },
  "required": [
    "sport",
    "furthest_km"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_readiness(sport, furthest_km, challenge_id, answers, today)

Picks the challenge to aim for from the person's training, how many weeks they are from it, and the one thing that sets the date. Returns the next question while one is unanswered, then the challenge and verdict. Send every answer so far each time.

入力スキーマ

{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "enum": [
        "running",
        "cycling",
        "swimming"
      ],
      "description": "The sport of the challenge: running, cycling or swimming."
    },
    "furthest_km": {
      "type": "number",
      "minimum": 0,
      "maximum": 10000,
      "description": "The furthest distance the person has ever done in one go in that sport, in kilometres. 0 if never."
    },
    "challenge_id": {
      "description": "Optional: a challenge id from the challenges find_next_challenge lists, when the person names a goal of their own. Omit to let their training answers pick one.",
      "type": "string",
      "maxLength": 64
    },
    "answers": {
      "description": "Answers so far, keyed by question id, each the value of the option the person chose. Omit before the first answer.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "enum": [
          "longest",
          "long_count",
          "long_recent",
          "weekly",
          "per_week"
        ]
      },
      "additionalProperties": {
        "type": "number"
      }
    },
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "sport",
    "furthest_km"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡sign_up(mix, kettlebells, date_of_birth, challenge_id, answers, ...)

Sets up the signed-in person's MONS account, as the app's onboarding would. Pass the challenge and answers from check_readiness when there are some. Does nothing to an account already set up.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mix": {
      "type": "string",
      "enum": [
        "runner",
        "swimmer",
        "rider",
        "rider_runner",
        "swimrunner",
        "rider_swimmer",
        "triathlete"
      ],
      "description": "How they want to build endurance: runner, swimmer, rider, rider_runner, swimrunner, rider_swimmer or triathlete."
    },
    "kettlebells": {
      "type": "object",
      "properties": {
        "moderate": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        },
        "heavy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        },
        "extra_heavy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        }
      },
      "required": [
        "moderate",
        "heavy",
        "extra_heavy"
      ],
      "description": "How many kettlebells they own in each weight class, 0 to 2 each. Moderate: get-ups and overhead work. Heavy: swings, squats and presses. Extra heavy: heavy carries. All 0 trains with bodyweight."
    },
    "date_of_birth": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD. MONS is for ages 16 to 80."
    },
    "challenge_id": {
      "description": "Optional: a challenge id from the challenges find_next_challenge lists, when the person names a goal of their own. Omit to let their training answers pick one.",
      "type": "string",
      "maxLength": 64
    },
    "answers": {
      "description": "The check_readiness answers for challenge_id, if any.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "number"
      }
    },
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "mix",
    "kettlebells",
    "date_of_birth"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢my_profile

Whether the account is set up and subscribed, the endurance mix, kettlebells, date of birth and max heart rate.

入力スキーマ

{
  "type": "object",
  "properties": {}
}
🔴update_profile(mix, kettlebells)

Changes how they build endurance (mix) or which kettlebells they have. Send only what changes.

入力スキーマ

{
  "type": "object",
  "properties": {
    "mix": {
      "type": "string",
      "enum": [
        "runner",
        "swimmer",
        "rider",
        "rider_runner",
        "swimrunner",
        "rider_swimmer",
        "triathlete"
      ],
      "description": "How they want to build endurance: runner, swimmer, rider, rider_runner, swimrunner, rider_swimmer or triathlete."
    },
    "kettlebells": {
      "type": "object",
      "properties": {
        "moderate": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        },
        "heavy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        },
        "extra_heavy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        }
      },
      "required": [
        "moderate",
        "heavy",
        "extra_heavy"
      ],
      "description": "How many kettlebells they own in each weight class, 0 to 2 each. Moderate: get-ups and overhead work. Heavy: swings, squats and presses. Extra heavy: heavy carries. All 0 trains with bodyweight."
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢today(today)

Today's sessions as the coach designed them, or that today is not designed yet.

入力スキーマ

{
  "type": "object",
  "properties": {
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴morning_check_in(minutes, cannot_do, today)

The morning check-in: tells the coach how many minutes they have today and what they cannot do, and the coach designs today's sessions. Returns them. Takes up to a minute.

入力スキーマ

{
  "type": "object",
  "properties": {
    "minutes": {
      "type": "integer",
      "minimum": 30,
      "maximum": 600,
      "description": "Minutes they have for training today."
    },
    "cannot_do": {
      "description": "What they cannot do today, e.g. swimming when there is no pool. Omit if everything is possible.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "running",
          "swimming",
          "cycling",
          "strength",
          "yoga"
        ]
      }
    },
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "minutes"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢schedule(today)

The coming days: what each day is set to (rest, long run, a sport), the weekly rules, and the sessions so far.

入力スキーマ

{
  "type": "object",
  "properties": {
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴edit_schedule(days, weekly, today)

Sets what a coming day is for (days), or what a weekday is for every week (weekly). focus none on a day hands it back to the coach for that date only; focus null clears it. Only one weekday can be the long run.

入力スキーマ

{
  "type": "object",
  "properties": {
    "days": {
      "maxItems": 31,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "focus": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "rest",
                  "long_run",
                  "long_swim",
                  "running",
                  "swimming",
                  "cycling",
                  "strength",
                  "mobility",
                  "none"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "date",
          "focus"
        ]
      }
    },
    "weekly": {
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "weekday": {
            "type": "string",
            "enum": [
              "monday",
              "tuesday",
              "wednesday",
              "thursday",
              "friday",
              "saturday",
              "sunday"
            ]
          },
          "focus": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "rest",
                  "long_run",
                  "running",
                  "swimming",
                  "cycling",
                  "strength",
                  "mobility"
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "weekday",
          "focus"
        ]
      }
    },
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ladder(today)

The challenge ladder in order (collected, next, ready, readiness) and the challenges on the calendar, each with the id remove_challenge takes.

入力スキーマ

{
  "type": "object",
  "properties": {
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_challenge(challenge_id, date)

Puts a challenge on a date after today. challenge_id is a challenge id, as find_next_challenge and ladder give them.

入力スキーマ

{
  "type": "object",
  "properties": {
    "challenge_id": {
      "type": "string",
      "maxLength": 64
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD, after today."
    }
  },
  "required": [
    "challenge_id",
    "date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_challenge(id)

Removes a challenge that has not happened yet, by its id from ladder on_the_calendar.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 64
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴ask_coach(message, today)

Sends a message to their MONS coach, in the same thread as the app, and returns the coach's reply. Use for any training question: soreness, a missed session, how a session should feel. The coach may adjust their workouts.

入力スキーマ

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    },
    "today": {
      "description": "The person's local date as YYYY-MM-DD, the day before if it is earlier than 05:00 where they are. Omit if unknown.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 14 件