AWS Lambda-based MCP server providing CloudFormation template management, documentation search, starter code repositories, and authentication/authorization for Atlantis infrastructure automation
Atlantis MCP provides 13 well-named, read-only tools with comprehensive descriptions (avg 250+ chars) and detailed parameter documentation. All tools follow verb_noun naming (list_, get_, search_, validate_, check_). Schemas are present and typed for all tools. However, output schemas are not explicitly documented in the source code provided, only input schemas are visible. Error handling descriptions are minimal; tools lack recovery guidance and actionable error messages. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. Parameter descriptions are strong but some lack explicit format/constraint details (e.g., regex patterns for naming validation). Overall solid foundation with room for output schema documentation and error recovery patterns.
Check whether newer versions are available for a CloudFormation template and return update information including version, release date, changelog, and migration guide links for breaking changes. Requires `templateName`, `category`, and `currentVersion` parameters. Returns an error if any required parameter is missing or if the template is not found. Pass the `currentVersion` as a Human_Readable_Version string (e.g., `v1.2.3/2024-01-15`), Short_Version (e.g., `v1.2.3`), or S3_VersionId to compare against the latest available version.
Retrieve the complete source file behind a `search_documentation` result, rather than the excerpt. Supply exactly one lookup key: the `filePath` (contentPath) from a search result, or a section `hash` of 16 hexadecimal characters. A section-level key resolves to the file that contains it, so the response is the whole source file in document order. The response carries `filePath`, `githubUrl`, `repository`, `repositoryType`, `namespace`, and `content`. Retrieval is storage-only and the server never fetches from GitHub: when the requested document is not in storage, an error is returned that identifies the requested `filePath`/`hash` and includes the file-level `githubUrl` (or `null` when it cannot be derived) so you can fetch the file directly. Requires no elevated tier and works regardless of whether AI-assisted search is enabled. When the document is too large for a single response, a summary with `contentTruncated`, `totalChunks`, and a `retrievalHint` is returned instead; use `get_document_chunk` to read it incrementally.
Retrieve a specific chunk of a large document that was too large to return in a single `get_document` response. Takes the same lookup key as `get_document` (exactly one of `filePath` or `hash`) plus a zero-based `chunkIndex`. Returns `chunkIndex`, `totalChunks`, `filePath`, and the chunk `content`. Returns an error if `chunkIndex` is out of range or if the document is not in storage. Use this after receiving a truncated `get_document` response, requesting `chunkIndex` 0 through `totalChunks - 1` and concatenating the chunks.
Output schemas not documented in source code. Only input schemas are visible; return types and response field structures are not explicitly defined, forcing LLMs to infer output structure.
No tool annotations present. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata, preventing clients from understanding tool safety properties and retry semantics.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Retrieve detailed information about a specific starter code repository, including languages, frameworks, features, prerequisites, and S3 location. Requires the `starterName` parameter. Returns an error if `starterName` is missing or if no starter matches the given name. Use this after `list_starters` to get full details on a specific starter before initializing a project.
Retrieve a specific CloudFormation template with its full content, parameters, outputs, version information, and S3 location. Requires both `templateName` and `category` parameters. Returns an error if either required parameter is missing or if the template is not found in the specified category. Optionally pass `version` or `versionId` to fetch a specific version rather than the latest. When the response payload exceeds the size threshold, a Template_Summary is returned instead of the full content with `contentTruncated: true`, `totalChunks` indicating how many chunks the content was split into, and a `retrievalHint` explaining how to use `get_template_chunk` to retrieve the full content incrementally.
Retrieve a specific chunk of a large CloudFormation template that was too large to return in a single `get_template` response. Requires `templateName`, `category`, and `chunkIndex` (zero-based integer) parameters. Returns an error if any required parameter is missing, if the template is not found, or if `chunkIndex` is out of range. The response includes `chunkIndex`, `totalChunks`, `templateName`, `category`, and the chunk `content` as a text string. Optionally pass `version`, `versionId`, `s3Buckets`, or `namespace` to target a specific template version. Use this tool after receiving a truncated `get_template` response to retrieve the full content incrementally.
List all available template categories with their descriptions and template counts. Takes no parameters. Returns an empty array if no categories are configured. The modules category includes a `subcategories` array listing discovered subcategory names (e.g., vpc, iam, logging). Use this to discover which categories and subcategories are available before calling `list_templates` or `get_template`.
List all available application starter code repositories with metadata including name, description, languages, frameworks, features, and S3 location. Starters provide CloudFormation templates, build specs, and Lambda function code for bootstrapping new projects. Returns an empty array if no starters match the specified filters. Optionally filter by `s3Buckets` or `namespace`.
List all available versions of a specific CloudFormation template, returning version history with Human_Readable_Version, S3_VersionId, last modified date, and size. Requires both `templateName` and `category` parameters. Returns an error if either required parameter is missing or if the template does not exist. Use this to compare versions before upgrading or to find a specific historical version.
List all CloudFormation templates available for deployment via Atlantis scripts, filtered by category, version, or S3 bucket. Categories include: **storage**, **network**, **pipeline**, **service-role**, and **modules**. The **modules** category organizes templates into subcategories (subdirectories) such as vpc, iam, or logging. Returns template metadata such as name, category, description, namespace, and S3 location. Returns an empty array if no templates match the specified filters. Use the `category` parameter to narrow results when you know the resource type you need. To get version information for a specific template, use `list_template_versions`. Use `list_categories` to discover available subcategories for modules.
Retrieve the complete catalog of MCP tools supported by this server, including each tool's name, description, and input schema. Use this as the first call in a session to discover available capabilities. Returns an empty array if no tools are configured on the server.
Search Atlantis documentation, tutorials, and code patterns by keyword. Returns results with title, excerpt, file path, GitHub URL, and result type. Requires the `query` parameter. Returns an empty array if no documents match the query. All filters are optional: `type` (`documentation`, `template-pattern`, `code-example`), `subType` (`guide`, `function`, `parameter`), and `ghusers` to narrow results to specific GitHub organizations. When results are broad, refine with `type` and/or `subType` rather than re-querying with more keywords. The response includes an optional `availableFilters` block listing the distinct `type` and `subType` values present in the matched set with their counts; use those values directly as filters on a follow-up query. When `totalResults` is large, `suggestions` also carries a narrowing hint.
Validate a resource name against Atlantis naming conventions and return parsed components with any validation errors. Supports S3 bucket patterns (regional with `-an` suffix, global with AccountId-Region, and simple global), as well as application, DynamoDB, Lambda, CloudFormation, and service-role resource types. The `service-role` type validates names against the pattern `PREFIX-ProjectId-ResourceSuffix` where PREFIX must be ALL CAPS (uppercase letters and digits only) and no StageId is present. Unrecognized resource types are validated using the standard application resource pattern (`Prefix-ProjectId-StageId-ResourceSuffix`). Requires the `resourceName` parameter. Returns a validation error if the name does not conform to any recognized pattern. When resource names contain hyphenated components, supply known values such as `prefix`, `projectId`, or `stageId` for accurate parsing. Set `isShared` to true for shared resources that omit StageId, and `hasOrgPrefix` to true when the S3 bucket includes an organization prefix segment.
Error handling lacks recovery guidance. Tool descriptions mention error conditions (e.g., 'Returns an error if...') but do not provide actionable next steps or error classification (retryable vs. user-fixable vs. fatal).
validate_naming parameter descriptions lack explicit format constraints. The description mentions patterns (e.g., 'PREFIX-ProjectId-ResourceSuffix', 'ALL CAPS') but does not provide regex patterns or formal constraint definitions that LLMs can parse.
Pagination guidance incomplete. Tools like list_templates and search_documentation mention filtering but do not explicitly document page/offset/limit parameters or total count returns, risking context window exhaustion on large result sets.