Skip to main content
Glama
AWS Resource MCP

AWS Resource MCP

AWS Resource MCP

Lokaler MCP-Server, entwickelt in Python, zum Abfragen realer Ressourcen eines AWS-Kontos im Nur-Lese-Modus.

Status

Phase 9 ist implementiert. Der Server kombiniert einheitliches Inventar, konservative Aktivitätsanalyse, explizite Diagnose, Kostenanalyse und IAM-Richtlinien mit minimalen Rechten, die aus dem tatsächlichen Operationsprotokoll generiert werden.

Related MCP server: aws-mcp-server

Vorgesehener Umfang

  • Lokaler MCP-Transport über stdio.

  • Hauptregion: eu-west-1.

  • AWS-Abfragen ausschließlich lesend und mit minimalen Rechten.

  • Verfügbare Tools: health_check(), listar_recursos_aws(), analizar_actividad_recursos(), diagnosticar_cobertura_aws(), analizar_riesgo_costes(), revisar_free_tier() und consultar_costes_aws().

  • Cost Explorer ist blockiert, bis eine flüchtige Zustimmung für eine exakte Anfrage vorliegt.

  • Kein Deployment in AWS und keine CD.

Zuverlässigkeit

Phase 10 umfasst lokale Integrations-, Vertrags-, Sicherheits-, Leistungs- und MCP-Protokolltests. Das Inventar wendet außerdem AWS_MCP_MAX_REQUESTS_PER_TOOL (standardmäßig 250) vor jedem SDK-Aufruf an; wenn das Budget erschöpft ist, behält es das Ergebnis und gibt partial_request_budget_exhausted zurück.

Die kontinuierliche Integration führt bei jedem Pull Request Formatierung, Lint, Kompilierung, deterministische IAM-Validierung und lokale Tests aus. Sie konfiguriert keine AWS-Anmeldedaten und führt keine AWS-Operationen aus.

Using with Codex

Codex is the primary client. Use the package entry point uv run aws-resource-mcp over stdio, configure any AWS profile outside the repository, and begin with natural-language questions such as “What resources do I have in eu-west-1?”. When a response is partial_pending_consent, Codex must explain the exact operation and wait for explicit approval; it never creates persistent consent. See Codex integration and the demo.

Release v0.1.0

Die erste Version ist bereit zur Überprüfung: Sie enthält den Nur-Lese-Schutz, flüchtige Zustimmung, Codex-Integration und CI. Siehe die Release-Checkliste, um sie lokal zu verifizieren und die sichere Demo auszuführen.

Entwicklung

Das Projekt wird mit uv und Python 3.12 oder neuer verwaltet.

Abhängigkeiten installieren

uv sync

Server ausführen

uv run aws-resource-mcp

Zur Diagnose kann es auch als Modul ausgeführt werden:

uv run python -m aws_resource_mcp.server

Der Server verwendet stdio: Er erwartet, dass ein MCP-Client Nachrichten über die Standardeingabe und -ausgabe austauscht. Er kann mit MCP Inspector über die im SDK enthaltenen Werkzeuge geöffnet werden:

uv run mcp dev src/aws_resource_mcp/server.py

Tests ausführen

uv run pytest

IAM-Richtlinien generieren und validieren

uv run aws-resource-mcp-generate-iam
uv run aws-resource-mcp-generate-iam --check

Die Generierung ist lokal, deterministisch und verwendet keine Anmeldedaten. Das Projekt erstellt oder ändert keine Rollen oder Richtlinien in AWS. Die Richtlinien trennen kostenlose Operationen, Lesezugriffe, die Zustimmung erfordern, und das maximale kombinierte Kontingent; die IAM-Berechtigung ersetzt niemals die Zustimmung der Anwendung.

AWS-Inventar ausführen

Prüfe vor der eigentlichen Diagnose, welche Identität die lokale Konfiguration auflöst:

aws sts get-caller-identity

Führe danach das Inventar in der Standardregion eu-west-1 aus:

uv run python -m aws_resource_mcp.aws.inventory

Region und gemeinsames Profil sind optional:

uv run python -m aws_resource_mcp.aws.inventory --region eu-central-1 --profile example

Im Projekt werden keine Schlüssel gespeichert. Boto3 verwendet seine Standardkette zur Auflösung von Anmeldedaten; wenn AWS_PROFILE oder --profile angegeben wird, wird lediglich ein Profil ausgewählt, das bereits außerhalb des Repositorys existieren muss.

MCP-Tools

health_check

health_check(check_aws=True) trennt die lokale Gesundheit von der Erreichbarkeit von AWS. Ohne Argumente führt es höchstens einen geschützten STS-Aufruf aus; mit check_aws=false verwendet es kein Netzwerk. Es gibt Version, Transport, registrierte Tools und Adapter, Region, Kostenrichtlinie und null abrechenbare Operationen zurück. Seine Status sind:

  • ok: Server und Konfiguration gültig; STS hat geantwortet, als es angefordert wurde.

  • degraded: Der Server funktioniert, aber es fehlen Anmeldedaten oder STS ist nicht erreichbar.

  • error: Die sichere Konfiguration oder die internen Protokolle können nicht initialisiert werden.

Die Identität wird anonymisiert: Es wird nur der allgemeine Principal-Typ und, falls vorhanden, ein maskiertes Konto beibehalten. Es führt kein Inventar, keinen Resource Explorer, keine Adapter, kein CloudTrail und kein CloudWatch aus.

listar_recursos_aws

Fragt das verfügbare AWS-Inventar für die lokalen Anmeldedaten ab, ohne Ressourcen zu verändern. Parameter:

  • region: Begrenzt die Suche auf eine Region; ohne Wert wird die gesamte verfügbare Abdeckung verwendet.

  • services: Filtert nach Diensten wie lambda, s3, ec2 oder rds.

  • include_account_id: Ermöglicht das Weglassen der Kontonummer aus der Antwort, um deren Anonymisierung zu erleichtern.

  • resource_types: Filtert nach dynamischen Typen wie ec2:instance.

  • query: Sucht nach Text oder Name.

  • all_regions: Verwendet die aktivierten Regionen, wenn region nicht angegeben ist.

  • include_details: Enthält dienstspezifische Metadaten innerhalb von details.

  • include_cost_indicators: Enthält potenzielle Kostensignale, ohne tatsächliche Ausgaben zu behaupten.

  • confirm_potentially_billable_operations: Geerbter Parameter, der keine Berechtigungen mehr gewährt.

  • include_activity_summary: Fügt eine kurze Zusammenfassung hinzu, die nur bereits abgerufene Felder verwendet; fragt weder CloudTrail noch CloudWatch ab.

  • consent_request_id, consent_action und approved_services: Setzen eine flüchtige und begrenzte Anfrage fort oder brechen sie ab.

  • timeout_seconds: Konfigurierbares Budget zwischen 1 und 120 Sekunden.

Beispiel für Argumente, die von einem MCP-Client gesendet werden:

{
  "region": "eu-west-1",
  "services": ["lambda", "s3"],
  "include_account_id": false,
  "all_regions": true
}

Der erste Aufruf gibt die Ressourcen zurück, die über zulässige Operationen abgerufen wurden. Wenn zum Abschließen von S3, SQS oder SNS abrechenbare Operationen erforderlich sind, gibt er partial_pending_consent, pending_operations und eine Anfrage zurück, die in fünf Minuten abläuft. Er führt diese Operationen erst bei einem zweiten expliziten Aufruf aus:

{
  "consent_request_id": "<id devuelto por la primera llamada>",
  "consent_action": "approve",
  "approved_services": ["s3"]
}

Die Genehmigung ist einmalig, an die ursprüngliche Identität und den ursprünglichen Umfang gebunden und begrenzt Operationen, Regionen und Anfragen. Entdeckung und Anreicherung werden getrennt autorisiert; eine zusätzliche Seite erfordert eine neue Anfrage. consent_action: "cancel" führt kein AWS-Inventar aus.

Die Status unterscheiden complete_for_requested_scope, partial_pending_consent, partial_timeout, partial_permission_denied, partial_unavailable, consent_cancelled und error. Eine leere Liste bedeutet nur, dass der Dienst zum Zeitpunkt der Abfrage leer war.

resources, all_resources und resources_by_service stellen dasselbe deduplizierte Inventar dar. Jede Ressource enthält id, arn, name, service, resource_type, region, account_id, state, created_at, sources, details, cost_indicators und activity. Das Tool berechnet keine Kosten, fragt kein Free Tier ab und führt keine Schreiboperationen aus.

analizar_actividad_recursos

Analysiert den letzten bekannten Hinweis über dasselbe Protokoll und Modell für alle Ressourcen. Es akzeptiert Filter nach services, regions und resource_ids sowie inactive_days, lookback_days, include_administrative_events und konfigurierbare Grenzen. Der CloudTrail-Verlauf ist auf 90 Tage begrenzt und wird pro Region abgefragt, nicht einmal pro Ressource.

Die Antwort trennt last_functional_usage_at, last_administrative_activity_at, last_configuration_change_at und last_state_change_at. best_known_activity_at gibt immer auch den Signaltyp an. Ein aktiver Status, eine Describe*-Abfrage oder ein Änderungsdatum werden nicht als funktionale Nutzung dargestellt.

Die Status pro Ressource sind active, inactive_candidate, unknown, not_supported oder error. Ein inaktiver Kandidat ist lediglich ein Element zur Überprüfung: Er erfordert ausreichendes Alter, eine relevante abgefragte Quelle und das Fehlen widersprüchlicher aktueller Belege. Fehlende Berechtigungen, unzureichende Quellen oder mehrdeutige Beziehungen ergeben unknown, keine falsche Gewissheit der Inaktivität.

CloudWatch könnte funktionale Metriken liefern, aber GetMetricData, GetMetricStatistics und ListMetrics sind als potenziell abrechenbar registriert und blockiert. include_paid_sources=true fordert nur die strukturierte Erklärung an; es stellt keine Zustimmung dar und führt diese Operationen in dieser Phase niemals aus.

diagnosticar_cobertura_aws

Erklärt, was der MCP tatsächlich abfragen kann, ohne Ressourcen aufzulisten. Es akzeptiert Filter services und regions und ermöglicht das Weglassen der Abschnitte zu Berechtigungen, Aktivität oder Kostenrichtlinie.

Es prüft STS, aktivierte Regionen, vorhandene Resource-Explorer-Indizes, Protokollierung und Fähigkeiten der Adapter, kostenlose Aktivitätsquellen und blockierte Operationen. Die Prüfungen sind auf fünf Regionen pro Ausführung, eine CloudTrail-Stichprobe und keinen CloudWatch-Aufruf begrenzt.

Die Abdeckungsstatus unterscheiden available, partial, unavailable, not_configured, permission_denied, blocked_by_cost_policy, not_supported, not_checked und error. Eine als durch die Richtlinie zulässig deklarierte Operation wird nicht als nachgewiesene IAM-Berechtigung dargestellt: Die Diagnose führt keine Dienstinventare aus, um dies zu testen.

Beispiel:

{
  "services": ["ec2", "rds"],
  "regions": ["eu-west-1"],
  "include_activity_sources": true
}

Die Einschränkungen geben die Auswirkung an, ob der MCP fortfahren kann, ob Berechtigungen fehlen, ob deren Behebung Schreibzugriff erfordern würde und ob Kosten entstehen könnten. Die Diagnose führt die vorgeschlagene Aktion niemals aus.

analizar_riesgo_costes

Priorisiert Ressourcen anhand der Inventarindikatoren und optional der gemeinsamen Aktivitätspipeline. Es gibt none_detected, low, medium, high, critical oder unknown, eine erklärbare Bewertung und nicht ausführbare Empfehlungen zurück. Ein Signal bestätigt keine Ausgaben und none_detected bedeutet keine Kosten von null.

include_free_tier=true fügt offizielle Free-Tier-Daten hinzu. include_actual_cost=true bereitet nur eine Cost-Explorer-Zustimmung vor: Es führt die Abfrage nicht aus.

revisar_free_tier

Fragt GetFreeTierUsage und GetAccountPlanState ab, Operationen, die AWS als kostenlos dokumentiert. Es trennt monatliche Grenzen, Prognose, Plan und Guthaben. Es kann partielle oder unbekannte Informationen zurückgeben, aufgrund von Berechtigungen, Aktualisierungsverzögerung, Erschöpfung eines Angebots oder Unterschieden bei der Berechtigung. Es behauptet nicht, dass eine bestimmte Ressource kostenlos ist.

consultar_costes_aws

Bereitet eine aggregierte GetCostAndUsage-Abfrage für einen genauen Zeitraum und genaue Filter vor. Der erste Aufruf führt null AWS-Operationen aus und gibt eine flüchtige Anfrage mit dem veröffentlichten Preis von 0,01 USD pro Anfrage auf der Hauptansicht zurück. Ein zweiter Aufruf mit consent_action="approve" führt höchstens eine Seite aus; jede zusätzliche Seite erfordert eine neue Zustimmung. cancel ruft AWS nicht auf.

Die Granularität kann MONTHLY oder DAILY sein; end_date ist exklusiv. Forecast, Details pro Ressource, verknüpfte Konten und benutzerdefinierte Billing-Ansichten sind in dieser Phase nicht implementiert.

AWS-Inventar

Boto3 ist das offizielle AWS-SDK für Python. Die Inventarebene verwendet:

  • STS GetCallerIdentity zur Identifizierung des Kontos und der effektiven Identität.

  • EC2 DescribeRegions, um ausschließlich aktivierte Regionen zu entdecken.

  • Resource Explorer, um Ressourcen und unterstützte Typen dynamisch über vorhandene Indizes und Ansichten zu entdecken.

  • Ein gemeinsames Adapterregister für Lambda, S3, EC2/EBS/VPC, RDS/Aurora, DynamoDB, ECS/Fargate, API Gateway, CloudFormation, SQS, SNS, IAM, CloudFront und Route 53.

  • CloudTrail LookupEvents für den kostenlosen regionalen Verlauf der Verwaltungsereignisse der letzten 90 Tage.

Lambda und S3 waren die ersten implementierten Dienste, behalten aber keine besonderen Architekturpfade mehr. Alle Adapter deklarieren Metadaten, Boto3-Operationen, Umfang, Typen, Details und Indikatoren über denselben Vertrag. Die besonderen Details leben ausschließlich innerhalb von details.

Die Ergebnisse werden nach ARN oder, falls dieser fehlt, nach Typ, Region und Kennung/Name dedupliziert. Ein aggregierender Index wird bevorzugt; bei lokalen Indizes werden Ergebnisse kombiniert und die Abdeckung ist teilweise. Wenn Resource Explorer nicht verfügbar ist, werden alle ausgewählten Adapter ausgeführt, die Entdeckung unterstützen.

Das Fehlen von Anmeldeinformationen oder die Unmöglichkeit, das Konto zu identifizieren, ist ein globaler Fehler für das Inventar, aber nur ein degraded-Status für die lokale Gesundheit. Die Diagnose behält ihre lokalen Prüfungen bei und überspringt sicher die von AWS abhängigen.

Alle Boto3-Aufrufe durchlaufen zuerst ein zentrales Register. Nicht registrierte, Schreib- oder unbekannte Kostenoperationen werden blockiert. Der Modus free-only bleibt während des gesamten Prozesses aktiv. S3, SQS und SNS können Anfragen abrechnen: Ihre Aufzählungen werden als ausstehend dargestellt und nur ein exaktes kurzlebiges Grant ermöglicht ihre Ausführung. Der Guard zählt getrennt eindeutige Operationen und tatsächliche Anfragen.

Beispiele für einen MCP-Client: „Welche Ressourcen gibt es in meinem Konto?“, „Liste die EC2-Instanzen in eu-west-1 auf“, „Suche nach Ressourcen namens web“ oder „Zeig mir die bereitgestellten RDS-Typen“. Resource Explorer bietet eine breite, aber nicht universelle Abdeckung.

Dokumentation

Available Tools

7 tools
analizar_actividad_recursosA

Analyze last known AWS resource activity with conservative semantics.

Free service API fields and CloudTrail Event History management events are
combined through the common adapter pipeline. Functional usage,
administrative activity, configuration changes, and state signals remain
separate. Event History is regional, limited to 90 days, and does not
normally include data events such as S3 GetObject, so unknown results are
expected. CloudWatch could improve functional-usage coverage but is always
blocked in this phase: setting ``include_paid_sources`` only requests a
structured explanation and never grants consent or executes a metric call.
The operation is read-only, bounded, and may return partial results.
NameRequiredDescriptionDefault
regionsNo
servicesNo
max_regionsNo
resource_idsNo
inactive_daysNo
lookback_daysNo
max_resourcesNo
timeout_secondsNo
include_paid_sourcesNo
max_events_per_resourceNo
include_administrative_eventsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior5/5

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

With no annotations provided, the description bears full responsibility for transparency. It does an excellent job: it details the data sources (free API, CloudTrail Event History), the regional and temporal scope (90-day limit), expected unknowns (data events excluded), the non-execution of paid sources, and the bounded, read-only nature. This sets correct expectations for the agent.

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

Conciseness3/5

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

The description is 6 sentences long and front-loads the purpose. However, it includes technical jargon (e.g., 'common adapter pipeline') that could be simplified. While not excessively long, it is not as concise as it could be; some sentences could be merged or removed without losing essential information.

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?

Given the complexity (11 parameters, output schema exists), the description covers the core behavior, data sources, and limitations well. It mentions partial results and the non-execution of paid sources. Since an output schema exists, the description does not need to detail return values. However, it could briefly mention what the output contains (e.g., last activity timestamps per resource) to aid understanding, but this is not a major gap.

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

Parameters2/5

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

The input schema has 11 parameters with 0% description coverage, meaning the schema provides no textual help. The description only explicitly mentions one parameter (include_paid_sources) and explains its behavior. The other 10 parameters (regions, services, max_regions, resource_ids, inactive_days, lookback_days, max_resources, timeout_seconds, max_events_per_resource, include_administrative_events) are not described. This leaves the agent without guidance on their semantics, which is inadequate.

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 clearly states the tool's purpose: 'Analyze last known AWS resource activity with conservative semantics.' It identifies the resource (AWS resources) and action (analyze activity). However, it does not differentiate from sibling tools like listar_recursos_aws or diagnosticar_cobertura_aws, so it loses the highest score.

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?

The description implies when to use the tool (for analyzing resource activity with free data sources) and provides context about limitations (regional, 90-day, no data events). It explains that include_paid_sources does not grant consent, giving guidance on that parameter. However, it does not explicitly state when NOT to use this tool or suggest alternatives, so the guidance is implied rather than explicit.

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

analizar_riesgo_costesA

Prioritize potential AWS cost risk without treating it as actual spend.

The analysis uses the common inventory model and its cost indicators.
Optional activity is merged through the existing uniform activity tool.
Free Tier data uses the officially free API. ``include_actual_cost=True``
only prepares a separate Cost Explorer consent request; it does not grant
consent or execute a potentially billable operation. Recommendations are
informational and no AWS resource is changed.
NameRequiredDescriptionDefault
regionsNo
servicesNo
period_daysNo
resource_idsNo
max_resourcesNo
include_activityNo
include_free_tierNo
include_actual_costNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description fully explains critical behaviors: it does not change AWS resources, does not grant consent or execute billable operations, uses free API for free tier, and merges activity through existing tools. This provides sufficient transparency.

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?

The description is concise at 5 sentences, with the purpose front-loaded. Each sentence adds distinct value: purpose, model used, activity merging, free tier and include_actual_cost clarification, and non-destructive nature. No unnecessary repetition.

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?

With 8 parameters and 0% schema coverage, the description should compensate by explaining key parameters and output. Only include_actual_cost is addressed. The output schema exists but is not described. The complexity is medium-high, but the description provides insufficient detail for effective tool use.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only explains the include_actual_cost parameter. The other 7 parameters (regions, services, period_days, etc.) receive no explanation, leaving the agent to infer from names and types. This is insufficient given the low coverage.

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

Purpose5/5

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

The first sentence clearly states the tool's purpose: 'Prioritize potential AWS cost risk without treating it as actual spend.' It uses a specific verb (prioritize) and resource (cost risk), and distinguishes from sibling tools like consultar_costes_aws which deal with actual spend.

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

Usage Guidelines4/5

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

The description implicitly differentiates from siblings by emphasizing risk assessment rather than actual spend. It mentions when include_actual_cost=True is appropriate, but does not explicitly state when to use this tool versus alternatives.

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

consultar_costes_awsA

Prepare or execute one exact, potentially billable Cost Explorer query.

The first call performs no AWS operation. It returns an expiring,
single-use request that states the exact period, filters, operation,
maximum request count, and estimated API charge. Calling again with the
request id and ``consent_action="approve"`` executes at most one
GetCostAndUsage page. A continuation page always needs a new consent.
``cancel`` performs no AWS call. Approval never authorizes another
operation, period, filter, identity, forecast, or resource-level query.
NameRequiredDescriptionDefault
regionsNo
end_dateNo
servicesNo
max_pagesNo
start_dateNo
granularityNoMONTHLY
resource_idsNo
consent_actionNo
group_by_serviceNo
include_forecastNo
consent_request_idNo
include_resource_levelNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses that the first call is free, execution is billable, approval is single-use, continuation pages need new consent, and it never authorizes other operations. No contradictions.

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?

Description is efficient, explaining the two-step consent flow in three sentences. Could be more structured (e.g., bullet points) but remains clear and concise.

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?

Adequately explains the consent workflow, but leaves parameter details completely unaddressed. With 0% schema coverage and 12 parameters, more parameter context is needed for completeness. Output schema exists but does not help with parameter usage.

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

Parameters2/5

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

Schema coverage is 0% and description does not explain any of the 12 parameters (e.g., 'regions', 'start_date', 'consent_action'). It only references abstract concepts like 'period' and 'filters'. Falls short of compensating for missing schema descriptions.

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 clearly states the tool prepares or executes a single Cost Explorer query, distinguishing between a preview call and an execution call. However, it does not differentiate from sibling tools like 'diagnosticar_cobertura_aws' or 'listar_recursos_aws'.

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

Usage Guidelines4/5

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

Provides explicit workflow guidance: first call for preview, second call with 'consent_action=approve' to execute, and 'cancel' does nothing. Does not mention when to prefer this over alternatives or any prerequisites.

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

diagnosticar_cobertura_awsA

Explain which AWS coverage is reachable and why it may be partial.

This read-only diagnostic checks STS, enabled Regions, existing Resource Explorer indexes, the shared adapter registry, free activity sources, and the central cost policy. It does not inventory resources, create indexes, change IAM, enable Regions, or run CloudWatch. Adapter permissions are reported conservatively because service inventory calls are not executed. Results may be partial and never prove that an unqueried service is empty.

NameRequiredDescriptionDefault
regionsNo
servicesNo
include_cost_policyNo
include_permissionsNo
include_activity_sourcesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly states the tool is read-only, lists what it checks, and highlights limitations: adapter permissions reported conservatively, results may be partial, and never prove emptiness. This is comprehensive and transparent, leaving no hidden behaviors.

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?

The description is concise and well-structured: a one-sentence purpose follows by a bullet-like list of checks and non-actions, then caveats. Every sentence adds value without fluff. It is front-loaded with the primary purpose. Ideal for quick comprehension.

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?

Given the complexity (5 parameters, output schema exists), the description covers the diagnostic scope, limitations, and non-actions well. The output schema explains return values, so that gap is acceptable. However, it omits how parameters influence behavior, which is a notable hole for tool invocation. Overall, mostly complete but missing parameter-behavior links.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meanings. However, it does not describe any of the 5 parameters (regions, services, include_cost_policy, include_permissions, include_activity_sources). The general diagnostic scope indirectly relates, but no specific parameter guidance is given. This is a significant gap, resulting in a low score.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Explain which AWS coverage is reachable and why it may be partial.' It uses specific verbs (explain, checks) and lists concrete resources and checks (STS, enabled Regions, Resource Explorer indexes). This distinguishes it from siblings like listar_recursos_aws (resource listing) or analizar_riesgo_costes (cost risk analysis), providing a unique and precise purpose.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool by stating it is a read-only diagnostic and listing what it does not do (inventory resources, create indexes, change IAM, etc.). It also includes caveats about partial results. However, it does not explicitly compare to siblings or provide when-not-to-use guidance, so it misses the highest tier.

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

health_checkA

Check local server health and optionally perform one guarded STS call.

The AWS check never runs inventory, adapters, Resource Explorer, CloudTrail, CloudWatch, or any regional scan. Missing credentials degrade AWS access but do not mean the local MCP server is down.

NameRequiredDescriptionDefault
check_awsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Without any annotations, the description carries full burden. It explains that missing credentials degrade AWS access but do not indicate server down, and clarifies the limited scope of the AWS check. The term 'guarded STS call' is somewhat vague but still informative.

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?

Two short paragraphs with no wasted words. The purpose is stated in the first sentence, and additional constraints form a second paragraph. Every sentence adds value.

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 simple tool with one parameter and an existing output schema, the description covers the main point. It could explain what 'local server health' entails or what the output looks like, but the output schema likely provides that.

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?

The schema shows one optional boolean 'check_aws' with 0% description coverage. The description mentions 'optionally perform one guarded STS call' but does not explicitly link this to the parameter. It adds some meaning but could be more direct.

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

Purpose5/5

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

The description starts with 'Check local server health and optionally perform one guarded STS call', which provides a specific verb and resource. It clearly distinguishes from sibling tools like 'diagnosticar_cobertura_aws' by focusing on health rather than AWS-specific diagnostics.

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?

The description lists what the AWS check does NOT do (e.g., no inventory, adapters, regional scans), giving implicit context for when not to use it. However, it does not explicitly name alternative tools for those cases, leaving the agent to infer usage boundaries.

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

listar_recursos_awsA

Discover AWS resources through locally available credentials, read-only.

Runs free read-only discovery first. Operations that AWS can meter as
requests are returned as pending and are not executed. To continue, call
this same tool with the short-lived ``consent_request_id``,
``consent_action="approve"``, and an explicit subset in
``approved_services``. Approval is single-use, identity- and scope-bound,
request-limited, and does not authorize enrichment or extra pagination.
``consent_action="cancel"`` performs no AWS inventory call. The legacy
``confirm_potentially_billable_operations`` flag is retained for signature
compatibility but grants no permission.

Every service uses the same adapter pipeline and normalized resource model.
Coverage can be partial because of pending consent, timeout, permissions,
unavailable APIs, or Resource Explorer configuration. An empty result is
therefore distinct from a service that was not queried. This tool never
writes resources, lists S3 objects, reads queue messages, publishes topics,
calculates actual costs, or guarantees that a metered request is free.
NameRequiredDescriptionDefault
queryNo
regionNo
servicesNo
all_regionsNo
consent_actionNo
resource_typesNo
include_detailsNo
timeout_secondsNo
approved_servicesNo
consent_request_idNo
include_account_idNo
include_cost_indicatorsNo
include_activity_summaryNo
confirm_potentially_billable_operationsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: read-only nature, consent action details, conditions for partial coverage, and explicit list of operations it never performs. This level of detail is exceptional for transparency.

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?

The description is front-loaded with the main purpose and structured into logical paragraphs. While every sentence contributes information, it is somewhat verbose and could be more concise. Overall, it is clear and well-organized.

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?

Given the tool's complexity (14 parameters, consent workflow, output schema), the description covers essential aspects: how to initiate discovery, how to handle pending operations, and what limitations exist. It does not detail the output schema (provided separately) but sets realistic expectations about coverage and 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 0%, so the description must compensate. It adds value for consent-related parameters (consent_action, approved_services, consent_request_id) by explaining their role in the workflow. However, many parameters (e.g., include_cost_indicators, include_activity_summary) are not described, leaving the agent to rely on property names alone.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Discover AWS resources through locally available credentials, read-only.' It uses specific verbs and resource, and further distinguishes by detailing what it does not do (e.g., never writes resources, lists S3 objects). This provides clear differentiation from potential sibling tools.

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

Usage Guidelines4/5

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

The description explains the two-step consent workflow for billable operations, guiding when to call the tool again. While it doesn't explicitly compare to sibling tools, the context it provides (read-only discovery, consent mechanism) helps the agent determine appropriate usage scenarios.

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

revisar_free_tierA

Review account-plan and Free Tier usage without querying billed costs.

AWS officially documents programmatic Free Tier usage and account-plan monitoring at no cost. This read-only tool uses only GetFreeTierUsage and GetAccountPlanState. It does not call Cost Explorer, prove that a resource is free, or guarantee future eligibility. Usage can be estimated, delayed, absent after a limit is exhausted, or unavailable because of IAM.

NameRequiredDescriptionDefault
servicesNo
max_pagesNo
include_forecastNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses limitations: does not call Cost Explorer, usage can be estimated/delayed/absent, and IAM restrictions. This provides good 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.

Conciseness4/5

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

The description is focused with a clear opening sentence and brief additional details. It could be slightly more concise but is not verbose.

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?

The description covers purpose and limitations but omits parameter details. An output schema exists, so return values are not needed, but the lack of parameter explanation is a gap.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description does not explain any of the three parameters (services, max_pages, include_forecast). The agent only has parameter names and types, lacking meaning beyond that.

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

Purpose5/5

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

The description clearly states the tool reviews account-plan and Free Tier usage without querying billed costs, using specific AWS APIs. It distinguishes itself from sibling tools like consultar_costes_aws by explicitly avoiding Cost Explorer.

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

Usage Guidelines4/5

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

The description implies when to use (free tier monitoring, not billed costs) and what it does not do (prove free, guarantee eligibility). It lacks explicit alternatives but context with sibling tools makes it clear.

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. 7 tool updatesv0.1.0
    • First observedanalizar_actividad_recursos
    • First observedanalizar_riesgo_costes
    • First observedconsultar_costes_aws
    • First observeddiagnosticar_cobertura_aws
    • First observedhealth_check
    • First observedlistar_recursos_aws
    • First observedrevisar_free_tier

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: health check, coverage diagnosis, resource listing, activity analysis, cost risk, free tier, and cost queries. No two tools overlap in functionality.

Naming Consistency4/5

All names use snake_case and are descriptive, but there is an inconsistency in language: one tool is in English (health_check) while the rest are in Spanish. This is a minor deviation from a consistent pattern.

Tool Count5/5

Seven tools is a well-scoped set for a server focused on AWS resource discovery and cost analysis. Each tool covers a distinct aspect without being too few or too many.

Completeness4/5

The tool surface covers the main areas of health, coverage, resource discovery, activity, and cost (including free tier and actual cost). Minor gaps like direct resource detail queries are addressed by the generic listing tool, so overall completeness is high.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A stateless Python MCP server packaged as a custom AWS Lambda container image, exposing basic tools like hello, add, and current_time through an API Gateway HTTP API.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    This MCP server provides tools for inspecting AWS cloud infrastructure, including listing S3 buckets, EC2 instances, and fetching CloudWatch logs using your local AWS credentials.
    6 npm
    MIT