Codex 向けの DynamoDB MCP
Codex は、呼び出せる MCP サーバーを与えれば、
あなたの DynamoDB のスキーマを読み取り、テーブルにクエリを実行できます。Codex は MCP を JSON
ではなく TOML で設定します。そして、ほとんどのセットアップが行き詰まるのはこの違いです —
TOML のテーブル名は snake_case の mcp_servers であり、他のあらゆるクライアントが使う
mcpServers キーではありません。
このガイドでは、設定そのもの、トランスポートのルール、設定しておく価値のあるタイムアウト、 そして AWS 認証情報をエージェントの環境に置かずに接続する方法を扱います。選択肢の比較に ついては、DynamoDB MCP サーバーの概要を参照してください。
接続すると Codex に何ができるか
- 実際のスキーマの読み取り — テーブル、キースキーマ、インデックス、そしてアイテムに実際に 現れる属性。
- クエリの実行 — ライブのデータに対する
Query、Scan、GetItem、PartiQL。自分自身の 前提を検証できます。 - 集計 — DynamoDB がネイティブには実行できない 件数とグループ化。
- 編集の提案 — あなたのテーブルにではなく、レビュー可能な ステージングエリアへ。
始める前に
- DynoTable をインストールする — ダウンロードして、Codex に見せたい AWS プロファイルを追加します。
- MCP サーバーをオンにする — 設定 → MCP サーバー。デフォルトではオフで、
127.0.0.1にバインドされます。 - プロファイルを公開する — そのプロファイルの MCP セクション → MCP 経由で公開。接続はそのプロファイルの認証情報とリージョンに厳密に固定されます。
そのペインから endpoint と実際のポートをコピーしてください。
config.toml にサーバーを追加する
Codex は MCP サーバーを ~/.codex/config.toml から読み取ります。
[mcp_servers.dynotable-prod]
url = "http://127.0.0.1:<port>/mcp?profile=prod"エントリはこれだけです。動くかどうかを決めるのは 3 つのポイントです。
テーブル名は mcp_servers — snake_case です。 mcpServers ではありません。Codex は認識
できないテーブルを黙って無視するため、camelCase のキーはエラーも出さず、サーバーも生みません。
設定が正しく見えるのに Codex が何も認識しないなら、まずここを確認してください。
トランスポートを選ぶのは url です。 Codex はどのキーが存在するかでトランスポートを決め
ます。command なら stdio、url なら streamable HTTP です。両者は排他的で — url、
bearer_token_env_var、http_headers は、command を持つテーブルに同居できません。
DynoTable は HTTP なので、書くのは url だけです。
?profile=prod はヒントであって、認可ではありません。 DynoTable の承認プロンプトで
プロファイルを事前選択するだけで、接続の承認はやはりアプリ内で行います。
設定しておく価値のある任意のオプション
[mcp_servers.dynotable-prod]
url = "http://127.0.0.1:<port>/mcp?profile=prod"
startup_timeout_sec = 30
tool_timeout_sec = 60
enabled = trueDynamoDB で効いてくるのは tool_timeout_sec です。大きなテーブルに対する Scan は短い
デフォルト値を超えることがあり、実際には単に遅いだけのクエリが、ツールのエラーとして表面化
します。us-east-1 のオンデマンドでは、そのスキャンは評価したアイテムごとに結果整合性で
4 KB あたり 0.5 RCU を課金します — 1 KB の行が入った 100 MB のテーブルなら、
フィルターが効く前におよそ 25,000 RCU です。大きなテーブルで Codex がタイムアウトを
報告したら、接続が壊れていると決めつける前に、この値を上げたうえで
料金計算ツールでその読み取りの単価を確かめてください。
enabled = false は、ブロックを削除せずにサーバーを一時停止しておく、きれいな方法です。
プロジェクトスコープの設定
Codex は信頼済みのプロジェクトについて、プロジェクトディレクトリの .codex/config.toml も
読み取ります。リポジトリを共有しているなら、ループバックのサーバーをそこに置かないで
ください — ポートはマシンごとに異なり、チームメイトは DynoTable を動かしていません。これは
~/.codex/config.toml に留めましょう。
接続を承認する
初回接続時に、DynoTable が接続してくるクライアントの名前を示し、スコープを求める同意 プロンプトを表示します。
- 読み取り専用 — スキーマ、クエリ、アイテムの読み取り。変更はなし。
- 読み取り&ステージング — 加えて、あなたが確認するための変更のステージング。直接の 書き込みは決してありません。
- フルアクセス — 加えて、ビューを開く、フィルター、エクスポート。書き込みはやはり ステージングを経由します。
まずは読み取り専用から始めましょう。スコープは呼び出しのたびに再チェックされるため、 狭める変更は即座に効きます。
実際に読み込まれたかを確認する
config.toml を編集したら Codex を再起動してください — ファイルは起動時に読み込まれるため、
セッションの途中での編集は何も変えません。そのうえで、あなたのデータにしか答えられないことを
尋ねます。「このプロファイルのテーブルと、それぞれのキースキーマを一覧してください。」
曖昧で一般論的な答えが返ってきたら、ツールは読み込まれていません。下のチェックリストを順に 潰してください。
なぜ Codex に AWS 認証情報を渡してはいけないのか?
標準的なパターン — AWS のアクセスキーとシークレットを保持する MCP サーバー — は、エージェント のプロセスにそれらのキーの IAM 権限をフルに渡してしまい、DynamoDB 固有のレビューステップは 存在しません。
リスクは悪意あるモデルではありません。MCP のツール結果が信頼できない入力であることです。 行、ドキュメント、取得したページには命令が含まれうります。それが プロンプトインジェクションであり、あなたのキーを保持する書き込み可能な サーバーに対しては、そのままあなたのテーブルに作用します。
DynoTable を経由すれば:
- あなたの AWS 認証情報がエージェントに届くことは決してありません。 DynoTable が プロファイルを保持して呼び出しを行うため、Codex のプロセス内のどこからもキーは読み取れま せん。
- 直接書き込むツールは存在しません。 ゲートされているのではなく — _そもそも無い_のです。 読み取り&ステージングでの最悪の結末は、あなたがレビューする差分カードが 1 枚できることです。
トラブルシューティング
Codex がサーバーをまったく認識しない。 順に確認します。テーブル名は
mcp_servers(snake_case)ですか、編集後に Codex を再起動しましたか、そして TOML は妥当
ですか?
サーバーは定義されているのに起動しない。 url と同じテーブルに command キーがないか
確認してください — 両者は排他的です。enabled が false になっていないかも確認しましょう。
接続はできるが、クエリでタイムアウトする。 tool_timeout_sec を上げてください。大きな
Scan は遅いのであって、壊れているのではありません。
接続はできたが、ツールがゼロ。 DynoTable でプロファイルが 1 つも公開されていないか、 要求している内容を何も公開しないスコープで接続が承認されています。
編集しても DynamoDB が変わらない。 想定どおりです — ステージングされています。 ステージングエリアからコミットしてください。
よくある質問
Codex を DynamoDB に接続するには?
DynoTable をインストールし、設定 → MCP サーバーでサーバーをオンにし、Codex に見せたい
AWS プロファイルを公開してから、~/.codex/config.toml に [mcp_servers.dynotable] テーブルを
追加し、そのペインに表示された endpoint を指す url を書きます。Codex を再起動し、希望する
スコープで DynoTable 内の接続を承認してください。
Codex は MCP サーバーをどこで設定するのか?
~/.codex/config.toml で、サーバーごとに [mcp_servers.dynotable] という 1 つの TOML
テーブルを使います。Codex は信頼済みのプロジェクトディレクトリにある .codex/config.toml も
読み取りますが、ポートはマシンごとに異なるため、ループバックのサーバーはホームディレクトリの
ファイルに置くべきです。
config.toml に書いた MCP サーバーを Codex が認識しないのはなぜか?
最も多い原因はテーブル名です。mcpServers ではなく、snake_case の mcp_servers でなければ
なりません。Codex は認識できないテーブルをエラーなしに無視します。次に多い 2 つの原因は、
ファイルを編集して Codex を再起動していないことと、command を持つテーブルに url キーを
置いていることです。
リモートの MCP サーバーでは url と command のどちらを使うのか?
DynoTable のような streamable HTTP のサーバーには url を使います。Codex はどちらのキーが
存在するかでトランスポートを選び — command なら stdio、url なら HTTP — 両者は同じ
テーブルに書けません。
Codex は私の DynamoDB テーブルに書き込めるか?
DynoTable を経由する限り、直接には書き込めません — 呼び出せるコミット用のツールが存在しない からです。読み取り&ステージングまたはフルアクセスでは、エージェントは変更をステージングし、 それはアプリ内でレビュー可能な差分として現れ、あなたがコミットしたときにのみ書き込まれます。 書き込み可能な AWS キーを保持するコミュニティの MCP サーバーは、直接書き込めます。
関連ページ
- DynamoDB MCP サーバー: 選択肢の比較 — DynoTable と、AWS の 公式サーバー、コミュニティのサーバーの比較。
- Claude Code と Cursor でも 同じセットアップができます。
- MCP サーバードキュメント — 完全なセットアップ、スコープ、同意、そして セキュリティモデル。
- ステージング — 提案された書き込みがどうレビューされ、コミットされるか。
- DynamoDB Expression Builder —
KeyConditionExpression/FilterExpressionをブラウザ内で生成します。エージェントは一切 関与しません。
製品名はそれぞれの所有者の商標であり、識別のためにのみ参照しています。Codex の設定 フォーマットは 2026-07-27 に確認済みです。