Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .hoplite/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"version": 1,
"ports": {
"preview": 3000,
"additional": {}
},
"scripts": {
"setup": {
"enabled": true,
"command": "mise install rust@stable && mise use -g rust@stable"
},
"run": {
"enabled": true,
"command": null
},
"archive": {
"enabled": true,
"command": null
},
"check": {
"enabled": true,
"command": null
}
},
"mcpServers": []
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ cargo build --release
./target/release/cloud-tools # MCP server on stdio
```

As an MCP server it plugs into any MCP-capable agent. The agent calls the thirteen tools above directly and reasons over the results.
As an MCP server it plugs into any MCP-capable agent. The agent calls the tools above directly and reasons over the results.

To embed it instead, depend on the library and turn the binary features off:

Expand Down Expand Up @@ -226,7 +226,7 @@ of the providers whose credentials you supply:
AWS (`*.amazonaws.com`), Google Cloud (`*.googleapis.com`), Cloudflare
(`api.cloudflare.com`) and OVH (`*.api.ovh.com`, `api.us.ovhcloud.com`).

**Permissions.** Read-only is sufficient for every tool. All seven declare
**Permissions.** Read-only is sufficient for every tool. All eight declare
`readOnlyHint: true`, and nothing in this server creates, modifies or deletes a
cloud resource.

Expand Down
2 changes: 1 addition & 1 deletion src/clouds/aws/cloudwatch_logs.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use anyhow::{anyhow, Result};
use futures::future::join_all;

use super::common::list_regions;
use super::auth::{sign, AwsCreds};
use super::common::list_regions;

// ── Public types ──────────────────────────────────────────────────────────────

Expand Down
6 changes: 1 addition & 5 deletions src/clouds/aws/ec2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@ use chrono::{DateTime, Utc};
use futures::future::join_all;

use super::common::{ec2_query, form_params, list_regions};
use super::{
as_items,
auth::AwsCreds,
az_to_region, xml_to_value,
};
use super::{as_items, auth::AwsCreds, az_to_region, xml_to_value};

// ── Public types ──────────────────────────────────────────────────────────────

Expand Down
4 changes: 3 additions & 1 deletion src/clouds/gcp/billing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ pub async fn get_costs_range(
end: NaiveDate,
) -> Result<Vec<CostEntry>> {
let table = creds.billing_table.as_ref().ok_or_else(|| {
anyhow!("billing_table not configured — set CLOUD_GCP_BILLING_TABLE for real cost data")
anyhow!(
"billing_table not configured — set CLOUD_TOOLS_GCP_BILLING_TABLE for real cost data"
)
})?;
bigquery_costs(http, creds, table, start, end).await
}
Expand Down
Loading
Loading