An MCP Server that helps developers build client applications that interact with Ed-Fi APIs through AI assistants like GitHub Copilot, Claude Code, Cursor, etc.
- Version Selection: Choose from Ed-Fi Data Standard versions 4.0, 5.0, 5.1, or 5.2
- Custom URL Support: Configure alternative URLs for custom Ed-Fi Data Standard instances
- OpenAPI Integration: Automatically fetches and parses OpenAPI specifications from Ed-Fi APIs
- Intelligent Caching: Caches OpenAPI specs locally to reduce network requests and improve response times
- Endpoint Discovery: Search and explore available API endpoints
- Schema Exploration: Browse and understand data models and schemas
- Detailed Documentation: Get comprehensive information about endpoints and data structures
- π Schema Visualization: Generate entity relationship diagrams in multiple formats (Mermaid, PlantUML, Graphviz)
- π Interactive Entity Analysis: Explore relationships between core entities (students, schools, assessments, etc.)
- π Domain Filtering: Filter diagrams by entity type or domain area
- π Multiple Export Formats: Export diagrams as text for use in various visualization tools
- π Prompt Documentation: Access comprehensive guides and best practices through AI prompts
The MCP server includes built-in prompt templates that provide detailed guidance on working with Ed-Fi APIs:
- ed-fi-authentication-guide: Complete OAuth 2.0 authentication guide with code examples
- ed-fi-api-quickstart: Quick start guide for common API operations (GET, POST, PUT, DELETE)
- ed-fi-data-validation: Data validation strategies and error handling techniques
These prompts can be accessed through any MCP-compatible AI assistant and provide contextual help for Ed-Fi development tasks.
For more information on using this server, see:
Warning
These installation instructions are not ready for usage yet.
- Written by Copilot and not verified, other than the VS Code instructions.
- They will only work once
ed-fi-sdk-mcphas been published to npmjs.com.
This MCP server can be integrated with popular AI coding assistants to provide Ed-Fi Data Standard context during development.
Add the following to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"ed-fi-data-standard": {
"command": "npx",
"args": ["ed-fi-sdk-mcp"],
"env": {}
}
}
}- Install the Cline extension in VS Code
- Configure the MCP server in Cline's settings:
- Command:
npx ed-fi-sdk-mcp - Transport: stdio
- Command:
Add the following to your Continue configuration:
{
"mcp": {
"servers": {
"ed-fi-data-standard": {
"command": "npx",
"args": ["ed-fi-sdk-mcp"]
}
}
}
}Configure the MCP server in Cursor's MCP settings:
- Server name: ed-fi-data-standard
- Command:
npx ed-fi-sdk-mcp
-
Ensure you have the GitHub Copilot and GitHub Copilot Chat extensions installed
-
Create or update your VS Code settings file (
.vscode/mcp.jsonin your workspace or global settings):{ "servers": { "ed-fi-sdk-mcp": { "type": "stdio", "command": "npx", "args": [ "ed-fi-sdk-mcp" ] } }, "inputs": [] } -
Restart VS Code and use
@ed-fi-data-standardin GitHub Copilot Chat to access Ed-Fi Data Standard tools
- Ensure you have the GitHub Copilot extension installed
- See instructions in Use MCP servers.
If you've installed the package globally or locally, you can also use:
# Global installation
npm install -g ed-fi-sdk-mcp
# Then reference it directly
ed-fi-mcp-serverThe MCP server provides the following tools:
Lists all supported Ed-Fi Data Standard versions and their corresponding OpenAPI specification URLs.
Loads the OpenAPI specification for a specific Ed-Fi Data Standard version.
Parameters:
version(required): One of "4.0", "5.0", "5.1", or "5.2"
Loads the OpenAPI specification from a custom URL (e.g., for custom Ed-Fi implementations).
Parameters:
url(required): The URL to the custom OpenAPI specificationname(required): A descriptive name for this custom data standard
Searches for API endpoints that match a query term.
Parameters:
query(required): Search term (e.g., "student", "school", "assessment")
Gets detailed information about a specific API endpoint.
Parameters:
path(required): The API endpoint path (e.g., "/ed-fi/students")method(optional): HTTP method (default: "GET")
Searches for data models/schemas that match a query term.
Parameters:
query(required): Search term (e.g., "Student", "School", "Assessment")
Gets detailed information about a specific data model/schema.
Parameters:
schemaName(required): The name of the schema
Generate entity relationship diagrams from the OpenAPI specification.
Parameters:
format(optional): Diagram format - "mermaid", "plantuml", or "graphviz" (default: "mermaid")includeProperties(optional): Include entity properties in diagram (default: true)includeDescriptions(optional): Include entity descriptions (default: false)filterDomains(optional): Array of domain names to filter by (e.g., ["student", "school"])maxEntities(optional): Maximum number of entities to include (default: 20)
List relationships between entities in the current specification.
Parameters:
entityName(optional): Show relationships for a specific entity onlyrelationshipType(optional): Filter by relationship type ("one-to-one", "one-to-many", "many-to-one", "many-to-many")
Get entities grouped by domain areas (Student, School, Staff, Assessment, etc.).
Parameters:
domain(optional): Get entities for a specific domain only
Export a diagram as text that can be rendered by various visualization tools.
Parameters:
format(required): Diagram format - "mermaid", "plantuml", or "graphviz"filename(optional): Filename to save the diagram textfilterDomains(optional): Filter entities by domain areasmaxEntities(optional): Maximum number of entities to include (default: 15)
The MCP server supports the following environment variables for configuration:
-
ED_FI_CUSTOM_BASE_URL(optional): Set a custom base URL for Ed-Fi API instances. When set, standard version URLs will be rewritten to use this base instead ofhttps://api.ed-fi.org.Example:
ED_FI_CUSTOM_BASE_URL=https://my-ed-fi-instance.org/v7.3 -
ED_FI_CACHE_DIR(optional): Specify a custom directory for caching OpenAPI specifications. Defaults to the system temporary directory.Example:
ED_FI_CACHE_DIR=/home/user/.cache/ed-fi-mcp
# Using a custom Ed-Fi instance
ED_FI_CUSTOM_BASE_URL=https://my-ed-fi.org/v7.3 npx ed-fi-sdk-mcp
# Custom cache directory
ED_FI_CACHE_DIR=/opt/cache/ed-fi npx ed-fi-sdk-mcp
# Both options together
ED_FI_CUSTOM_BASE_URL=https://my-ed-fi.org/v7.3 ED_FI_CACHE_DIR=/opt/cache/ed-fi npx ed-fi-sdk-mcp-
Start by listing available versions: Use
list_available_versionsto see all supported Ed-Fi Data Standard versions. -
Select a version or custom URL:
- Use
set_data_standard_versionwith your desired version (e.g., "5.2") for standard Ed-Fi API. - Use
set_custom_data_standard_urlto load from a custom Ed-Fi implementation.
- Use
-
Explore endpoints: Use
search_endpointsto find API endpoints related to your needs (e.g., search for "student"). -
Get endpoint details: Use
get_endpoint_detailsto learn about request/response formats for specific endpoints. -
Explore data models: Use
search_schemasandget_schema_detailsto understand the data structures. -
π Visualize entity relationships: Use
generate_entity_diagramto create visual representations of the data model. -
π Analyze entity domains: Use
get_entities_by_domainto understand how entities are organized by functional areas. -
π Export diagrams: Use
export_diagram_as_textto save diagrams for documentation or further analysis.
If you're working with a custom Ed-Fi implementation, you can load specifications directly:
-
Use set_custom_data_standard_url with:
url: "https://your-ed-fi.org/api/metadata/data/v3/resources/swagger.json"name: "My Custom Ed-Fi Instance"
-
Continue with normal workflow (search_endpoints, etc.)
For data architects working with Ed-Fi schemas:
-
Load the specification:
set_data_standard_version("5.2") -
Explore domain structure:
get_entities_by_domain() -
Generate a student-focused diagram:
generate_entity_diagram({ "format": "mermaid", "filterDomains": ["student", "school"], "maxEntities": 15 }) -
Examine specific relationships:
list_entity_relationships({ "entityName": "edfi_student" }) -
Export for documentation:
export_diagram_as_text({ "format": "plantuml", "filename": "student-entities.puml", "filterDomains": ["student"] })
The generated diagrams can be used in:
- GitHub/GitLab documentation (Mermaid)
- Technical documentation (PlantUML)
- System architecture documents (Graphviz)
- Presentation materials (exported as images)
Copyright (c) 2025, Ed-Fi Alliance, LLC. All rights reserved.
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.