LocalSchema

Generate and validate LocalBusiness JSON-LD for local SEO. Free tools, no key needed.

我该使用它吗

质量与安全性

A
描述质量
98%
模式完整度
84%
命名质量
100%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,572token 数(工具定义)
~2.5 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.79%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "localschema": {
      "url": "https://local-schema-beacon.lovable.app/mcp"
    }
  }
}

远程端点

https://local-schema-beacon.lovable.app/mcpstreamable-http

它能做什么

工具清单

工具(11)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢list_business_types

List the schema.org LocalBusiness subtypes LocalSchema supports (Dentist, Plumber, Restaurant, …). Use the most specific one as businessType.

输入模式

{
  "type": "object",
  "properties": {}
}
🟢generate_schema(businessType, name, alternateName, legalName, description, ...)

Generate LocalBusiness JSON-LD (schema.org) from business details and validate it against Google's rich result rules. Returns the JSON-LD, a ready-to-paste <script> tag and issues to fix. No API key needed.

输入模式

{
  "type": "object",
  "properties": {
    "businessType": {
      "default": "LocalBusiness",
      "description": "schema.org type, e.g. Dentist, Plumber, Restaurant. See /business-types.",
      "type": "string",
      "maxLength": 60
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Public business name"
    },
    "alternateName": {
      "type": "string",
      "maxLength": 200
    },
    "legalName": {
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "slogan": {
      "type": "string",
      "maxLength": 200
    },
    "url": {
      "description": "Website URL (https://…)",
      "type": "string",
      "maxLength": 2000
    },
    "logo": {
      "type": "string",
      "maxLength": 2000
    },
    "images": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "foundingDate": {
      "type": "string",
      "pattern": "^\\d{4}(-\\d{2}-\\d{2})?$"
    },
    "telephone": {
      "description": "International format, e.g. +31 50 123 4567",
      "type": "string",
      "maxLength": 40
    },
    "email": {
      "type": "string",
      "maxLength": 200
    },
    "priceRange": {
      "description": "e.g. €€ or €20-€80",
      "type": "string",
      "maxLength": 30
    },
    "currenciesAccepted": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 3,
        "maxLength": 3
      }
    },
    "paymentAccepted": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "knowsLanguage": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      }
    },
    "address": {
      "type": "object",
      "properties": {
        "streetAddress": {
          "type": "string",
          "maxLength": 200
        },
        "addressLocality": {
          "type": "string",
          "maxLength": 120
        },
        "addressRegion": {
          "type": "string",
          "maxLength": 120
        },
        "postalCode": {
          "type": "string",
          "maxLength": 20
        },
        "addressCountry": {
          "description": "ISO 3166-1 alpha-2, e.g. NL or US",
          "type": "string",
          "maxLength": 60
        }
      }
    },
    "serviceAreaOnly": {
      "description": "True for service-area businesses without a storefront (address is hidden)",
      "type": "boolean"
    },
    "geo": {
      "type": "object",
      "properties": {
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": [
        "latitude",
        "longitude"
      ]
    },
    "hasMap": {
      "type": "string",
      "maxLength": 2000
    },
    "areaServed": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 120
      }
    },
    "openingHours": {
      "description": "Regular hours. Days not listed are closed. Use two entries for split hours.",
      "maxItems": 21,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "days": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ],
            "description": "Day names or ranges: \"Mo-Fr\", [\"Saturday\"]"
          },
          "opens": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "closes": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "allDay": {
            "description": "Open 24 hours on these days",
            "type": "boolean"
          }
        },
        "required": [
          "days"
        ]
      }
    },
    "specialHours": {
      "description": "Holiday exceptions (LocalSchema Pro — omitted from free output)",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 80
          },
          "validFrom": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "validThrough": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "closed": {
            "type": "boolean"
          },
          "opens": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          },
          "closes": {
            "type": "string",
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
          }
        },
        "required": [
          "validFrom"
        ]
      }
    },
    "services": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "price": {
            "type": "number",
            "minimum": 0
          },
          "priceMax": {
            "type": "number",
            "minimum": 0
          },
          "priceType": {
            "type": "string",
            "enum": [
              "fixed",
              "from",
              "range"
            ]
          },
          "unitText": {
            "type": "string",
            "maxLength": 40
          },
          "url": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "rating": {
      "description": "LocalSchema Pro — omitted from free output",
      "type": "object",
      "properties": {
        "ratingValue": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "reviewCount": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "bestRating": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "ratingValue",
        "reviewCount"
      ]
    },
    "reviews": {
      "description": "LocalSchema Pro — omitted from free output",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "body": {
            "type": "string",
            "maxLength": 2000
          },
          "datePublished": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          }
        },
        "required": [
          "author",
          "rating"
        ]
      }
    },
    "sameAs": {
      "description": "Google Business Profile, Yelp, Facebook, LinkedIn… profile URLs",
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 2000
      }
    },
    "servesCuisine": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      }
    },
    "menu": {
      "type": "string",
      "maxLength": 2000
    },
    "acceptsReservations": {
      "type": "boolean"
    },
    "medicalSpecialty": {
      "type": "string",
      "maxLength": 80
    },
    "isAcceptingNewPatients": {
      "type": "boolean"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢validate_schema(code)

Validate existing LocalBusiness structured data: paste JSON-LD, a <script type="application/ld+json"> tag or a whole HTML page. Reports errors, missing recommended fields and best-practice warnings. No API key needed.

输入模式

{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 600000,
      "description": "JSON-LD text, a script tag, or full page HTML"
    }
  },
  "required": [
    "code"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢validate_page(url)

Fetch a public web page and audit its structured data: every JSON-LD block and type, the LocalBusiness markup's errors and warnings, LocalSchema embeds on the page and concrete recommendations. No API key needed.

输入模式

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 4,
      "maxLength": 2000,
      "description": "Public http(s) address, e.g. https://example.com/contact"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_embed_snippet(key)

Get the install snippet and live status for a LocalSchema hosted embed key (loc_… for one location, org_… for a client with several). Paste the script tag once; published updates reach the site automatically.

输入模式

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "pattern": "^(?:loc|org)_[a-z0-9]{6,32}$",
      "description": "Hosted embed key"
    }
  },
  "required": [
    "key"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_clients

List the agency's clients (brands) with their location counts, client-wide embed script and white-label report link. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {}
}
🟡save_client(client_id, name, website, contact_name, contact_email, ...)

Create a client (brand) or update one by client_id, and optionally turn its white-label health report link on or off. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {
    "client_id": {
      "description": "Update this client. Omit to create one.",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "name": {
      "description": "Client (brand) name. Required when creating; omit to keep it when updating.",
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "website": {
      "description": "Brand website; links every branch to one Organization in the client embed. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 500
    },
    "contact_name": {
      "description": "Contact person. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 160
    },
    "contact_email": {
      "description": "Contact email. When updating, omit to keep it or send \"\" to clear it.",
      "type": "string",
      "maxLength": 255
    },
    "report": {
      "description": "true turns the client's white-label health report link on, false turns it off. Omit to leave it.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_locations(client_id)

List the business locations saved in the LocalSchema account: publish state, hosted embed script, website and latest health check score. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {
    "client_id": {
      "description": "Only this client's locations",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_location(location_id)

Get one saved location: its business fields (in the same shape save_location accepts), the current JSON-LD, the published JSON-LD, validation issues and embed details. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Location id from list_locations"
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡save_location(location_id, client_id, website_url, publish, business)

Save a business location to the LocalSchema account — create one, or update one by location_id (only the business fields you send change) — and optionally publish it to its hosted embed so the client's site updates without code changes. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Update this location. Omit to create a new one (counts toward the plan's location limit).",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "client_id": {
      "description": "Assign to a client (see list_clients); null removes the assignment. Omit to keep the current client.",
      "anyOf": [
        {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        {
          "type": "null"
        }
      ]
    },
    "website_url": {
      "description": "Page where the hosted embed is installed; health checks scan it. Defaults to business.url.",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ]
    },
    "publish": {
      "description": "Publish to the hosted embed now. Default false (saved as a draft).",
      "type": "boolean"
    },
    "business": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "Business fields in the same shape as generate_schema (name, businessType, address, openingHours, services, …). When updating, only the fields you send change; address merges field by field, lists are replaced."
    }
  },
  "required": [
    "business"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢run_health_check(location_id)

Run a schema health check for a saved location: validates its markup, scans its website for the embed and conflicting hard-coded schema, detects unpublished changes and records the result in the dashboard and client reports. Needs a LocalSchema Pro API key in the request headers.

输入模式

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Location id from list_locations"
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本11 个工具