Schema Org Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Schema Org Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
A Model Context Protocol server for the complete schema.org vocabulary
Empower AI assistants to explore schema.org types, generate JSON-LD examples, validate structured data, and navigate the complete ontology with intelligent fuzzy matching and persistent caching.
Features · Installation · Quick Start · Documentation · Contributing
</div>
| Feature | Description |
|---|---|
| Persistent Caching | Schema.org data cached locally with TTL-based refresh—no cold start delays |
| Fuzzy Matching | Typo-tolerant lookups with intelligent "Did you mean?" suggestions |
| Type Aliases | Natural language shortcuts: blog → BlogPosting, faq → FAQPage |
| Filtered Properties | Get direct-only, inherited-only, or paginated property lists |
| Batch Operations | Compare types, validate multiple JSON-LD objects, bulk lookups |
| Dynamic Examples | Generated examples use current dates and realistic data |
# Clone the repository
git clone https://github.com/your-org/schema-org-mcp.git
cd schema-org-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Verify the installation
npm startnpm install -g schema-org-mcpAdd the server to your Claude Desktop configuration:
<table> <tr> <td><strong>Platform</strong></td> <td><strong>Configuration Path</strong></td> </tr> <tr> <td>macOS</td> <td><code>~/Library/Application Support/Claude/claude_desktop_config.json</code></td> </tr> <tr> <td>Windows</td> <td><code>%APPDATA%\Claude\claude_desktop_config.json</code></td> </tr> </table>
Local Installation:
{
"mcpServers": {
"schema-org": {
"command": "node",
"args": ["/absolute/path/to/schema-org-mcp/dist/index.js"]
}
}
}Via npx:
{
"mcpServers": {
"schema-org": {
"command": "npx",
"args": ["schema-org-mcp"]
}
}
}The server provides 14 tools organized into three categories.
#### server_info
Returns server version, build metadata, and runtime information. Use this to verify which version is deployed.
{}Response:
version, gitSha, gitBranch, buildTimeruntime — Node version, platform, uptimetools — Count and names of registered toolscache — Cache status#### server_stats
Returns performance statistics including cache hit rates, tool invocation counts, and timing metrics.
{}Response:
coldStartMs, warmStartMscacheHits, cacheMisses, cacheStaleHitstoolInvocations — Per-tool count, errors, average durationuptimeMs#### get_schema_type
Retrieve detailed information about a schema.org type. Supports fuzzy matching for typos and natural aliases.
{
"typeName": "Person"
}Also accepts:
"Persn" → suggests Person"blog" → BlogPosting, "faq" → FAQPageResponse:
name, description, id, urlsuperTypes — Direct parent typescategory — core, pending, auto, bib, or health-lifescideprecated and supersededBy (if applicable)#### search_schemas
Search for schema types by keyword with relevance-based ranking.
{
"query": "local business",
"limit": 10
}#### get_type_hierarchy
Get complete inheritance hierarchy including ancestors and children.
{
"typeName": "NewsArticle"
}#### get_type_properties
List all properties available for a type with filtering and pagination support.
{
"typeName": "Organization",
"mode": "direct",
"includeDeprecated": false,
"limit": 20,
"offset": 0
}| Parameter | Options | Default |
|---|---|---|
mode | all, direct, inherited | all |
includeDeprecated | true, false | false |
limit | Number | — |
offset | Number | 0 |
#### generate_example
Generate realistic JSON-LD examples with dynamic dates and nested types.
{
"typeName": "LocalBusiness",
"style": "comprehensive",
"customProperties": {
"name": "My Coffee Shop"
}
}| Style | Description |
|---|---|
minimal | Name property only |
standard | Common properties |
comprehensive | Full property set with nested types |
Supported domain presets: Person, Organization, LocalBusiness, Product, Event, Article, BlogPosting, Recipe, WebSite, FAQPage, Place
#### get_property_details
Get comprehensive information about a specific property. Supports fuzzy matching.
{
"propertyName": "address"
}#### get_enumeration_values
Retrieve all valid values for an enumeration type.
{
"enumerationType": "DayOfWeek"
}#### validate_jsonld
Validate JSON-LD structured data with intelligent suggestions for typos.
{
"jsonld": {
"@context": "https://schema.org",
"@type": "Product",
"name": "Widget",
"nmae": "typo"
}
}Response:
valid — Boolean resulterrors — Unknown types or properties with suggestionswarnings — Deprecated items, missing contextsuggestions — Recommended properties to add#### get_related_types
Discover types connected through property relationships.
{
"typeName": "Person"
}#### get_multiple_types
Retrieve information about multiple types in a single call.
{
"typeNames": ["Person", "Organization", "LocalBusiness"]
}#### compare_types
Compare 2–5 schema.org types side by side with usage recommendations.
{
"typeNames": ["Article", "BlogPosting", "NewsArticle"]
}Response:
types — Summary of each typesharedProperties — Properties common to alluniqueProperties — Properties unique to eachrecommendation — When to use each type#### validate_jsonld_batch
Validate multiple JSON-LD objects in a single call.
{
"items": [
{ "@context": "https://schema.org", "@type": "Person", "name": "John" },
{ "@context": "https://schema.org", "@type": "Organization", "name": "Acme" }
]
}1. search_schemas → {"query": "product"}
2. compare_types → {"typeNames": ["Product", "Offer", "AggregateOffer"]}
3. get_type_properties → {"typeName": "Product", "mode": "direct", "limit": 15}
4. generate_example → {"typeName": "Product", "style": "comprehensive"}1. compare_types → {"typeNames": ["Article", "BlogPosting"]}
Response includes recommendation:
"Use BlogPosting for blog content with clear publication dates and author.
Use Article for general news or editorial content."1. validate_jsonld_batch → {"items": [...array of JSON-LD objects...]}
Returns per-object validation with actionable suggestions1. get_schema_type → {"typeName": "Perosn"}
Error: "Type 'Perosn' not found. Did you mean: Person, Physician, Performer?"The server fetches the complete schema.org vocabulary and implements a multi-layer cache:
| Layer | Location | Behavior |
|---|---|---|
| Memory | Runtime | Instant access after first load |
| Disk | ~/.cache/schema-org-mcp/schema-org-data.json | Persists across restarts |
blog → BlogPosting)| Category | Count |
|---|---|
| Types (classes) | ~800+ |
| Properties | ~1,400+ |
| Enumeration types | ~80+ |
The client accepts optional configuration parameters:
const client = new SchemaOrgClient({
cacheDir: '/custom/cache/path', // Default: ~/.cache/schema-org-mcp
ttlMs: 12 * 60 * 60 * 1000, // Default: 24 hours
offline: false, // Default: false
});# Watch mode for development
npm run dev
# Run the test suite
npm test
# Build for production (generates build fingerprint)
npm run build
# Run full QA checklist
npm run qa
# Verify deployment
npm run verifyEvery build embeds version metadata for traceability:
npm run build
# Output: Build info generated: v1.1.0 (abc1234)Confirm the correct version is running:
npm run verify
# Or with explicit version:
npm run verify 1.1.0 abc1234Verification checks:
compare_types tool responds correctlymainEntityOn startup, the server logs its identity:
═══════════════════════════════════════════
schema-org-mcp v1.1.0 (abc1234)
Built: 2025-04-04T15:00:00.000Z
Branch: main
Node: v22.20.0
Tools: 14 registered
server_info, server_stats, get_schema_type, ...
═══════════════════════════════════════════Use the server_info tool to check the running version programmatically.
If the first request is slow, the cache may have expired:
ls -la ~/.cache/schema-org-mcp/Ensure schema data is fully loaded. The initialize() method must complete before fuzzy matching works.
Delete the cache directory to fetch fresh data:
rm -rf ~/.cache/schema-org-mcp/Contributions are welcome! Please follow these steps:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Please ensure all tests pass before submitting.
This project is licensed under the MIT License — see the LICENSE file for details.
<div align="center">
[Back to Top](#schema-org-mcp-server)
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.