infrawise
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port to run the MCP HTTP server on (default: 3000) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_infra_overviewA | Returns a compact infrastructure snapshot: service counts, all databases, queues, topics, secrets, lambdas, and high-severity findings. Call this first at the start of any database or infrastructure task to understand what services are in scope. Prefer this over get_graph_summary for quick orientation; use get_graph_summary only when you need every node, edge, and finding in full. Also returns a |
| get_graph_summaryA | Returns extracted nodes, recognized code edges, all findings, and unresolvedReferences. Read dataHealth.codeCoverage: wrappers, dynamic names, and unsupported expressions may be missed, so missing edges never prove no runtime access. Use when tracing relationships across services or inspecting the full finding set; prefer get_infra_overview for quick orientation. |
| analyze_functionA | Analyzes a single named function or Lambda handler for infrastructure issues: which tables it queries, how it queries them (scan vs query), queue publishing, secret access, and the correct event shape for each trigger (SQS, DynamoDB Streams, Kinesis, EventBridge). Call this before writing or reviewing a Lambda handler to get the exact trigger event shape and all findings scoped to this function. Per-file detail (file, accesses, missingPermissions) is returned in |
| suggest_gsiA | Generates a ready-to-use DynamoDB GSI definition — index name, partition key, projection type, billing mode — for a given table and attribute. Call this when a query pattern needs an index that does not exist yet, or when the analyzer flags a missing GSI finding. Checks the table's existing indexes first: when one is already keyed on that attribute it returns |
| postgres_index_suggestionsA | Generates the exact CREATE INDEX CONCURRENTLY SQL for a PostgreSQL table column, including a partial index variant and a post-creation ANALYZE reminder. Call this when the analyzer flags a missing index finding or when writing a query that filters on a column without an existing index. Does not verify whether the index already exists. |
| suggest_mongo_indexA | Generates the exact db.collection.createIndex() command for a MongoDB field, plus compound and text index variants and an explain query to verify. Call this when a collection scan is flagged by the analyzer or when writing a query that filters on an unindexed field. Does not check whether the index already exists. |
| mysql_index_suggestionsA | Generates the exact ALTER TABLE ADD INDEX SQL for a MySQL table column, including a composite variant and EXPLAIN guidance to verify the index is used. Call this when the analyzer flags a missing MySQL index or full table scan finding. Does not verify whether the index already exists. |
| get_queue_detailsA | Returns all SQS queues with DLQ presence, encryption status, FIFO type (isFifo), visibility timeout, approximate message count, and retention days. When isFifo is true, all SendMessage calls must include a MessageGroupId. Call this when reviewing messaging architecture, investigating a message backlog, checking DLQ coverage, or verifying visibility timeout is set correctly relative to Lambda timeout (should be 6× the Lambda timeout). Use get_infra_overview for a quick queue count only. When runtime signals are enabled, oldestMessageAgeSec reports the age of the oldest message from CloudWatch. |
| get_topic_detailsA | Returns all SNS topics with subscription count, encryption status, and filter policies. Filter policies list the message attributes each subscription requires — publishers must include these attributes or messages are silently dropped. Call this before writing any SNS publish code or when reviewing event fan-out patterns. |
| get_secrets_overviewA | Returns all Secrets Manager secrets with rotation status, rotation interval, and referencedKeys — key names (e.g. "password", "apiKey") inferred from application code that parses the secret, never the values. Call this when checking which secrets exist, confirming rotation is enabled before a security review, or before writing code that reads a secret so you use the correct key name instead of guessing. |
| get_parameter_overviewA | Returns all SSM Parameter Store parameters with type (String, SecureString, StringList) and tier (Standard, Advanced). Parameter values are never returned. Call this when checking which config parameters exist for a service or verifying parameter types. |
| get_lambda_overviewA | Returns all Lambda functions with runtime, memory (MB), timeout (sec), environment variable key names (values never returned), and event source triggers with the correct handler event shape for each. Call this when auditing Lambda configuration for default memory (128 MB) or high timeouts, or when you need the trigger event shape for a specific function without running analyze_function. When runtime signals are enabled, recentThrottles and recentErrors report CloudWatch counts for the analysis window. A costSignal note appears when memory is 3008 MB+ and there is no throttling evidence to justify it — no billing API involved, this is a config-level heuristic. A function carrying |
| get_eventbridge_detailsA | Returns all EventBridge rules with name, ENABLED/DISABLED state, schedule expression (rate/cron rules), event pattern (event-driven rules), and target Lambda function names. Call this when checking what schedule or event triggers a Lambda, or when reviewing rule coverage across the account. |
| get_s3_overviewA | Returns all S3 buckets with versioning status, encryption, public access configuration, and security findings. Call this when checking which S3 buckets exist, reviewing bucket security posture, or before writing S3 upload/delete handlers to confirm the bucket name. Do NOT call when you only need a quick infrastructure count — use get_infra_overview for that. Object contents are never included. |
| get_api_routesA | Returns all API Gateway APIs (REST, HTTP, WebSocket) with their routes, HTTP methods, paths, and the Lambda function each route invokes. Call this before writing any API handler to understand which Lambda handles a route, or when reviewing API surface area and Lambda integration coverage. |
| get_log_errorsA | Returns CloudWatch log group names and retention metadata without reading log events. The legacy get_log_errors name is retained for compatibility; errorCount is null, topErrorPatterns is empty, and errorsObserved is false because no message bodies are requested. Use logGroup to filter names. Call when checking retention policies; do NOT use to diagnose runtime errors or infer that no errors occurred. |
| get_table_schemaA | Returns schemas for named tables or collections: column types/nullability, keys, foreign keys, indexes, DynamoDB keys/billing mode, and MongoDB estimated counts. Relational indexes include ordered columns, method, partial and valid flags; these describe possible access paths, not observed query plans. Short names match qualified names case-insensitively. Call after get_infra_overview before writing queries; request only needed tables. Do NOT use for inventory; use get_infra_overview. Row data is never included. Read source health before treating found:false as absence. DynamoDB provisioned tables may include an advisory costSignal. |
| get_cache_overviewA | Returns all ElastiCache clusters with engine, version, node type, node count, in-transit and at-rest encryption status, replication group, and automatic failover state. Call this before writing cache client code (TLS is required when transit encryption is on — rediss:// for Redis) or when reviewing cache availability and security posture. Cached data is never read or included. A costSignal note appears on clusters with more than 3 nodes. |
| get_cloudfront_overviewA | Returns all CloudFront distributions with, per distribution: id, comment, domain name, alias domains, enabled state, origins (type s3 or custom, domain name, and the resolved API Gateway name when the origin is an execute-api endpoint), and every cache behavior with its path pattern, target origin, cache policy name, viewer protocol policy, and allowed methods. Behaviors are listed in CloudFront match order — ordered behaviors first, the default behavior last. Call this to answer which distribution and behavior serves a given path and which origin it hits, before changing a path-based routing rule, or when reviewing edge caching and HTTPS enforcement across a multi-API front door. |
| get_stream_detailsA | Returns all Kinesis data streams (status, shard count, retention hours, encryption, capacity mode) and Amazon MSK clusters (state, cluster type, Kafka version, broker count). Call this when writing Kinesis producer or consumer code, checking whether a stream is PROVISIONED or ON_DEMAND before writing PutRecord calls, or reviewing streaming architecture. For Kafka topic-level producer/consumer mappings extracted from application code, use get_topic_details instead. |
| get_cognito_overviewA | Returns all Cognito user pools with MFA configuration and every app client config: allowed auth flows, OAuth flows/scopes, callback URLs, token validity, and whether the client has a secret (SDK auth calls must send SECRET_HASH when true). Client secret values are never returned. Call this before writing any Cognito sign-in, sign-up, or token-refresh code to use the correct auth flow and client settings. Do NOT call to look up users or tokens — infrawise never reads user data. |
| get_stack_outputsA | Returns all stack outputs and cross-stack exports parsed from local IaC files: Terraform output blocks and CloudFormation/CDK Outputs sections, with name, description, export name, and the raw value expression. Call this when wiring cross-stack references (Fn::ImportValue, terraform_remote_state) or when you need the exported name of a resource defined in another stack. Do NOT call for live resource attributes — outputs come from local IaC files, not the deployed stack. CDK outputs carry |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Most tools map to a single distinct resource (queues, topics, secrets, S3, CloudFront, Cognito, API routes) with explicit 'use X instead of Y' guidance, and the four index-suggestion tools are cleanly separated by engine. A few boundaries need reading the description to resolve: get_infra_overview vs get_graph_summary vs get_table_schema, get_lambda_overview vs analyze_function, and get_topic_details which also claims Kafka topic mappings that overlap with get_stream_details. get_log_errors is a genuinely confusing name given it explicitly does not return errors.
The bulk of tools follow a clean get_<resource>_overview/details pattern, but the index-suggestion family breaks it three ways: postgres_index_suggestions and mysql_index_suggestions put the verb last while suggest_mongo_index and suggest_gsi put it first. analyze_function and get_log_errors (a legacy name that contradicts its behavior) are further deviations. Still readable, but not a predictable pattern an agent can pattern-match on.
22 tools is on the heavy side, but the server covers an entire AWS account surface and each tool maps to a distinct service or engine, so nearly all earn their place. The dashboard-style overview tools (infra_overview, graph_summary, lambda_overview) plus 12 per-service overviews is a defensible decomposition rather than sprawl.
Coverage across compute, messaging, storage, caching, edge, auth, config, and data layers is strong, and index/GSI advice plus schema lookups close the loop from finding to fix. Gaps exist for common adjacent services (IAM roles/permissions, VPC/networking, Step Functions, ECS) and the index tools deliberately do not check for existing indexes, forcing a get_table_schema detour. The surface is read/advise-only by design, so the lack of mutation tools is not a completeness fault.