Skip to main content
Glama
ADLS2 MCP Server

ADLS2 MCP Server

by erikhoward

ADLS2 MCP Server 🚀

A Model Context Protocol (MCP) server implementation for Azure Data Lake Storage Gen2. This service provides a standardized interface for interacting with ADLS2 storage, enabling file operations through MCP tools.

License Python Version uv MCP

Setup 🛠️

Installation 📦

Requires Python 3.13 or higher.

Install the package using uv:

uv pip install adls2-mcp-server

MCP Configuration ⚙️

Claude Desktop Configuration

1 - Edit Claude Desktop Configuration:

Open claude_desktop_config.json and add the following configuration.

On MacOs, the file is located here: ~/Library/Application Support/Claude Desktop/claude_desktop_config.json.

On Windows, the file is located here: %APPDATA%\Claude Desktop\claude_desktop_config.json.

{
    "mcpServers": {
        "adls2": {
            "command": "adls2-mcp-server",
            "env": {
                "LOG_LEVEL": "DEBUG",
                "UPLOAD_ROOT": "/path/to/store/uploads",
                "DOWNLOAD_ROOT": "/path/to/store/downloads",
                "AZURE_STORAGE_ACCOUNT_NAME": "your-azure-adls2-storage-account-name",
                "READ_ONLY_MODE": "false"
            }
        }
    }
}

The following is a table of available environment configuration variables:

Variable

Description

Default

LOG_LEVEL

Logging level

INFO

UPLOAD_ROOT

Root directory for file uploads

./uploads

DOWNLOAD_ROOT

Root directory for file downloads

./downloads

AZURE_STORAGE_ACCOUNT_NAME

Azure ADLS2 storage account name

None

AZURE_STORAGE_ACCOUNT_KEY

Azure ADLS2 storage account key (optional)

None

READ_ONLY_MODE

Whether the server should operate in read-only mode

true

If AZURE_STORAGE_ACCOUNT_KEY is not set, the server will attempt to authenticate using Azure CLI credentials. Ensure you have logged in with Azure CLI before running the server:

az login

2 - Restart Claude Desktop.

Available Tools 🔧

Filesystem (container) Operations

  • list_filesystems - List all filesystems in the storage account

  • create_filesystem - Create a new filesystem

  • delete_filesystem - Delete an existing filesystem

File Operations

  • upload_file - Upload a file to ADLS2

  • download_file - Download a file from ADLS2

  • file_exists - Check if a file exists

  • rename_file - Rename/move a file

  • get_file_properties - Get file properties

  • get_file_metadata - Get file metadata

  • set_file_metadata - Set file metadata

  • set_file_metadata_json - Set multiple metadata key-value pairs using JSON

Directory Operations

  • create_directory - Create a new directory

  • delete_directory - Delete a directory

  • rename_directory - Rename/move a directory

  • directory_exists - Check if a directory exists

  • directory_get_paths - Get all paths under the specified directory

Related MCP server: mysql-mcp-zag

Development 💻

Local Development Setup

1 - Clone the repository:

git clone https://github.com/erikhoward/adls2-mcp-server.git
cd adls2-mcp-server

2 - Create and activate virtual environment:

Linux/macOS:

python -m venv .venv
source .venv/bin/activate

Windows:

.venv\Scripts\activate

3 - Install dependencies:

pip install -e ".[dev]"

4 - Copy and configure environment variables:

cp .env.example .env

Edit .env with your settings.

AZURE_STORAGE_ACCOUNT_NAME=your_azure_adls2_storage_account_name
AZURE_STORAGE_ACCOUNT_KEY=your_azure_adls2_storage_key (optional)
DOWNLOAD_ROOT=/path/to/download/folder
UPLOAD_ROOT=/path/to/upload/folder
READ_ONLY_MODE=True
LOG_LEVEL=INFO

If AZURE_STORAGE_ACCOUNT_KEY is not set, the server will attempt to authenticate using Azure CLI credentials. Ensure you have logged in with Azure CLI before running the server:

az login

5 - Claude Desktop Configuration

Open claude_desktop_config.json and add the following configuration.

On MacOs, the file is located here: ~/Library/Application Support/Claude Desktop/claude_desktop_config.json.

On Windows, the file is located here: %APPDATA%\Claude Desktop\claude_desktop_config.json.

{
    "mcpServers": {
        "adls2": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/adls2-mcp-server/repo",
                "run",
                "adls2-mcp-server"
            ],
            "env": {
                "LOG_LEVEL": "DEBUG",
                "UPLOAD_ROOT": "/path/to/store/uploads",
                "DOWNLOAD_ROOT": "/path/to/store/downloads",
                "AZURE_STORAGE_ACCOUNT_NAME": "your-azure-adls2-storage-account-name",
                "READ_ONLY_MODE": "false"
            }
        }
    }
}

6 - Restart Claude Desktop.

Contributions 🤝

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your 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 ⚖️

Licensed under MIT - see LICENSE.md file.

This is not an official Microsoft product.

Available Tools

16 tools
create_directoryC

Create a new directory in the specified filesystem

Inputs: filesystem (required), path (required).

create_filesystemC

Create a new ADLS2 filesystem (container)

Inputs: name (required).

delete_directoryC

Delete a directory from the specified filesystem

Inputs: filesystem (required), path (required).

delete_filesystemC

Delete an ADLS2 filesystem

Inputs: name (required).

directory_existsB

Check if a directory exists in the specified filesystem

Inputs: filesystem (required), path (required).

directory_get_pathsC

Get all paths under the specified directory

Inputs: filesystem (required), directory_path (required), recursive.

download_fileC

Download a file from ADLS2

Inputs: filesystem (required), source (required), download_path (required).

file_existsB

Check if a file exists in the specified filesystem

Inputs: filesystem (required), file_path (required).

get_file_metadataC

Get metadata of a file in the specified filesystem

Inputs: filesystem (required), file_path (required).

get_file_propertiesC

Get properties of a file in the specified filesystem

Inputs: filesystem (required), file_path (required).

list_filesystemsA

List all filesystems in the storage account

Inputs: no named parameters.

rename_directoryB

Rename/move a directory within the specified filesystem

Inputs: filesystem (required), source_path (required), destination_path (required).

rename_fileC

Rename/move a file within the specified filesystem

Inputs: filesystem (required), source_path (required), destination_path (required).

set_file_metadataC

Set a single metadata key-value pair for a file

Inputs: filesystem (required), file_path (required), key (required), value (required).

set_file_metadata_jsonC

Set multiple metadata key-value pairs for a file using JSON

Inputs: filesystem (required), file_path (required), metadata_json (required).

upload_fileC

Upload a file to ADLS2

Inputs: upload_file (required), filesystem (required), destination (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 16 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (filesystem vs directory vs file operations). However, 'get_file_metadata' and 'get_file_properties' could be confused, and 'set_file_metadata' vs 'set_file_metadata_json' have similar functionality.

    Naming Consistency4/5

    The naming pattern is mostly verb_noun (e.g., create_directory, upload_file). However, 'directory_get_paths' breaks this pattern by starting with the noun, which is a minor inconsistency.

    Tool Count4/5

    With 16 tools, the server is slightly above the typical well-scoped range (3-15), but still reasonable for an ADLS2 service covering filesystems, directories, and files.

    Completeness2/5

    Notable gaps exist: there is no delete_file operation for file cleanup, no copy operation, and no update for filesystems. Agents managing files will hit a dead end trying to delete a file.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables file system operations such as listing directories, reading, writing, creating, and deleting files or directories through MCP.
      19 npm
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables interaction with Azure Data Lake Storage Gen2 through the Model Context Protocol, supporting file and directory operations such as upload, download, rename, and metadata management.
      16
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Enables accessing and managing files from configured folders with filtering and size limits, allowing listing, reading, and searching files via MCP tools and resources.
      3
      -