mcpField
C

CourseProfiler

Remote
courseprofiler.comHealth

About CourseProfiler

Race course profiling, catalog search, course submission, and personalized race plans

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://courseprofiler.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

26
ParameterTypeRequiredDescription
pdfobjectNo
pdf.enabledbooleanNo
pdf.optionsobjectNo
courseobjectNo
course.sourceobjectNo
course.source.urlstringNoFetchable public URL to a GPX, FIT, CRSProf, USRProf, or evidence file. For course inputs, prefer official direct GPX/FIT/CRSProf URLs over generic race homepages, but stop and ask the user to download/upload when the host blocks server fetches (for example 403 from Wikiloc or other route hosts). Do not synthesize course geometry from roadbooks, checkpoint tables, or elevation profiles.
course.source.kindenumYesurl | artifact | raw_json | raw_file
course.source.base64stringNoBase64-encoded file bytes for raw_file inputs, suitable for FIT or other binary files.
course.source.contentstringNoInline text file content for raw_file inputs, suitable for GPX/XML/JSON/USRProf.
course.source.payloadobjectNoInline raw JSON payload for CRSProf/USRProf-compatible inputs.
course.source.file_namestringNoFile name for inline raw_file content, e.g. course.gpx or runner.usrprof.
course.source.artifact_idstringNoExisting CourseProfiler artifact ID, e.g. art_...
course.source.content_typestringNoMIME type for inline raw_file content.
course.segmentsobjectNo
course.segments.modeenumNogenerate | skip
course.segments.optionsobjectNo
course.segments.options.algorithmstringNoSegment partitioning algorithm, e.g. SLOPE_BASED.
course.segments.options.flat_gradenumberNoFlat grade threshold percent.
course.segments.options.instant_modebooleanNoUse instant segmentation mode.
course.segments.options.flat_max_deltanumberNoMaximum elevation delta for flat segments, meters.
course.segments.options.include_routesbooleanNoInclude route geometry in generated CRSProf.
course.segments.options.minimum_distancenumberNoMinimum segment distance, meters.
course.segments.options.slope_change_thresholdnumberNoSlope-change threshold percent.
course.segments.options.flexible_flat_max_deltabooleanNoAllow flexible flat max-delta behavior.
course.segments.options.flexible_minimum_distancebooleanNoAllow flexible minimum-distance behavior.
course.import_optionsobjectNo
course.import_options.include_routesbooleanNoInclude routes when analysing GPX/FIT. Existing CRSProf is preserved with analysis_options_not_applied warning.
course.import_options.include_segmentsbooleanNoGenerate segments when analysing GPX/FIT. Existing CRSProf is preserved with analysis_options_not_applied warning.
course.crsprof_artifact_idstringNoExisting converted CRSProf artifact ID. For uploaded local GPX/FIT/CRSProf source_file artifacts, prefer course.source.kind=artifact so CourseProfiler can import/convert it.
runnerobjectNo
runner.sourcesarrayNoRunner evidence/profile sources. Use this for uploaded source_file artifact IDs returned by /api/artifact-uploads, including local .usrprof files, GPX/FIT/CRSProf evidence, or public URLs. Personalized plans require runner input; do not fabricate a runner profile.
runner.import_optionsobjectNo
runner.usrprof_artifact_idstringNoExisting already-converted USRProf artifact ID. Do not use this for uploaded source_file artifacts from /api/artifact-uploads; pass those as runner.sources[{kind:'artifact', artifact_id:'art_...'}].
estimateobjectNo
estimate.outputobjectNo
estimate.optionsobjectNo
estimate.options.strategyenumNoOnly segment_evidence is accepted for runner-profile race plans.segment_evidence
estimate.options.flat_gradenumberNoFlat grade threshold percent used by GAP calculation.
estimate.options.gap_algorithmstringNoGrade-adjusted pace algorithm name.
race_namestringNoRace/course name to resolve through the CourseProfiler catalog when no course source is provided, e.g. Val d'Aran PDA.
course_fileobjectNoUse this only when the MCP client provides an inline/proxied GPX, FIT, CRSProf, or ZIP-with-one-GPX file object. Provide content for text GPX/XML/JSON/CRSProf, base64 for FIT/ZIP/binary, or a fetchable URL. Bare local filesystem paths and file:// URLs are rejected. Hosted clients with local files must use the REST POST /api/artifact-uploads flow outside MCP and pass the returned source_file artifact as course.source.kind=artifact.
course_file.urlstringNoFetchable HTTPS URL to file bytes. Do not use file:// or bare local paths. ZIP is accepted only when it contains exactly one GPX file.
course_file.namestringNoOriginal file name, e.g. course.gpx or runner.usrprof.
course_file.base64stringNoBase64-encoded file bytes for FIT or other binary files.
course_file.contentstringNoInline text file content for GPX/XML/JSON/USRProf.
course_file.file_namestringNoOriginal file name, e.g. course.gpx or runner.usrprof.
course_file.content_typestringNoMIME type for the file.
runner_profile_fileobjectNoUse this only when the MCP client provides an inline/proxied USRProf runner profile file object. Provide content for text USRProf/JSON or base64 for binary. Personalized plans require runner input. Bare local filesystem paths and file:// URLs are rejected. Hosted clients with local .usrprof files should use POST /api/artifact-uploads and pass the returned source_file artifact via runner.sources[{kind:'artifact'}], not usrprof_artifact_id.
runner_profile_file.urlstringNoFetchable HTTPS URL to file bytes. Do not use file:// or bare local paths. ZIP is accepted only when it contains exactly one GPX file.
runner_profile_file.namestringNoOriginal file name, e.g. course.gpx or runner.usrprof.
runner_profile_file.base64stringNoBase64-encoded file bytes for FIT or other binary files.
runner_profile_file.contentstringNoInline text file content for GPX/XML/JSON/USRProf.
runner_profile_file.file_namestringNoOriginal file name, e.g. course.gpx or runner.usrprof.
runner_profile_file.content_typestringNoMIME type for the file.

Details

The maintainer has not added details yet. Check the README in the repository.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.