Skip to main content
Glama
README.md
# Sample Data MCP

A Model Context Protocol (MCP) server that generates fixed-length test data based on field specifications. This tool helps developers create realistic test datasets with customizable field types and formats.

## Features

- Generate fixed-length test data records
- Support for multiple field types:
  - `string`: Random names using Faker library
  - `enum`: Random selection from provided values
  - `integer`: Random integers within specified range
  - `date`: Random dates with customizable format
  - `filler`: Space padding fields
- Configurable field length and constraints
- MCP-compatible for integration with Claude Code

## Installation

### Prerequisites

- Python 3.13 or higher
- [UV package manager](https://docs.astral.sh/uv/)

### Install with UV

1. Clone or download this project
2. Navigate to the project directory
3. Install dependencies:
   ```bash
   uv sync
   ```

### Install into Claude Code

1. Add the MCP server to your Claude Code configuration. Edit your MCP settings file (typically `~/.config/claude-code/mcp_servers.json` or similar):

   ```json
   {
     "mcpServers": {
       "sample-data-mcp": {
         "command": "uv",
         "args": ["run", "/path/to/sample-data-mcp/main.py"],
         "cwd": "/path/to/sample-data-mcp"
       }
     }
   }
   ```

2. Restart Claude Code to load the new MCP server

## Usage

Once installed, you can use the `generate_test_data_tool` through Claude Code to create test data:

### Example Field Specification

```python
fields = [
    {
        "name": "customer_id",
        "type": "integer",
        "length": 8,
        "min": 1000,
        "max": 9999
    },
    {
        "name": "customer_name",
        "type": "string",
        "length": 25
    },
    {
        "name": "status",
        "type": "enum",
        "length": 6,
        "values": ["ACTIVE", "INACTIVE", "PENDING"]
    },
    {
        "name": "signup_date",
        "type": "date",
        "length": 8,
        "format": "%Y%m%d"
    },
    {
        "name": "filler",
        "type": "filler",
        "length": 5
    }
]
```

### Field Types

| Type | Description | Required Fields | Optional Fields |
|------|-------------|-----------------|-----------------|
| `string` | Random names | `name`, `type`, `length` | - |
| `enum` | Random selection from list | `name`, `type`, `length`, `values` | - |
| `integer` | Random integer | `name`, `type`, `length` | `min`, `max` |
| `date` | Random date | `name`, `type`, `length` | `format` |
| `filler` | Space padding | `name`, `type`, `length` | - |

## Development

### Testing Locally

```bash
uv run mcp dev main.py
```

### Dependencies

- `faker`: For generating realistic fake data
- `mcp`: Model Context Protocol implementation
- `pydantic`: Data validation and settings management

## License

This project is provided as-is for educational and development purposes.

TDQS

B3.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly distinct as it is the sole tool available.

Naming Consistency5/5

Since there is only one tool, naming consistency is inherently perfect. The tool name 'generate_test_data_tool' follows a clear verb_noun pattern, but consistency cannot be assessed across multiple tools.

Tool Count2/5

A single tool is generally too few for a server's purpose, as it limits functionality and suggests an incomplete or overly narrow scope. For a data generation server, one tool is insufficient to cover typical needs like varied data types or configurations.

Completeness2/5

The server's domain appears to be test data generation, but with only one tool, the surface is severely incomplete. It lacks operations for different data formats, validation, customization, or management, which are essential for comprehensive data handling.