Koskamo

WeekSpots MCP

A read-only MCP server providing access to aggregated upcoming events and permanent places in Paris, Île-de-France, and across France. It supports natural language search, listing city events by criteria (weekend, free, kids), retrieving specific event details, and finding permanent locations like parks and museums.

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.

WeekSpots MCP logo, by WeekSpotsVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by WeekSpots
MCP endpoint (Streamable HTTP)
https://app.weekspots.com/mcp
Vendor documentation

What you can do with it

  • Search for events using natural language with location and date filters
  • List events for a specific town, including weekend, free, or kids options
  • Retrieve detailed information for a single event
  • Find permanent places like playgrounds, parks, and museums in France

Source and maintenance

Vendor evidenceRegistry 0.2.0

Protocol and capabilities

Server
weekspots 0.2.0
MCP protocol
2025-06-18
Tools
4 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.

WeekSpots lists dated events and outings in Paris and the Île-de-France region (workshops, shows, exhibitions, festivals, sport, many for families with children), refreshed every night from official sources and translated to French, English and Chinese. Use search_events for a free-text need, list_city_events for what is on in one town, get_event for details, and find_places for permanent places (playgrounds, parks, pools, museums...) when no dated event fits. Times are Europe/Paris local time. Always give the user the event's `url` so they can check the details; `official_url` is the organiser's own page; `add_to_calendar` links let the user save the event in Apple, Google or Outlook calendar.

Tools

4 advertised

search_events — Search events in Paris region
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Semantic search over upcoming events in Paris and Île-de-France. The query can be in any language and describe a need ("rainy day activity for a 4 year old", "jazz gratuit", "亲子手工"). Returns up to 10 events, best match first, nearest first when a location is given.

search_events input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh"
      ],
      "type": "string",
      "description": "Language of titles and summaries. Default: en."
    },
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Number of events, default 8."
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "What the user is looking for, in natural language."
    },
    "date_to": {
      "type": "string",
      "description": "Latest day, YYYY-MM-DD (Europe/Paris), inclusive. Optional."
    },
    "near_lat": {
      "type": "number",
      "description": "Latitude to search around (optional, with near_lon)."
    },
    "near_lon": {
      "type": "number",
      "description": "Longitude to search around (optional, with near_lat)."
    },
    "date_from": {
      "type": "string",
      "description": "Earliest day, YYYY-MM-DD (Europe/Paris). Optional."
    },
    "radius_km": {
      "enum": [
        2,
        3,
        5,
        8,
        12,
        20,
        30,
        50
      ],
      "type": "number",
      "description": "Only with near_lat/near_lon: keep events within this distance."
    }
  }
}
search_events annotations
{
  "title": "Search events in Paris region",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_city_events — List events in one town
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Upcoming events in one town of Île-de-France (e.g. Paris, Versailles, Saint-Germain-en-Laye), soonest first. Optional filter: this weekend, free, or for children. Returns up to 10 events and the total count; `more_url` is the full list.

list_city_events input schema
{
  "type": "object",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 80,
      "description": "Town name, e.g. \"Versailles\"."
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh"
      ],
      "type": "string",
      "description": "Language of titles and summaries. Default: en."
    },
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Number of events, default 8."
    },
    "filter": {
      "enum": [
        "weekend",
        "free",
        "kids"
      ],
      "type": "string",
      "description": "weekend = this weekend, free = free admission, kids = for children. Optional."
    }
  }
}
list_city_events annotations
{
  "title": "List events in one town",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_event — Get one event
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Details of one event by the `id` returned by search_events or list_city_events: dates, venue, price and age information, booking link, conditions.

get_event input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 200,
      "description": "Event id, e.g. \"qfap:123102\"."
    },
    "lang": {
      "enum": [
        "fr",
        "en",
        "zh"
      ],
      "type": "string",
      "description": "Language of titles and summaries. Default: en."
    }
  }
}
get_event annotations
{
  "title": "Get one event",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_places — Find permanent places nearby
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Permanent places open all year anywhere in France (playgrounds, parks, sports courts, skateparks, pools, amusement parks, zoos, libraries, museums and other cultural venues, heritage sites), nearest first. Use it when there is no dated event that fits, or the user wants a place rather than an event. Give a location (near_lat/near_lon) or a town of Île-de-France. Returns up to 10 places.

find_places input schema
{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 80,
      "description": "Town in Île-de-France, used when no coordinates are given, e.g. \"Versailles\"."
    },
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Number of places, default 8."
    },
    "category": {
      "enum": [
        "playground",
        "park",
        "courts",
        "skate",
        "pool",
        "fun",
        "zoo",
        "library",
        "culture",
        "heritage"
      ],
      "type": "string",
      "description": "Kind of place. Optional: all kinds when omitted."
    },
    "near_lat": {
      "type": "number",
      "description": "Latitude to search around (with near_lon)."
    },
    "near_lon": {
      "type": "number",
      "description": "Longitude to search around (with near_lat)."
    },
    "radius_km": {
      "enum": [
        1,
        2,
        3,
        5,
        10
      ],
      "type": "number",
      "description": "Search radius, default 3."
    }
  }
}
find_places annotations
{
  "title": "Find permanent places nearby",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

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
291 ms
95th percentile latency
291 ms

Maintenance history

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

  • · probe · passed · 291 ms · metadata changed · 4 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 weekspots-mcp https://app.weekspots.com/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 weekspots-mcp --url https://app.weekspots.com/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start weekspots-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "weekspots-mcp": {
      "type": "http",
      "url": "https://app.weekspots.com/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 weekspots-mcp https://app.weekspots.com/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": {
    "weekspots-mcp": {
      "url": "https://app.weekspots.com/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": {
    "weekspots-mcp": {
      "serverUrl": "https://app.weekspots.com/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run WeekSpots MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing