Koskamo

Fitness Starter MCP

A remote MCP server that allows AI agents to build curated gift wishlists and gift lists for fitness activities like running, strength training, and yoga. It supports browsing curated product catalogs, searching for gear, and creating shareable packs with direct purchase links to Amazon.se or Amazon.com.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Fitness Starter MCP logo, by Fitness StarterCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Fitness Starter
MCP endpoint (Streamable HTTP)
https://fitness-starter.vercel.app/api/mcp
Vendor documentation

What you can do with it

  • Build a curated gift wishlist for a beginner runner
  • Search for yoga gear and return product links
  • Create a shareable fitness starter pack for a gift giver

Source and maintenance

Community listingRegistry 1.2.0

Protocol and capabilities

Server
fitness-starter-ladder 0.1.0
MCP protocol
2024-11-05
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Fitness Starter Ladder MCP. US shoppers: marketplace=amazon.com (hand-picked amazon.com /dp/ links, tag sw-fitness-20). Sweden: marketplace=amazon.se (tag sw-fitness-21). marketplace and locale are optional: without them the store follows country, then Accept-Language (en-US → amazon.com), else amazon.se. Prefer browse_catalog or search_gear, then create_and_fill / create_pack.

Tools

6 advertised

search_gear
Advertised by the server during the last successful anonymous check.

Search fitness gear: hand-picked /dp/ matches plus English (amazon.com) or Swedish (amazon.se) search links. Pass marketplace=amazon.com for US shoppers; marketplace/locale are optional (en-US → amazon.com, otherwise amazon.se).

search_gear input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "Search query in English for amazon.com (optional; defaults to fitness starter gear)"
    },
    "goal": {
      "enum": [
        "run",
        "lift",
        "yoga"
      ],
      "type": "string",
      "description": "Fitness goal"
    },
    "level": {
      "enum": [
        "starter",
        "building",
        "serious"
      ],
      "type": "string",
      "description": "Experience level"
    },
    "limit": {
      "type": "integer",
      "default": 8
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "budgetBand": {
      "enum": [
        "under-500",
        "500-1500",
        "1500-3000",
        "3000-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    }
  }
}
create_pack
Advertised by the server during the last successful anonymous check.

Create a gear pack (optionally pre-filled). Returns ownerUrl + shopUrl + editToken. marketplace=amazon.com gives amazon.com /dp/ links; optional (en-US → amazon.com, otherwise amazon.se).

create_pack input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "goal": {
      "enum": [
        "run",
        "lift",
        "yoga"
      ],
      "type": "string"
    },
    "level": {
      "enum": [
        "starter",
        "building",
        "serious"
      ],
      "type": "string"
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "itemAsins": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "budgetBand": {
      "enum": [
        "under-500",
        "500-1500",
        "1500-3000",
        "3000-plus"
      ],
      "type": "string"
    },
    "athleteName": {
      "type": "string"
    },
    "itemQueries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    },
    "itemKeywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
create_and_fill
Advertised by the server during the last successful anonymous check.

One call: create a pre-filled gift pack (same as create_pack). Returns ownerUrl + shopUrl + editToken. marketplace=amazon.com gives amazon.com /dp/ links; optional (en-US → amazon.com, otherwise amazon.se).

create_and_fill input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "goal": {
      "enum": [
        "run",
        "lift",
        "yoga"
      ],
      "type": "string"
    },
    "level": {
      "enum": [
        "starter",
        "building",
        "serious"
      ],
      "type": "string"
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "itemAsins": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "budgetBand": {
      "enum": [
        "under-500",
        "500-1500",
        "1500-3000",
        "3000-plus"
      ],
      "type": "string"
    },
    "athleteName": {
      "type": "string"
    },
    "itemQueries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    },
    "itemKeywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
add_item
Advertised by the server during the last successful anonymous check.

Add a gear item to an existing pack. Requires id + editToken; marketplace/locale optional.

add_item input schema
{
  "type": "object",
  "required": [
    "id",
    "editToken"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Pack id"
    },
    "url": {
      "type": "string"
    },
    "asin": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "emoji": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "editToken": {
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    },
    "searchKeywords": {
      "type": "string"
    }
  }
}
browse_catalog
Advertised by the server during the last successful anonymous check.

List hand-picked catalog products with /dp/ buy links: marketplace=amazon.com → US catalog (amazon.com/dp/ASIN?tag=sw-fitness-20), amazon.se → Swedish catalog (tag sw-fitness-21). If marketplace is omitted, en-US → amazon.com, otherwise amazon.se. Filter by goal/level/budgetBand/q.

browse_catalog input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string"
    },
    "goal": {
      "enum": [
        "run",
        "lift",
        "yoga"
      ],
      "type": "string"
    },
    "level": {
      "enum": [
        "starter",
        "building",
        "serious"
      ],
      "type": "string"
    },
    "limit": {
      "type": "number"
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "budgetBand": {
      "enum": [
        "under-500",
        "500-1500",
        "1500-3000",
        "3000-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    }
  }
}
resolve_product
Advertised by the server during the last successful anonymous check.

Resolve ASIN, Amazon URL, or keywords to a buy URL (buyUrl + trackingTag) on amazon.com, amazon.se or another storefront. marketplace optional (en-US → amazon.com, otherwise amazon.se).

resolve_product input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "url": {
      "type": "string"
    },
    "asin": {
      "type": "string"
    },
    "goal": {
      "enum": [
        "run",
        "lift",
        "yoga"
      ],
      "type": "string"
    },
    "level": {
      "enum": [
        "starter",
        "building",
        "serious"
      ],
      "type": "string"
    },
    "locale": {
      "type": "string",
      "description": "Optional end-user locale, e.g. en-US, sv-SE. Defaults from Accept-Language or the store (amazon.com → en-US, amazon.se → sv-SE)."
    },
    "country": {
      "type": "string",
      "description": "Optional ISO country code, e.g. US or SE (US → amazon.com). Used when marketplace is omitted."
    },
    "keywords": {
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "description": "Optional. Amazon storefront domain or id, e.g. amazon.com, amazon.se, us, se. Use marketplace=amazon.com for US shoppers (hand-picked amazon.com /dp/ catalog, tag sw-fitness-20). If omitted: country, then Accept-Language (en-US → amazon.com), else amazon.se."
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1130 ms
95th percentile latency
1130 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1130 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http fitness-starter-mcp https://fitness-starter.vercel.app/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add fitness-starter-mcp --url https://fitness-starter.vercel.app/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable fitness-starter-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "fitness-starter-mcp": {
      "url": "https://fitness-starter.vercel.app/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "fitness-starter-mcp": {
      "type": "streamableHttp",
      "url": "https://fitness-starter.vercel.app/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start fitness-starter-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "fitness-starter-mcp": {
      "type": "http",
      "url": "https://fitness-starter.vercel.app/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http fitness-starter-mcp https://fitness-starter.vercel.app/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "fitness-starter-mcp": {
      "url": "https://fitness-starter.vercel.app/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "fitness-starter-mcp": {
      "serverUrl": "https://fitness-starter.vercel.app/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Fitness Starter MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.