
CursorでリリースされたAWS Pluginを使ってみた
こんにちは、せーのです。今日は先日 Cursor からv2.5が発表され、新しく「Plugin」という機能が追加されました。そのPluginの中にAWS から発表された Agent Plugins for AWS がありましたので、お試しがてら使ってみたいと思います。
どんな機能か
Cursor Plugin とは(おさらい)
Plugin とは、ルール・スキル・エージェント・コマンド・MCP サーバー・フックを、配布可能なバンドルとしてまとめたものです。IDE・CLI・Cloud で共通に動き、Cursor v2.5 で Plugin Marketplace とともにローンチしました。
MCP サーバーを単体で使う場合との違いを整理すると、次のとおりです。
| 観点 | Plugin | MCP Server 単体 |
|---|---|---|
| 範囲 | Skills / Subagents / Rules / Hooks も含む複合バンドル | プロトコル接続のみ |
| 配布 | Marketplace でワンクリックインストール | mcp.json に手動設定 |
| 知識 | Skills が自動適用され判断品質が向上 | コンテキスト注入は手動 |
つまり、Plugin は「MCP サーバー + それを賢く使うための知識・ルール・ワークフロー」をパッケージ化したもの、というイメージです。
AWS Plugin(deploy-on-aws)の構成
AWS 公式の deploy-on-aws プラグインには、次の 3 つの MCP サーバーが含まれています。
| サーバー名 | 用途 |
|---|---|
| awsknowledge | AWS ドキュメント・アーキテクチャガイダンス・ベストプラクティス参照 |
| awspricing | リアルタイム AWS サービス料金見積もり |
| aws-iac-mcp | CDK / CloudFormation 向け IaC ベストプラクティスと cdk-nag によるセキュリティチェック |
「deploy to AWS」「host on AWS」「run this on AWS」「AWS architecture」「estimate AWS cost」「generate infrastructure」などのフレーズで、deploy スキルが起動します。
プラグインの流れは 5 段階です。
| Step | 名称 | 内容 |
|---|---|---|
| 1 | Analyze | コードベースをスキャンし、フレームワーク・DB・依存関係を特定 |
| 2 | Recommend | 最適な AWS サービスを選定し、根拠を提示 |
| 3 | Estimate | AWS Pricing MCP Server でリアルタイムのコスト見積もりを表示 |
| 4 | Generate | CDK または CloudFormation の IaC コードを生成 |
| 5 | Deploy | ユーザーの承認後にデプロイを実行 |
Plugin Marketplace は 2026年2月17日ローンチで、AWS のほか Linear、Figma、Stripe、Cloudflare、Vercel、Databricks、Snowflake、Amplitude、Hex、Neon などがローンチパートナーとして並んでいます。ラインナップは Cursor Marketplace から確認できます。
とりあえず動かしてみる
前提条件
次の環境を用意しました。
- Cursor v2.5 以降
- AWS CLI v2(
aws sts get-caller-identityで認証済み) - Node.js v18 以上
- AWS CDK v2
今回の検証では、AWS CLI 2.33、Node.js v22、CDK 2.1007 で、事前に aws sts get-caller-identity で認証を確認済みです。
サンプルアプリの準備
シンプルな Todo API(Express.js + SQLite + 静的 HTML)を用意します。
todo-app/
├── server.js # Express API サーバー
├── public/
│ └── index.html # フロントエンド
├── package.json
└── node_modules/
作成コマンドは以下のとおりです。
mkdir todo-app && cd todo-app
npm init -y
npm install express better-sqlite3
server.js は次の内容で、CRUD API と静的ファイル配信を担当します。
const express = require('express');
const Database = require('better-sqlite3');
const path = require('path');
const app = express();
const db = new Database(':memory:');
app.use(express.json());
app.use(express.static(path.join(__dirname, 'public')));
db.exec(`
CREATE TABLE todos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
completed INTEGER DEFAULT 0
)
`);
app.get('/api/todos', (req, res) => {
res.json(db.prepare('SELECT * FROM todos ORDER BY id DESC').all());
});
app.post('/api/todos', (req, res) => {
const { title } = req.body;
const result = db.prepare('INSERT INTO todos (title) VALUES (?)').run(title);
res.json({ id: result.lastInsertRowid, title, completed: 0 });
});
app.patch('/api/todos/:id', (req, res) => {
db.prepare('UPDATE todos SET completed = NOT completed WHERE id = ?').run(req.params.id);
res.json(db.prepare('SELECT * FROM todos WHERE id = ?').get(req.params.id));
});
app.delete('/api/todos/:id', (req, res) => {
db.prepare('DELETE FROM todos WHERE id = ?').run(req.params.id);
res.json({ ok: true });
});
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
public/index.html はフォームと一覧・チェック・削除ができるフロントです。ローカルで node server.js を実行し、ブラウザで http://localhost:3000 を開いてタスクの追加・完了・削除ができることを確認しました。API の動作も curl で確認できます。
$ curl -s http://localhost:3000/api/todos
[]
$ curl -s -X POST http://localhost:3000/api/todos -H "Content-Type: application/json" -d '{"title":"テストタスク"}'
{"id":1,"title":"テストタスク","completed":0}
$ curl -s http://localhost:3000/api/todos
[{"id":1,"title":"テストタスク","completed":0}]
AWS Plugin のインストール
Cursor の Settings(メニュー Cursor > Settings または Cmd + ,)を開き、Plugins で「aws」を検索します。Agent Plugins for AWS(deploy-on-aws)が表示されたら Add to Cursor をクリックし、スコープ(User / Project)を選びます。インストール後、Plugins > Installed に AWS Plugin が表示され、awsknowledge / awspricing / aws-iac-mcp の MCP サーバーが自動で設定されます。

「deploy to AWS」を実行
Agent パネル(Cmd + L)を開き、入力欄に「deploy to AWS」とだけ入力して送信します。
Analyze でプロジェクトがスキャンされ、Express.js(Node.js)、SQLite(better-sqlite3)、public/ の静的 HTML/JS などが自動検出されます。続く Recommend で、それに基づいた AWS サービス構成が提案されます。

今回の実行では、プラグインが次の構成(dev サイジング)を提案しました。
| レイヤー | ローカル | AWS(今回の提案) |
|---|---|---|
| コンピュート | Express.js on localhost | ECS Fargate(0.5 vCPU, 1 GB)で Express をコンテナ実行 |
| トラフィック | なし | Application Load Balancer(HTTP 80) |
| データベース | SQLite(インメモリ) | DynamoDB(オンデマンド)。データ永続化のため SQLite を置き換え |
| インフラ管理 | なし | CDK(IaC) |
App Runner や Lambda ではなく Fargate + ALB が選ばれる場合もあり、アプリの検出結果やプラグインの判断で構成は変わります。ローカルの SQLite が DynamoDB に置き換わる点は共通の見どころです。
Estimate では awspricing MCP サーバーにより、リアルタイムの料金データから月額概算が表示されます。デプロイ前にコストが確認できるのは安心ですし、これは便利です。今回の実行では、次のような見積もりが提示されました。
Monthly Cost Estimate (dev sizing, us-east-1, 24/7 稼働)
サービス 月額概算 ECS Fargate (0.5 vCPU, 1 GB) ~$14.40 Application Load Balancer ~$16.43 NAT Gateway (1 AZ) ~$32.85 DynamoDB (on-demand) ~$1〜5 合計目安 ~$65〜75/月 ※ Pricing API がポリシーで制限されている環境では、スキル内の参照値で表示される場合があります。
続行を指示すると Generate で CDK とアプリ側の変更が自動生成されます。今回の実行では次のような追加・変更がありました。
- server.js
ストア抽象化を導入し、環境変数TABLE_NAMEが設定されていれば DynamoDB、なければ従来どおり SQLite(インメモリ)でローカル開発。 - store-dynamodb.js / store-sqlite.js
同じ API(list, create, toggle, remove)で両バックエンドを切り替え。 - Dockerfile
Node 20 のマルチステージビルドでアプリをコンテナ化。 - package.json
@aws-sdk/client-dynamodbと@aws-sdk/lib-dynamodbを追加。 - infra/
CDK(TypeScript)スタック:VPC(1 AZ)、Fargate サービス、ALB、DynamoDB テーブル、タスク用 IAM(DynamoDB のみ)、セキュリティグループ(ALB → Fargate のみ、Fargate はプライベートサブネット)。 - DEPLOY.md
デプロイ手順とオプションのセキュリティチェック(checkov / cfn-nag)の案内。
todo-app/
├── server.js # ストア抽象化対応
├── store-dynamodb.js
├── store-sqlite.js
├── public/
│ └── index.html
├── Dockerfile
├── package.json
├── DEPLOY.md
├── infra/ ← 自動生成(CDK)
│ ├── bin/
│ ├── lib/
│ │ └── todo-app-stack.ts
│ ├── cdk.json
│ ├── package.json
│ └── ...
└── ...
Deploy では、Agent がデプロイ実行の確認を求めます。
I'm ready to deploy the Todo App to AWS. This will:
- Bootstrap your AWS environment (first time only)
- Build and push the Docker image to ECR
- Deploy the CDK stack (VPC, ALB, ECS Fargate, DynamoDB)
Estimated deployment time: 10–15 minutes. Shall I proceed?
承認するとリポジトリルートで npm install のあと、cd infra && npm install && npx cdk bootstrap(初回のみ)と npx cdk deploy --require-approval never が実行されます。ターミナルに CDK のデプロイログが流れ、最終的にエンドポイント URL が出力されます。
✨ Synthesis time: 8.23s
TodoAppStack: deploying... [1/1]
TodoAppStack: creating CloudFormation changeset...
✅ TodoAppStack
✨ Deployment time: 312.45s
Outputs:
TodoAppStack.LoadBalancerDnsName = TodoA-Publi-xxxxxxxxxxxx.us-east-1.elb.amazonaws.com
Stack ARN:
arn:aws:cloudformation:us-east-1:xxxxxxxxxxxx:stack/TodoAppStack/xxxxxxxx
✨ Total time: 320.68s
Outputs に表示される LoadBalancerDnsName がアプリの URL です。ブラウザでアクセスすると Todo App が AWS 上で動いています。
結果の確認
アーキテクチャとコスト
今回の提案は、上記の ECS Fargate + ALB + DynamoDB の構成でした。Estimate ステップで提示されたコスト見積もり(dev 想定・us-east-1・24/7 稼働)は以下のとおりです。
| サービス | 月額概算 |
|---|---|
| ECS Fargate (0.5 vCPU, 1 GB) | ~$14.40 |
| Application Load Balancer | ~$16.43 |
| NAT Gateway (1 AZ) | ~$32.85 |
| DynamoDB(オンデマンド) | ~$1〜5 |
| 合計(目安) | ~$65〜75/月 |
Fargate + ALB + NAT の組み合わせは、最小構成の App Runner 単体よりコストは高めですが、柔軟な構成や VPC 内配置が必要な場合に選ばれます。デプロイ前に月額の目安が把握できるのは安心です。
生成された CDK と動作確認
infra/lib/ のスタック定義に、Fargate、ALB、DynamoDB、VPC などが定義され、cdk-nag によるセキュリティチェックも適用されます。IaC がプロジェクトに残るため、以降は cd infra && npx cdk deploy で同じ構成を再現できます。
デプロイ完了後に出力される Load Balancer の DNS 名(LoadBalancerDnsName)にブラウザでアクセスすると、Todo App が AWS 上で動いていることを確認できます。タスクの追加・完了・削除もローカルと同様に動作します。今回の実験(2026年2月20日実施)では、エンドポイント URL を開くと Todo App の画面が表示され、タスクの追加・完了トグル・削除が問題なく動作しました。API も curl で確認し、GET /api/todos・POST /api/todos・PATCH /api/todos/:id・DELETE /api/todos/:id はいずれも期待どおりで、きちんと実行できました。

ちょっとシンプルすぎましたね笑
ちょっとハマったところ
初回デプロイ時、ECS サービスが「Exceeded attempts to wait」(NotStabilized)でロールバックして困りました。色々調べたところ、Fargate サービスの healthCheckGracePeriod を 120 秒に設定して再デプロイすればよいとわかり、設定して無事動きました。また、Mac(ARM)でビルドした Docker イメージが Fargate(x86_64)で動かず、コンテナが「exec format error」で終了する事象があり、CDK の DockerImageAsset に platform: Platform.LINUX_AMD64 を指定して解消しました。再デプロイの所要時間は約 5 分でした。
注意(MFA 必須のアカウント)
ForceMFA が有効なアカウントでは、cdk synth 時に ec2:DescribeAvailabilityZones が拒否され、デプロイに失敗することがあります。その場合は、MFA 付きのセッション(aws sts get-session-token で MFA を渡す、または SSO ログイン)を取得してから再度 cdk deploy を実行してください。
まとめ
Cursor v2.5 の AWS Plugin(deploy-on-aws)を試した結果、次の 3 点が特に便利だと感じました。
- 「deploy to AWS」の一言でエンドツーエンド
アーキテクチャ選定からデプロイまで、AWS の知識が少なくても進められる。 - コスト見積もりが事前に見える
リアルタイム料金データに基づく見積もりで、デプロイ前に月額を把握できる。 - CDK が自動生成されて IaC が残る
一回限りではなく、以降はcdk deployで再現可能。
PoC やプロトタイプの素早い AWS デプロイ、IaC 初心者が生成コードを読んで CDK を学ぶ場面、既存アプリの AWS 移行検討(まずアーキテクチャとコストだけ確認)などで使えそうです。
注意点として、生成された CDK コードはデプロイ前に必ずレビューし、本番利用時は追加のセキュリティ設定を検討してください。AWS 認証情報は最小権限で設定することをおすすめします。
Plugin Marketplace と AWS 公式プラグインの組み合わせは、開発体験としてかなり良く、手元のアプリをすぐ AWS に載せて試したいときにもってこいでした。とりあえず動かしてみたい方には、ぜひ試してみてはいかがでしょうか。









