Skip to main content
Glama
gdorsi44

XSD Retrieval MCP Server

by gdorsi44
README.md
# XSD Retrieval MCP Server

A Model Context Protocol (MCP) server for retrieving and analyzing XSD (XML Schema Definition) files.

## Description

This MCP server provides tools for retrieving XSD files from URLs or local paths, validating them, and analyzing their elements. Integrates with any LLM model.

## Features

The server provides the following MCP tools:

1. **retrieve_xsd** - Retrieve an XSD file from a URL or file path
2. **validate_xsd** - Validate if the retrieved content is a valid XSD
3. **list_xsd_elements** - List elements defined in an XSD
4. **get_mcp_server_info** - Get MCP server information including name and version (v1.2.0+)

## Installation

```bash
npm install
npm run build
```

## Usage

To run the server:

```bash
npm start
```

The server communicates via stdio and can be integrated with any MCP-compatible client.

### Tool: retrieve_xsd

Retrieves an XSD file from a URL or local path.

Parameters:
- `source` (string, required): URL or file path to the XSD file
- `save_path` (string, optional): Local path where to save the retrieved XSD file

### Tool: validate_xsd

Validates if the provided content is a valid XSD.

Parameters:
- `xsd_content` (string, required): XSD content to validate

### Tool: list_xsd_elements

Lists elements defined in an XSD.

Parameters:
- `xsd_content` (string, required): XSD content to analyze

### Tool: get_mcp_server_info

Get MCP server information including name and version.

Parameters:
- None

## Recent Improvements (v1.2.0)

- Enhanced XML/XSD parsing with improved regex patterns for better accuracy
- Better error handling with graceful degradation for malformed content
- New `get_mcp_server_info` tool to retrieve server name and version
- Improved namespace extraction with proper prefix and URI handling
- Enhanced element attribute extraction for both self-closing and container elements
- Better deduplication logic for elements with the same name
- Added comprehensive test suite with 9 new tests for XML parsing

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See `LICENSE` for more information.

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct function: server info, XSD retrieval, validation, and element listing. There is no overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., retrieve_xsd, validate_xsd).

Tool Count5/5

With only 4 tools, the server is well-scoped for its purpose of XSD retrieval and basic operations. Each tool is necessary and none is redundant.

Completeness4/5

Covers retrieval, validation, and element listing. Missing more granular element detail extraction, but the core workflow is complete for a retrieval-focused server.