Install
$ agentstack add mcp-theycallmeholla-schema-org-mcp Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Destructive filesystem operation.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Schema.org MCP Server
A Model Context Protocol server for the complete schema.org vocabulary
[](https://www.npmjs.com/package/schema-org-mcp) [](LICENSE) [](https://nodejs.org) [](https://modelcontextprotocol.io)
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](#features) · [Installation](#installation) · [Quick Start](#quick-start) · [Documentation](#available-tools) · [Contributing](#contributing)
Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Available Tools](#available-tools)
- [Operational Tools](#operational-tools)
- [Core Tools](#core-tools)
- [Batch Tools](#batch-tools)
- [Example Workflows](#example-workflows)
- [How It Works](#how-it-works)
- [Configuration](#configuration)
- [Development](#development)
- [Deployment](#deployment)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
- [License](#license)
Features
v1.1.0 Highlights
| 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 |
Core Capabilities
- Type Exploration — Detailed information about any schema.org type with deprecation status
- Smart Search — Keyword search with relevance-based ranking
- Hierarchy Navigation — Explore inheritance relationships, ancestors, and descendants
- Property Discovery — List all properties with expected types, including inherited ones
- JSON-LD Generation — Create realistic examples at minimal, standard, or comprehensive detail levels
- Validation — Check structured data against the schema.org vocabulary with actionable feedback
- Relationship Mapping — Discover types connected through property relationships
Installation
Prerequisites
- Node.js >= 18.0.0
- npm or yarn
Clone and Build
# 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 start
Install via npm (after publishing)
npm install -g schema-org-mcp
Quick Start
Integration with Claude Desktop
Add the server to your Claude Desktop configuration:
Platform Configuration Path
macOS ~/Library/Application Support/Claude/claudedesktopconfig.json
Windows %APPDATA%\Claude\claudedesktopconfig.json
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"]
}
}
}
Available Tools
The server provides 14 tools organized into three categories.
Operational Tools
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
Core Tools
get_schema_type
Retrieve detailed information about a schema.org type. Supports fuzzy matching for typos and natural aliases.
{
"typeName": "Person"
}
Also accepts:
- Typos:
"Persn"→ suggestsPerson - Aliases:
"blog"→BlogPosting,"faq"→FAQPage
Response:
name,description,id,urlsuperTypes— Direct parent typescategory—core,pending,auto,bib, orhealth-lifescideprecatedandsupersededBy(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"
}
Batch Tools
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" }
]
}
Example Workflows
E-commerce Product Page
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"}
Article vs BlogPosting Decision
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."
Bulk Markup Validation
1. validate_jsonld_batch → {"items": [...array of JSON-LD objects...]}
Returns per-object validation with actionable suggestions
Typo Recovery
1. get_schema_type → {"typeName": "Perosn"}
Error: "Type 'Perosn' not found. Did you mean: Person, Physician, Performer?"
How It Works
Caching Architecture
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 |
- TTL: 24 hours (configurable)
- Fallback: Uses stale cache if schema.org is unavailable
Fuzzy Matching Pipeline
- Check natural language aliases (
blog→BlogPosting) - Attempt case-insensitive and normalized matching
- Calculate similarity scores using Levenshtein distance
- Return top 3 suggestions if score > 0.4
Indexed Data
| Category | Count | |----------|-------| | Types (classes) | ~800+ | | Properties | ~1,400+ | | Enumeration types | ~80+ |
Configuration
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
});
Development
# 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 verify
Deployment
Build with Fingerprint
Every build embeds version metadata for traceability:
npm run build
# Output: Build info generated: v1.1.0 (abc1234)
Verify Deployment
Confirm the correct version is running:
npm run verify
# Or with explicit version:
npm run verify 1.1.0 abc1234
Verification checks:
- Version and git SHA match
compare_typestool responds correctly- Fuzzy matching returns suggestions
- FAQPage examples include
mainEntity - Cache status is available
Runtime Fingerprint
On 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.
Troubleshooting
Slow Cold Start
If the first request is slow, the cache may have expired:
ls -la ~/.cache/schema-org-mcp/
Fuzzy Suggestions Not Appearing
Ensure schema data is fully loaded. The initialize() method must complete before fuzzy matching works.
Force Cache Refresh
Delete the cache directory to fetch fresh data:
rm -rf ~/.cache/schema-org-mcp/
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please ensure all tests pass before submitting.
License
This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
[Back to Top](#schema-org-mcp-server)
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Theycallmeholla
- Source: Theycallmeholla/schema-org-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.