Schema Library MCP (Model Context Protocol) Server

The Schema Library MCP (Model Context Protocol) Server enables AI agents to directly interact with schema library projects. Connect your favorite AI assistant to create, update, search, and manage schema library projects seamlessly.

Quick Start Guide

Follow these steps to get your MCP server connected and ready to use

  1. Get Your API Key

    Generate your personal API key to authenticate write operations.

    How to generate an API key:
    • Navigate to your account settings
    • Go to the API Keys section
    • Generate a new API key
    Note: Read operations (search, browse) don't require authentication. API keys are only needed for create/update operations.
  2. Detailed Client Setup

    Choose your preferred AI client and follow the setup instructions

Usage Examples

Here are practical examples of how to use the MCP server with your AI assistant

Create a New Project

Ask your AI assistant to create a new schema library project:

Create a new schema library project for a healthcare data model.
Title: 'Patient Records Schema'
Domain: Healthcare
Format: JSON Schema
Description: A comprehensive schema for patient medical records
Tags: ['healthcare', 'patient-data', 'medical-records']

Search for Projects

Find existing projects by various criteria:

Find all JSON Schema projects related to financial data

Search for healthcare schemas with patient data

Browse projects in the e-commerce domain

Find schemas tagged with 'API' and 'REST'

Update Project Use Cases

Add or modify use cases for existing projects:

Add a new use case to project ID 'abc123':
- Use Case: Data Validation
- Domain: Healthcare
- Description: Validate patient record structure
- Implementation: JSON Schema validation rules

Remove use case 'Legacy Integration' from project 'xyz789'

Manage Classifications

Organize projects with tags and classifications:

Add tags to project 'def456':
- Tags: ['microservices', 'event-driven', 'real-time']

Update project classification:
- Domain: Financial Services
- Industry: Banking
- Technology: GraphQL

Agent Skills

Add these ready-made skills to your AI client to get expert workflows on top of the MCP server

schema-identification

Download

Match a JSON data sample to the right type in a CoreModels project — enumerating every candidate and narrowing when the sample is under-determined instead of guessing. Pairs with the Schema Library MCP tools (get_project_summary, search_nodes, export_jsonschema, validate_json).

Install locally

Save the file as SKILL.md inside a folder named after the skill, so your AI client can discover it:

Cursor (project-level or user-level):

.cursor/skills/schema-identification/SKILL.md

Claude Code / Claude Desktop:

~/.claude/skills/schema-identification/SKILL.md
This skill uses the Schema Library MCP tools. Make sure the MCP server is configured (see the Quick Start section above) so the skill can call search_nodes, validate_json, and the other tools it relies on.
Skill contents
---
name: schema-identification
description: >-
  Identify which schema/type in a CoreModels project best matches a JSON data
  sample — and, crucially, refuse or narrow when the sample is under-determined
  instead of guessing. Use when a user provides a data record, payload, or set of
  fields and asks "what schema/type is this?", "which model does this fit?", or
  wants a sample validated against a CoreModels project.
---

# Schema Identification with CoreModels

You are matching a JSON data sample to the types defined in a CoreModels project
(a typed schema graph). A project has **types** (classes/schemas), **elements**
(fields, shared across types), and **taxonomies** (controlled-vocabulary value
sets). A type is linked to each of its fields by a **"Domain Includes"** relation.

## The one rule that matters most

**Enumerate every candidate before you commit.** The graph makes it easy to find
*a* type that contains a field and stop there — that is the main way this task goes
wrong. A field almost never belongs to only one type. You have not identified a
schema until you have checked which *other* types also contain *all* the sample's
fields. Finding that `TypeX` contains all the fields is **not** sufficient; you must
also confirm no other type does.

## Tools

- `get_project_summary` — list the project's types, elements, taxonomies (labels +
  ids). Orient here first. It paginates; page through if needed.
- `search_nodes` — find a specific element or type by name/text.
- `get_mixins_and_relation_groups` — see the relation groups (including
  "Domain Includes" that ties a type to its fields).
- `export_jsonschema` — export a candidate type's full JSON Schema.
- `validate_json` — validate the sample against a specific type. Use this to
  confirm a commit, not to search.

## Method

1. **Extract the fields.** List the top-level keys of the sample. Note any nested
   objects and any `_type`/discriminator hints (but do not trust a discriminator
   blindly — verify it).
2. **Map each field to its element(s).** For each field, `search_nodes` to find the
   matching element node and record its id.
3. **Find the types that include each field.** For each element, look at its
   "Domain Includes" relations to collect the set of types that contain it. (A
   type's outgoing "Domain Includes" = its field list; an element's incoming ones =
   the types that use it.)
4. **Intersect.** The candidate set is the types that contain **all** the sample's
   fields — the intersection of the per-field type sets. This intersection is the
   answer to "how determined is this sample", so compute it explicitly. Do not skip
   it because one type looked right.
5. **Check values, not just field names.** If a field maps to a taxonomy
   (controlled vocabulary), confirm the sample's value is actually in that taxonomy.
   A field-name match with an out-of-vocabulary value is a weaker match and may rule
   a type out.
6. **Resolve reference-behind disambiguators.** If two candidates share every
   top-level field but differ in the *type* of a nested field (e.g. one expects
   `data` to be a `HISTORY`, another an `ITEM_STRUCTURE`), export those types and
   compare the nested structure to disambiguate. If the sample doesn't carry enough
   nested detail to decide, it stays under-determined — say so.

## Decision rule

- **Exactly one candidate** contains all fields (and values check out): **commit.**
  Name the type, cite its node id, and validate with `validate_json`.
- **More than one candidate:** **do not pick one.** Return the candidate list and
  name the specific field or value that *would* disambiguate ("add `state` to
  distinguish OBSERVATION; provide `bodySite` to distinguish BiospecimenTemplate").
  Ask for it or state plainly that the input is under-determined.
- **No candidate** contains all fields: say there is no matching type in the
  project. Do not invent one, and do not force-fit the closest partial match.

Prefer under-claiming to over-claiming. "These three types all fit; I need X to
choose" is a correct and useful answer — a confident wrong commit is not.

## Worked example

Sample: `{ "individualID": ..., "specimenID": ..., "aliquotID": ... }`

1. Fields: individualID, specimenID, aliquotID.
2. `search_nodes` finds each as an element.
3. "Domain Includes" relations show **individualID** is used by BiospecimenTemplate
   *and* ~28 assay templates; likewise specimenID and aliquotID.
4. Intersection = ~29 types. **Under-determined.**
5. Correct answer: *"These are shared identifier fields present in ~29 templates
   (BiospecimenTemplate plus assay templates). There is no field here that selects
   one — e.g. `bodySite` would point to BiospecimenTemplate, an assay-specific field
   would point elsewhere. Which did you intend?"*
   A commit to BiospecimenTemplate here would be wrong, even though it is the most
   familiar match.

## Failure modes to avoid

- **Satisficing:** committing to the first type that contains the fields without
  checking the others. This is the most common error — the enumeration step exists
  to prevent it.
- **Committing through visible ambiguity:** if you have already seen that several
  types match, listing them and then committing to one anyway is the same error.
- **Answering from memory:** if the tools fail or return nothing, say so and stop —
  never fall back to what you "know" the schema probably is.
- **Trusting a discriminator you didn't verify:** a `_type` hint can be absent,
  wrong, or ambiguous; confirm against the project.

Capabilities & Features

Project Management

  • Create new schema library projects with comprehensive metadata
  • Update existing projects with new information
  • Manage project versions and revisions
  • Handle project categorization and tagging

Search & Discovery

  • Search published schemas by domain, format, or classification
  • Browse projects by category and tags
  • Filter results by various criteria
  • Access detailed project information

Use Case Management

  • Add and remove use cases for your projects
  • Categorize use cases by domain
  • Provide detailed descriptions and examples
  • Link use cases to specific project features

Classification System

  • Organize projects with custom tags and classifications
  • Create hierarchical category structures
  • Apply industry-specific classifications
  • Maintain consistent tagging standards

Frequently Asked Questions

Q: What is MCP?

A: Model Context Protocol (MCP) is an open standard that allows AI assistants to connect to external data sources and tools. Our MCP server provides a secure, authenticated interface for AI agents to interact with the Schema Library platform.

Q: Do I need an API key for searching projects?

A: No, read operations like searching and browsing projects don't require authentication. API keys are only needed for create, update, and delete operations.

Q: Can I use the same API key for multiple AI assistants?

A: Yes, you can use the same API key across multiple AI assistants. However, for security reasons, we recommend using different keys for different environments or use cases.

Q: What happens if I lose my API key?

A: You can generate a new API key at any time from your account settings. Old keys will be invalidated when you generate a new one.

Q: Is there a limit on how many projects I can create?

A: There are reasonable limits based on your account type. Contact support if you need to increase your limits for enterprise use cases.

Q: Can I export my projects from the MCP server?

A: Yes, you can export project data in various formats. Use the search functionality to find your projects and then export them through the web interface.

Ready to Get Started?

Generate your API key and start integrating with your AI assistant today!