Skip to main content
Glama
itk-dev

ITK Dev Docker MCP Server

Official
by itk-dev

ITK Dev Docker MCP Server

Model Context Protocol (MCP) server that provides AI coding assistants with access to ITK Dev Docker documentation and project analysis tools.

What is MCP?

MCP (Model Context Protocol) is an open protocol that enables AI assistants like Claude to access external resources and tools. This server provides:

  • Documentation Resources: Access to ITK Dev Docker documentation

  • Project Tools: Analyze, detect, and compare ITK Dev projects

Related MCP server: Docker MCP Server

Installation

This MCP server is part of the ITK Dev Claude Plugins.

Install through the ITK Dev plugin marketplace:

/plugin marketplace add itk-dev/itkdev-claude-plugins
/plugin install itkdev-tools@itkdev-marketplace

The MCP server will be automatically configured.

Manual Installation

For development or standalone use:

Prerequisites

  • Node.js 18 or later

  • npm

Build

git clone https://github.com/itk-dev/mcp-itkdev-docker.git
cd mcp-itkdev-docker
npm install
npm run build

Configure Claude Code

Add to ~/.claude.json or .mcp.json in your project:

{
  "mcpServers": {
    "itkdev-docker": {
      "command": "npx",
      "args": ["-y", "github:itk-dev/mcp-itkdev-docker"]
    }
  }
}

Or for local development:

{
  "mcpServers": {
    "itkdev-docker": {
      "command": "node",
      "args": ["/path/to/mcp-itkdev-docker/dist/index.js"]
    }
  }
}

Verify Installation

Restart Claude Code and check that the MCP server is connected. You can ask Claude:

"What ITK Dev templates are available?"

Claude should be able to list templates using the itkdev_list_templates tool.

Available Resources

URI

Description

itkdev://docs/cli

CLI tool commands, templates, and setup procedures

itkdev://docs/compose

Docker Compose patterns and configurations

itkdev://docs/taskfile

Taskfile automation patterns

Available Tools

itkdev_list_templates

List all available ITK Dev Docker templates with their characteristics.

Example prompt:

"What templates are available for Drupal projects?"

itkdev_detect_project

Analyze a directory to detect ITK Dev project configuration.

Parameters:

  • path (required): Absolute path to the project directory

Example prompt:

"Analyze the project at /Users/me/projects/mysite"

Returns:

  • Project type (Drupal/Symfony)

  • Template in use

  • PHP version

  • Web root

  • Services defined

  • ITK version

itkdev_get_template_files

List all files that would be installed by a template.

Parameters:

  • template (required): Template name (e.g., drupal-11)

Example prompt:

"What files does the drupal-11 template include?"

itkdev_compare_project

Compare a project against its template to find differences.

Parameters:

  • path (required): Absolute path to the project

  • template (optional): Template to compare against (auto-detected from .env)

Example prompt:

"Is my project at /Users/me/projects/mysite up to date with its template?"

Returns:

  • Missing files

  • Outdated files (with version comparison)

  • Matching files

  • Update recommendations

itkdev_get_template_content

Get the content of a specific file from a template.

Parameters:

  • template (required): Template name

  • file (required): Relative file path

Example prompt:

"Show me the docker-compose.yml from the drupal-11 template"

Use Cases

Setting Up a New Project

"I need to set up a new Drupal 11 project. What template should I use and what are the steps?"

Claude will read the documentation and provide step-by-step instructions.

Checking Project Status

"Analyze my project at /path/to/project and tell me if it needs updates"

Claude will detect the project configuration and compare against the template.

Understanding Configurations

"What services are included in the drupal-11 template and what do they do?"

Claude will read the documentation and explain each service.

Troubleshooting

"My Docker containers won't start. Can you help debug?"

Claude will read troubleshooting documentation and analyze your project configuration.

Development

Watch Mode

npm run dev

Rebuilds on file changes.

Project Structure

mcp-itkdev-docker/
├── src/
│   └── index.ts      # MCP server implementation
├── dist/             # Compiled output (gitignored)
├── docs/             # Documentation served as MCP resources
│   ├── itkdev-docker-cli.md
│   ├── itkdev-docker-compose.md
│   └── itkdev-task-files.md
├── package.json
├── tsconfig.json
└── README.md

Troubleshooting

Server Not Connecting

  1. If using the plugin, verify installation with /plugin list

  2. For manual installation, check that the path is absolute and correct

  3. Check Node.js version (node --version should be 18+)

  4. Restart Claude Code after configuration changes

Tools Not Working

  1. Verify the MCP server is running (check Claude Code status)

  2. For manual installation, ensure npm run build completed successfully

  3. Look for error messages in Claude Code's output

Available Tools

5 tools
itkdev_compare_projectB

Compare a project's Docker configuration against its template to find missing, outdated, or extra files

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the project directory
templateNoTemplate to compare against (auto-detected from .env if not provided)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It usefully discloses the three result categories (missing, outdated, extra), implying a read-only drift analysis, but never states side effects, permissions, or return shape explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource and ends with the concrete result categories. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description must carry more weight, and it does mention the result categories, which is helpful. However, it omits how the comparison is scoped or what the output looks like, leaving gaps for an agent predicting behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'path' and 'template' are already documented, including the auto-detection fallback for template. The description adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compare), two concrete resources (project's Docker configuration and its template), and the outcome (missing, outdated, extra files). It is clearly distinct from the sibling retrieval tools, though it does not name any of them explicitly to reinforce the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the comparison yields but gives no guidance on when to prefer it over siblings like itkdev_detect_project or itkdev_get_template_files, and no prerequisites or exclusions. Usage can only be inferred from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

itkdev_detect_projectB

Analyze a directory to detect ITK Dev project configuration, template type, PHP version, and framework

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the project directory to analyze

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Analyze' implies a read-only inspection, but the description never confirms it is non-mutating, says nothing about what happens if detection fails, and does not indicate whether it inspects the filesystem recursively. For a tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the verb and detected attributes are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the four things detection returns (configuration, template type, PHP version, framework), which is enough for an agent to know what to expect. It falls short only on error/edge-case behavior for a missing or invalid path.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'path' parameter is fully documented in the schema as an absolute path. The description adds no format, constraint, or edge-case detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Analyze) and resource (a directory) and enumerates what is detected: ITK Dev project configuration, template type, PHP version, and framework. This clearly separates it from siblings like itkdev_list_templates and itkdev_get_template_content, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this tool versus itkdev_compare_project or the template-fetching siblings, nor any stated prerequisites (e.g., the directory must exist or be a valid project). The agent must infer usage entirely from the purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

itkdev_get_template_contentC

Get the content of a specific file from a template

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesRelative file path within the template (e.g., docker-compose.yml)
templateYesTemplate name (e.g., drupal-11)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says nothing about whether content is truncated, how binary files are handled, error behavior for missing files/templates, or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that is front-loaded and free of filler. It is appropriately sized but does not exploit the space to add value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a retrieval tool with no annotations and no output schema, the description should explain return content or behavior. It doesn't, so an agent lacks key information about what it will get back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear examples for both the file path and template name, so the schema already fully documents the parameters. The description adds no parameter detail beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('content of a specific file from a template'), so the operation is unambiguous. It doesn't distinguish itself from siblings like itkdev_get_template_files, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this tool versus the sibling itkdev_get_template_files, no prerequisites, and no context about calling this before or after detection/listing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

itkdev_get_template_filesA

List all files that would be installed by a specific template

ParametersJSON Schema
NameRequiredDescriptionDefault
templateYesTemplate name (e.g., drupal-11, symfony-6, drupal-module)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and 'would be installed' usefully signals this is a non-mutating preview rather than an install. That said, it does not state whether the template must exist locally, whether it fetches remotely, or what happens on an unknown template name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the key qualifier 'would be installed' front-loaded; nothing is wasted and it is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with full schema coverage and no output schema, the description is adequate but leaves gaps: how files are returned, whether nested paths appear, and how it differs from itkdev_get_template_content are all unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'template' parameter is already fully documented with examples (drupal-11, symfony-6, drupal-module). The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (files installed by a template), with the qualifying scope 'would be installed' making the read-only preview nature clear. However, it does not distinguish itself from siblings like itkdev_get_template_content, which the agent must infer is different by name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description — use it to see a template's file manifest — but there is no explicit when-to-use guidance, no mention of when to prefer itkdev_get_template_content or itkdev_compare_project, and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

itkdev_list_templatesA

List all available ITK Dev Docker templates with their PHP versions and characteristics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the operation is an enumeration and what each entry contains, implying a safe read, but it does not state permissions, whether results are paginated, or whether the template set is static or dynamic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the verb and resource lead immediately and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-annotation list tool with no output schema, the description gives enough to call it correctly and hints at the return shape (PHP versions, characteristics). It could be slightly more complete by noting this is a prerequisite step for the other template tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Schema coverage is 100% but empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and resource (ITK Dev Docker templates) and previews the returned attributes (PHP versions and characteristics). It is clearly distinguishable from siblings like get_template_content or compare_project, though it does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: as the sole catalog/list tool among siblings, an agent can infer it should be called for discovery. There is no explicit when-to-use, no prerequisites, and no mention of when an alternative sibling is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv0.1.2
    • First observeditkdev_compare_project
    • First observeditkdev_detect_project
    • First observeditkdev_get_template_content
    • First observeditkdev_get_template_files
    • First observeditkdev_list_templates

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct action: detect inspects a project, list_templates enumerates templates, get_template_files and get_template_content retrieve file listings vs. file bodies, and compare_project diffs configs. The template-listing vs. template-file-content pair is clearly separated by naming and description, so misselection is unlikely.

Naming Consistency5/5

All five tools share the itkdev_ prefix and a consistent snake_case verb_noun pattern (detect_project, get_template_files, compare_project, get_template_content, list_templates). The convention is uniform and predictable, with no mixing of styles.

Tool Count4/5

Five tools is a tight, well-scoped set that matches the narrow template-inspection domain, with no redundant entries. It sits at the lower end of the range and feels slightly thin given that the server appears to be a scaffolding helper.

Completeness3/5

The surface is entirely read-only: detection, listing, content retrieval, and diffing are covered, but there is no tool to actually apply/install a template or initialize a project from one. For a Docker scaffolding server that is a notable gap, leaving agents to perform the core write action outside the toolset.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers