MCP Atlas
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP AtlasCheck the migration status of my database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Atlas
An MCP (Model Context Protocol) server for Ariga Atlas, enabling AI assistants to interact with Atlas migration tools through the Model Context Protocol.
What is this?
This package provides a bridge between AI assistants (like Claude) and Atlas, allowing them to manage database migrations, validate schemas, and perform other database-related operations using Atlas commands.
Related MCP server: Vanna AI MCP Server
Features
migrate-apply: Apply pending migration files to a database
migrate-diff: Generate new migration files by comparing current state to desired schema
migrate-lint: Run analysis on migration directory to detect issues
migrate-new: Create new empty migration files
migrate-status: Report current migration status of a database
migrate-validate: Validate migration directory integrity and consistency
Prerequisites
Atlas CLI must be installed and available in your PATH
Node.js 18 or higher
Configuration
Add this server to your MCP client configuration. For Claude Desktop, add to your config file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"atlas": {
"command": "npx",
"args": ["-y", "@mpreziuso/mcp-atlas"]
}
}
}The -y flag automatically installs or updates the package without prompting.
Usage
Once configured, your AI assistant can use Atlas commands through the MCP protocol. Example interactions:
"Check the migration status of my database"
"Create a new migration file"
"Apply pending migrations to the database"
"Validate the migration directory"
"Generate a migration diff from my schema"
Example Commands
The MCP server wraps these Atlas CLI commands:
atlas migrate apply- Apply migrationsatlas migrate diff- Generate migration diffsatlas migrate lint- Lint migration filesatlas migrate new- Create new migrationatlas migrate status- Check migration statusatlas migrate validate- Validate migrations
License
MIT
Author
Michele Preziuso mpreziuso@kaosdynamics.com
Repository
Available Tools
6 toolsmigrate-applyC
Apply pending migration files to a database
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Database URL (required) | |
| dirUrl | No | URL to migration directory (e.g., file://migrations) | |
| dryRun | No | Print SQL without executing | |
| txMode | No | Transaction mode: none, file, or all | |
| baseline | No | Start from a specific version | |
| allowDirty | No | Allow applying on a non-clean database | |
| format | No | Output format: text or json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing critical behaviors: it doesn't mention that this is a destructive/mutative operation (applies changes to database), potential risks (e.g., data loss), authentication needs, or output handling. This leaves significant gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words, front-loading the core action. It efficiently communicates the essential purpose without unnecessary elaboration, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (applies migrations, potentially destructive), lack of annotations, and no output schema, the description is incomplete. It fails to address behavioral risks, output expectations, or integration with sibling tools, leaving the agent under-informed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no parameter-specific information beyond implying 'pending migration files' relates to dirUrl. This meets the baseline for high schema coverage but doesn't enhance parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('apply') and target ('pending migration files to a database'), making the purpose understandable. However, it doesn't explicitly differentiate from siblings like migrate-status (which checks status) or migrate-diff (which compares), leaving room for improvement in sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like migrate-status or migrate-validate. It lacks context about prerequisites (e.g., after creating migrations with migrate-new) or exclusions, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate-diffB
Generate a new migration file by comparing current state to desired schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Desired schema state (file:// or schema HCL) | |
| devUrl | No | URL for dev database to compute diff | |
| dirUrl | No | URL to migration directory | |
| name | No | Name for the new migration file | |
| edit | No | Open editor for manual changes | |
| format | No | Output format: text or json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether this is a read-only or mutating operation, what permissions are needed, how errors are handled, or what the output looks like (e.g., file creation details). For a tool with 6 parameters and no annotations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every element ('generate', 'new migration file', 'comparing current state to desired schema') earns its place by contributing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain the output (e.g., where the file is saved, format details), error conditions, or integration with sibling tools. For a migration generation tool, this leaves critical gaps in understanding its full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no additional parameter semantics beyond implying a comparison between 'current state' and 'desired schema', which loosely relates to the 'to' parameter. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Generate a new migration file by comparing current state to desired schema', which specifies the verb (generate), resource (migration file), and method (comparing states). It distinguishes from siblings like migrate-apply (applies migrations) or migrate-status (checks status), but doesn't explicitly name alternatives for the comparison function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating migration files through schema comparison, but doesn't explicitly state when to use this versus alternatives like migrate-new (creates empty migration) or migrate-validate (validates migrations). No guidance on prerequisites, exclusions, or specific scenarios is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate-lintC
Run analysis on migration directory to detect issues
| Name | Required | Description | Default |
|---|---|---|---|
| dirUrl | Yes | URL to migration directory (required) | |
| devUrl | No | URL for dev database for analysis | |
| latest | No | Only check the latest N migrations | |
| gitBase | No | Git base ref to compare against | |
| format | No | Output format: text or json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool runs analysis to detect issues, which implies a read-only, non-destructive operation, but doesn't clarify aspects like whether it modifies data, requires specific permissions, has rate limits, or what the output entails (e.g., error messages, reports). This leaves significant gaps for a tool with 5 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy to parse while conveying the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema, and no annotations), the description is insufficient. It lacks details on behavioral traits, output format implications (though 'format' parameter hints at this), and how it differs from siblings. For a migration analysis tool, more context on what 'issues' are detected or how results are used would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the input schema with clear descriptions. The description adds no additional meaning beyond the schema, such as explaining interactions between parameters (e.g., how 'latest' and 'gitBase' affect analysis) or providing examples. Baseline 3 is appropriate as the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run analysis') and target ('migration directory') with the purpose 'to detect issues', which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'migrate-validate' or 'migrate-diff' that might also involve analysis or validation of migrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'migrate-validate' or 'migrate-diff' from the sibling list. It mentions the general purpose but lacks explicit when/when-not instructions or prerequisites, leaving usage context implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate-newB
Create a new empty migration file in the migration directory
| Name | Required | Description | Default |
|---|---|---|---|
| dirUrl | Yes | URL to migration directory (required) | |
| name | No | Name for the new migration file | |
| edit | No | Open editor to modify the file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Create' implies a write operation, it doesn't specify what happens if the file already exists, whether this requires specific permissions, or what the resulting file structure looks like. The description is minimal and lacks important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple file creation tool and front-loads the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no annotations, and no output schema, the description provides the basic purpose but lacks important context about behavioral traits, usage scenarios, and what happens after file creation. It's minimally adequate but leaves significant gaps in understanding how to effectively use this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, all three parameters are documented in the schema itself. The description doesn't add any additional meaning beyond what the schema provides about dirUrl, name, or edit parameters. The baseline score of 3 reflects adequate but not enhanced parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new empty migration file') and target resource ('in the migration directory'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings like migrate-apply or migrate-diff, which likely perform different migration-related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools (migrate-apply, migrate-diff, migrate-lint, etc.), there's no indication of when creating a new migration file is appropriate versus applying existing migrations or validating them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate-statusC
Report current migration status of a database
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Database URL (required) | |
| dirUrl | No | URL to migration directory | |
| format | No | Output format: text or json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool reports status, implying a read-only operation, but does not cover critical aspects like authentication needs, rate limits, error handling, or what the report includes (e.g., migration progress, errors). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly and understand the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a migration status tool with no annotations and no output schema, the description is insufficient. It does not explain what the status report contains, how to interpret results, or any behavioral nuances, leaving the agent with incomplete context for effective use in a migration workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters (url, dirUrl, format) with descriptions. The description adds no additional meaning beyond implying status reporting, which is covered by the tool's purpose. Thus, it meets the baseline for high schema coverage without compensating with extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Report') and resource ('current migration status of a database'), making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'migrate-apply' or 'migrate-validate', which likely perform different migration-related actions, so it lacks sibling distinction for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or exclusions, such as whether it should be used before or after other migration steps, leaving the agent with no usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate-validateB
Validate migration directory integrity and consistency
| Name | Required | Description | Default |
|---|---|---|---|
| dirUrl | Yes | URL to migration directory (required) | |
| devUrl | No | URL for dev database for validation | |
| format | No | Output format: text or json |
TDQS
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 mentions 'validate' but doesn't disclose behavioral traits such as whether it's read-only, if it modifies data, error handling, or output details. The description is minimal and fails to provide necessary context for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that is front-loaded with the core purpose. There is no wasted language, and every word contributes directly to understanding the tool's function, making it appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of migration validation (which could involve checks for consistency, integrity, and potential errors), the description is incomplete. With no annotations and no output schema, it lacks details on what the validation entails, what outputs to expect, or how to interpret results, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (dirUrl, devUrl, format) with clear descriptions. The description adds no additional meaning beyond the schema, such as explaining validation logic or parameter interactions, but meets the baseline since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('validate') and resource ('migration directory'), specifying what it validates ('integrity and consistency'). It distinguishes from siblings like 'migrate-apply' or 'migrate-diff' by focusing on validation rather than application or comparison, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for validating migration directories, suggesting it should be used before applying migrations or after creating them. However, it lacks explicit guidance on when to use this tool versus alternatives like 'migrate-lint' or 'migrate-status', and no exclusions or prerequisites are mentioned.
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.
6 tool updates
v1.0.0- First observed
migrate-apply - First observed
migrate-diff - First observed
migrate-lint - First observed
migrate-new - First observed
migrate-status - First observed
migrate-validate
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose within the migration workflow: apply, diff, lint, new, status, and validate. The descriptions specify unique actions (e.g., applying migrations vs. generating diffs vs. detecting issues), leaving no ambiguity about which tool to use for a given task.
All tools follow a consistent 'migrate-verb' pattern with hyphenated naming (e.g., migrate-apply, migrate-diff). This predictable structure makes it easy to understand each tool's function and ensures uniformity across the set.
With 6 tools, the server is well-scoped for database migration management. Each tool serves a specific, non-redundant role in the migration lifecycle, from creation to validation and application, making the count appropriate and efficient for the domain.
The toolset provides complete coverage of the migration domain, including creation (migrate-new), analysis (migrate-diff, migrate-lint, migrate-validate), status tracking (migrate-status), and execution (migrate-apply). There are no obvious gaps, enabling agents to handle the full migration workflow without dead ends.
Maintenance
Related MCP Connectors
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
An MCP server that integrates with Discord to provide AI-powered features.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI assistants to manage infrastructure, applications, databases, and services through the Coolify PaaS platform.6 npm4MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that allows AI assistants to query databases using natural language by leveraging Vanna AI. It supports secure SSH tunneling, model training on database schemas, and persistent storage of SQL patterns via ChromaDB.2-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI assistants to create and manage persistent SQLite databases through natural language without requiring SQL knowledge. It allows users to propose schemas, store records, and perform complex queries across multiple databases for structured data tracking.MIT
- AlicenseNot gradedqualityCmaintenanceAn extensible MCP server for database operations that supports PostgreSQL for managing schemas, tables, data, and user permissions. It features automatic migration recording for DDL changes and integrates with various AI-powered editors like Cursor, Zed, and Claude Code.9 npm2MIT