Trainer Connect

Manage students, workouts, appointments and payments through your personal trainer account.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
96%
이름 품질
94%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,915토큰 (도구 정의)
~1.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.28%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "personal-trainer": {
      "url": "https://api.trainerconnect.com.br/mcp"
    }
  }
}

원격 엔드포인트

https://api.trainerconnect.com.br/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (14)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢list_students(search, status)

Lists the connected personal trainer's students with status, goal and start date. Optionally filter by part of the name. Use the returned student_id with get_student.

입력 스키마

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Part of the student's name.",
      "maxLength": 80,
      "type": "string"
    },
    "status": {
      "description": "\"active\" (default) or \"all\", which includes pending and inactive students.",
      "enum": [
        "active",
        "all"
      ],
      "type": "string"
    }
  }
}
🟢get_student(student_id)

Gets one of the trainer's students: profile (goal, age, weight, height), the active workouts with their exercises, sets, reps and load, and the latest logged sessions with how many in the last 30 days.

입력 스키마

{
  "type": "object",
  "properties": {
    "student_id": {
      "description": "The student_id returned by list_students.",
      "type": "integer"
    }
  },
  "required": [
    "student_id"
  ]
}
🟢get_schedule(from, to)

Lists the trainer's classes and appointments between two dates (today and the next 7 days by default): date and time, student, type, status, place and notes. Times are in Brazil time (America/Sao_Paulo).

입력 스키마

{
  "type": "object",
  "properties": {
    "from": {
      "description": "First day, YYYY-MM-DD. Default: today.",
      "maxLength": 10,
      "type": "string"
    },
    "to": {
      "description": "Last day, YYYY-MM-DD. Default: 7 days after \"from\". At most 62 days after \"from\".",
      "maxLength": 10,
      "type": "string"
    }
  }
}
🟢list_payments(status, from, to)

Lists what the trainer's students paid or owe: amount, student, due date, paid date and status. Use status "overdue" for unpaid charges past their due date, "open" for everything not paid yet, "paid" for received payments. Totals are in BRL.

입력 스키마

{
  "type": "object",
  "properties": {
    "status": {
      "description": "\"overdue\", \"open\", \"paid\" or \"all\" (default).",
      "enum": [
        "overdue",
        "open",
        "paid",
        "all"
      ],
      "type": "string"
    },
    "from": {
      "description": "Due or paid on or after, YYYY-MM-DD.",
      "maxLength": 10,
      "type": "string"
    },
    "to": {
      "description": "Due or paid on or before, YYYY-MM-DD.",
      "maxLength": 10,
      "type": "string"
    }
  }
}
🟡create_student(name, email, phone, goal, weight_kg, ...)

Adds a student to the trainer's account, like "Adicionar aluno" in the app: the student gets an e-mail invite to install the app and see workouts. Name and e-mail are required; goal, weight, height, birth date and sex are optional. Respects the student limit of the trainer's plan.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Student full name.",
      "maxLength": 255,
      "type": "string"
    },
    "email": {
      "description": "Student e-mail (the invite goes there).",
      "maxLength": 255,
      "type": "string"
    },
    "phone": {
      "description": "Phone with area code.",
      "maxLength": 30,
      "type": "string"
    },
    "goal": {
      "description": "Goal, e.g. hipertrofia, emagrecimento.",
      "maxLength": 255,
      "type": "string"
    },
    "weight_kg": {
      "description": "Weight in kg.",
      "type": "number"
    },
    "height_cm": {
      "description": "Height in cm.",
      "type": "number"
    },
    "birth_date": {
      "description": "YYYY-MM-DD.",
      "maxLength": 10,
      "type": "string"
    },
    "sex": {
      "enum": [
        "male",
        "female"
      ],
      "type": "string"
    }
  },
  "required": [
    "name",
    "email"
  ]
}
🟢search_exercises(search)

Searches the Trainer Connect exercise library (with demo videos), in Portuguese or English: "supino", "agachamento", "remada", "glúteo", "esteira". Returns the exercise id to pass as edb_exercise_id in create_workout, so the student sees the video.

입력 스키마

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Exercise name or muscle.",
      "maxLength": 120,
      "type": "string"
    }
  },
  "required": [
    "search"
  ]
}
🟡create_workout(title, student_id, program, day_of_week, description, ...)

Creates a workout, assigned to a student (student_id) or as a template when student_id is empty, with its exercises: sets, reps (or a range with reps_max), load, rest, duration for cardio, notes. Exercises are matched to the Trainer Connect library by name so the student sees the demo video (or pass edb_exercise_id from search_exercises). For a weekly program, call it once per day with the same program name and day_of_week. The student is notified, like in the app.

입력 스키마

{
  "type": "object",
  "properties": {
    "title": {
      "description": "Workout name, e.g. \"Treino A - Peito e Tríceps\".",
      "maxLength": 255,
      "type": "string"
    },
    "student_id": {
      "description": "student_id from list_students. Empty = template in the trainer's library.",
      "type": "integer"
    },
    "program": {
      "description": "Program/week name that groups the days, e.g. \"Hipertrofia outubro\".",
      "maxLength": 255,
      "type": "string"
    },
    "day_of_week": {
      "description": "monday … sunday.",
      "enum": [
        "monday",
        "tuesday",
        "wednesday",
        "thursday",
        "friday",
        "saturday",
        "sunday"
      ],
      "type": "string"
    },
    "description": {
      "description": "Notes for the student.",
      "maxLength": 2000,
      "type": "string"
    },
    "estimated_minutes": {
      "description": "Expected duration.",
      "type": "integer"
    },
    "exercises": {
      "description": "Exercises in order.",
      "minItems": 1,
      "items": {
        "properties": {
          "name": {
            "type": "string"
          },
          "sets": {
            "type": "integer"
          },
          "reps": {
            "type": "integer"
          },
          "reps_max": {
            "description": "Top of a rep range, e.g. 8-12.",
            "type": "integer"
          },
          "weight": {
            "description": "Load in kg.",
            "type": "number"
          },
          "rest_seconds": {
            "type": "integer"
          },
          "duration_seconds": {
            "description": "For cardio or isometric holds.",
            "type": "integer"
          },
          "notes": {
            "type": "string"
          },
          "edb_exercise_id": {
            "description": "From search_exercises.",
            "type": "integer"
          },
          "phase": {
            "enum": [
              "warmup",
              "main",
              "cooldown"
            ],
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "type": "array"
    }
  },
  "required": [
    "title",
    "exercises"
  ]
}
🟡schedule_class(date_time, student_id, duration_minutes, title, location, ...)

Books a class or appointment on the trainer's schedule (Brazil time, America/Sao_Paulo), with a student or as a personal block when student_id is empty. The student is notified, like in the app. Cancelling or moving a class is done in the app (or with api_write on /v1/appointments/{id} where that tool exists).

입력 스키마

{
  "type": "object",
  "properties": {
    "date_time": {
      "description": "Start, \"YYYY-MM-DD HH:MM\" in Brazil time.",
      "maxLength": 20,
      "type": "string"
    },
    "student_id": {
      "description": "student_id from list_students; empty for a personal block.",
      "type": "integer"
    },
    "duration_minutes": {
      "description": "Default 60.",
      "type": "integer"
    },
    "title": {
      "maxLength": 255,
      "type": "string"
    },
    "location": {
      "maxLength": 500,
      "type": "string"
    },
    "notes": {
      "maxLength": 2000,
      "type": "string"
    }
  },
  "required": [
    "date_time"
  ]
}
🟢list_operations(keyword)

Lists the Trainer Connect app operations this connection can run (method, path, summary): students, workouts and programs, exercise library, schedule and classes, workout sessions and history, physical assessments, anamnesis, diet plans and nutrition, check-ins, chat, contracts, charges and payments, team, public page, AI generation and more. Filter with a keyword (Portuguese or English, e.g. "workout", "assessment", "diet", "appointment", "charge"). Then use describe_operation to see the fields and api_read or api_write to run it. Also returns the connected trainer_id, used in paths like /v1/trainers/{trainerId}/students.

입력 스키마

{
  "type": "object",
  "properties": {
    "keyword": {
      "description": "Part of the path or summary, e.g. \"workout\", \"assessment\", \"diet\".",
      "maxLength": 60,
      "type": "string"
    }
  }
}
🟢describe_operation(method, path)

Shows what one Trainer Connect operation accepts: route parameters and the validation rules of each field (required, type, allowed values). Use it before api_write so the request is right the first time.

입력 스키마

{
  "type": "object",
  "properties": {
    "method": {
      "description": "HTTP method from list_operations.",
      "enum": [
        "GET",
        "POST",
        "PUT",
        "PATCH",
        "DELETE"
      ],
      "type": "string"
    },
    "path": {
      "description": "Path from list_operations, with or without ids filled in, e.g. /v1/workouts.",
      "maxLength": 200,
      "type": "string"
    }
  },
  "required": [
    "method",
    "path"
  ]
}
🟢api_read(path, query)

Runs any GET operation from list_operations as the connected trainer and returns the same JSON the app gets: a student's assessments, anamnesis, diet plan, workout history and sessions, check-ins, chat messages, contracts, financial metrics, the exercise library and more. Same permissions as the app.

입력 스키마

{
  "type": "object",
  "properties": {
    "path": {
      "description": "Path with ids filled in, e.g. /v1/students/312/assessments.",
      "maxLength": 300,
      "type": "string"
    },
    "query": {
      "description": "Query string parameters, e.g. {\"search\": \"supino\"}.",
      "type": "object"
    }
  },
  "required": [
    "path"
  ]
}
🔴api_write(method, path, body)

Runs any POST, PUT, PATCH or DELETE operation from list_operations as the connected trainer, exactly as the app would: edit or archive workouts, assign programs, log or edit a session, create assessments, diet plans and check-ins, send chat messages, cancel or move classes, create contracts and charges, update the public page, and more. Same permissions, plan limits and validation as the app; a 422 lists what is missing. It can notify students (push, e-mail) and some operations cannot be undone, so confirm with the person first. Withdrawals, bank details, password and account deletion stay in the app.

입력 스키마

{
  "type": "object",
  "properties": {
    "method": {
      "description": "HTTP method from list_operations.",
      "enum": [
        "POST",
        "PUT",
        "PATCH",
        "DELETE"
      ],
      "type": "string"
    },
    "path": {
      "description": "Path with ids filled in, e.g. /v1/workouts/5216.",
      "maxLength": 300,
      "type": "string"
    },
    "body": {
      "description": "JSON body with the fields from describe_operation.",
      "type": "object"
    }
  },
  "required": [
    "method",
    "path"
  ]
}
🟢find_trainers(query, location, modality)

Find personal trainers listed in the public Trainer Connect directory (most are in Brazil; some are Brazilian trainers abroad), by specialty, name, city or state, and online or in-person. Specialties are written in Portuguese, e.g. "musculação", "emagrecimento", "funcional", "corrida", "hipertrofia". Returns up to 10 trainers with their public profile link. Contact details are never returned: the person talks to the trainer through the profile page.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Specialty, goal or trainer name, in Portuguese when possible, e.g. \"emagrecimento\", \"musculação\", \"gestante\".",
      "type": "string"
    },
    "location": {
      "description": "City and/or Brazilian state (name or two-letter code), e.g. \"Campinas\", \"SP\", \"Rio de Janeiro\". Leave out for online coaching, which works from anywhere.",
      "type": "string"
    },
    "modality": {
      "description": "online for remote coaching, in_person for sessions at a gym or at home.",
      "enum": [
        "online",
        "in_person"
      ],
      "type": "string"
    }
  }
}
🟢get_trainer(trainer)

Show the public profile of one personal trainer from the Trainer Connect directory: bio, specialties, where they work, online or in person, and the plans they publish with price and billing period. The person contacts the trainer or signs up for a plan on the profile_url page; this connector never books, pays or sends messages.

입력 스키마

{
  "type": "object",
  "properties": {
    "trainer": {
      "description": "The trainer id (\"trainer\" field) returned by find_trainers.",
      "type": "string"
    }
  },
  "required": [
    "trainer"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 14개