Skip to main content
Glama

Struct-MCP

Transform data structure definitions into queryable MCP servers. Define your data structures with business context and get an AI-queryable interface that can answer questions about field meanings, data lineage, and structure.

Quick Start

# Install
pip install struct-mcp

# Create a structure definition
echo "cheese_inventory:
  description: 'Artisanal cheese catalog'
  fields:
    cheese_id:
      type: string
      description: 'Unique identifier for each cheese'
      upstream_table: 'inventory.raw_cheese_data'
    name:
      type: string
      description: 'Display name of the cheese'
    stinkiness_level:
      type: integer
      nullable: true
      description: 'Stinkiness rating from 1-10'
" > cheese.yaml

# Start MCP server
struct-mcp serve cheese.yaml

Related MCP server: Axon.MCP.Server

Supported Formats

Load from multiple input formats:

  • YAML - Primary format with full business context

  • JSON Schema - Standard JSON Schema files

  • OpenSearch - Elasticsearch/OpenSearch mappings

  • Avro - Apache Avro schemas

  • Pydantic - Python BaseModel classes

  • Protocol Buffer - .proto message definitions

struct-mcp serve schema.yaml        # YAML
struct-mcp serve schema.json        # JSON Schema/OpenSearch/Avro
struct-mcp serve model.py          # Pydantic
struct-mcp serve messages.proto    # Protocol Buffer

What You Can Ask

Once loaded, query your structures with natural language:

  • "What does the cheese_id field represent?"

  • "Which fields come from the inventory table?"

  • "What fields are nullable and why?"

  • "How is stinkiness_level calculated?"

  • "Show me all array fields"

Python API

from struct_mcp import StructMCP, MCPServer

# Load any format
smc = StructMCP.from_file("cheese.yaml")

# Query programmatically
fields = smc.get_fields("cheese_inventory")
nullable_fields = smc.get_fields("cheese_inventory", nullable=True)

# Convert between formats
opensearch_mapping = smc.to_opensearch()
pydantic_model = smc.to_pydantic()

# Start MCP server
server = MCPServer(smc)
server.start()

Examples

See examples/ for sample files in all supported formats:

  • cheese_catalog.yaml - Artisanal cheese inventory

  • user_profiles.yaml - User data with preferences

  • financial_transactions.yaml - Payment processing metadata

Documentation

For detailed setup, development, and API documentation, see setup.md.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables natural language interaction with Apache Iceberg data lakehouses, allowing users to query table metadata, schemas, and properties through Claude, Cursor, or other MCP clients.
    5
    41
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that transforms codebases into intelligent, queryable knowledge bases, enabling AI assistants to perform semantic search, explore architecture, and analyze code relationships.
    167
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives AI assistants the ability to connect to, query, profile, and monitor data sources — turning any LLM into an interactive data engineering copilot.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing read-only Snowflake metadata tools (schemas, tables, queries, lineage) for agentic data pipeline generation, enabling natural-language-to-pipeline workflows with dbt, Airflow, and Great Expectations.
    1
    MIT