{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "scirocco",
    "title": "Scirocco",
    "version": "1.0.0"
  },
  "name": "scirocco",
  "title": "Scirocco",
  "description": "Read-only MCP server of Scirocco, the boating app for iPhone: app info, pricing and features, Italian marine weather locations with current wind and waves, distances in nautical miles, and the boating blog.",
  "serverUrl": "https://scirocco.app/mcp",
  "icons": [
    {
      "src": "https://scirocco.app/apple-touch-icon.png",
      "mimeType": "image/png",
      "sizes": [
        "180x180"
      ]
    }
  ],
  "documentationUrl": "https://scirocco.app/docs/#mcp",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://scirocco.app/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "listChanged": false,
      "subscribe": false
    }
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "tools": [
    {
      "name": "get_app_info",
      "title": "Scirocco app info",
      "description": "What Scirocco is (all-in-one boating app for iPhone), platforms and availability, App Store link, languages, App Store rating, developer and support contact.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ],
            "description": "Language of the texts (default en; blog default it)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_pricing",
      "title": "Pricing",
      "description": "Free plan limits and Scirocco Pro plans: price in EUR, billing period, free trial days, what Pro adds.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ],
            "description": "Language of the texts (default en; blog default it)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "list_features",
      "title": "Features",
      "description": "Every feature of the Scirocco app grouped by section (weather, navigation, waypoints, import, tracks, boat, deadlines), each marked free or Pro, plus what the app does not do.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ],
            "description": "Language of the texts (default en; blog default it)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "search_locations",
      "title": "Search weather locations",
      "description": "Find Italian ports, islands and beaches that have a Scirocco marine weather page, by name or area (e.g. 'Procida', 'Sardegna'). Returns slugs to use with the other tools.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "maxLength": 80,
            "description": "Place name, e.g. 'Procida', 'Porto Cervo' (optional)"
          },
          "area": {
            "type": "string",
            "maxLength": 80,
            "description": "Area name or slug, e.g. 'Sardegna', 'golfo-di-napoli' (optional)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Page size (default 50)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Items to skip (default 0)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_location",
      "title": "Location details",
      "description": "Coordinates, area, marine weather page (HTML and markdown) and the nearest locations of one location slug.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Location slug from search_locations"
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_sea_conditions",
      "title": "Sea conditions now",
      "description": "Wind speed and gusts in knots, direction, wave height now and tomorrow's summary with a go/no-go judgement for a small boat, for one location slug. Data refreshed every few hours; for the full 7-day forecast read the page's markdown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Location slug from search_locations"
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_area_conditions",
      "title": "Area conditions now",
      "description": "Wind and waves now and tomorrow for every location of a coastal area (e.g. 'golfo-di-napoli', 'sardegna').",
      "inputSchema": {
        "type": "object",
        "properties": {
          "area": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Area slug: liguria, toscana, lazio, isole-pontine, campania, golfo-di-napoli, basilicata, calabria, sicilia, isole-eolie, isole-egadi, isole-siciliane, isole-pelagie, sardegna, corsica, puglia, molise, abruzzo, marche, emilia-romagna, veneto, friuli-venezia-giulia"
          }
        },
        "required": [
          "area"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_distance",
      "title": "Distance between two places",
      "description": "Great-circle distance in nautical miles and kilometres between two location slugs, with sailing times at 5, 8, 20 and 30 knots.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Departure location slug"
          },
          "to": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Arrival location slug"
          }
        },
        "required": [
          "from",
          "to"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "search_blog_posts",
      "title": "Search the blog",
      "description": "Search Scirocco's blog articles (Italian or English) on boating, navigation, licences, winds, anchoring, maintenance and fishing.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "maxLength": 120,
            "description": "Words to search in title, description and keywords (optional)"
          },
          "lang": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ],
            "description": "Language of the texts (default en; blog default it)"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Page size (default 50)"
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Items to skip (default 0)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_blog_post",
      "title": "Blog article",
      "description": "One blog article with its FAQ and, for Italian articles, the full text in markdown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Article slug from search_blog_posts"
          },
          "lang": {
            "type": "string",
            "enum": [
              "it",
              "en"
            ],
            "description": "Language of the texts (default en; blog default it)"
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      }
    }
  ],
  "resources": [
    {
      "uri": "scirocco://app",
      "name": "app",
      "mimeType": "application/json"
    },
    {
      "uri": "scirocco://pricing",
      "name": "pricing",
      "mimeType": "application/json"
    },
    {
      "uri": "scirocco://features",
      "name": "features",
      "mimeType": "application/json"
    },
    {
      "uri": "scirocco://locations",
      "name": "locations",
      "mimeType": "application/json"
    },
    {
      "uri": "scirocco://areas",
      "name": "areas",
      "mimeType": "application/json"
    }
  ]
}