% podman volume create pgSampleWorld
pgSampleWorld
%
% podman pull google/alloydbomni
Trying to pull docker.io/google/alloydbomni:latest...
Getting image source signatures
Copying blob sha256:9a05f2493d03e0bbb1066e3bb909096d9703c5418d053689f8f7ec5c1d7f2b60
Copying blob sha256:2fdd8bd0abec7d6bf9c9413fa4822358118e9e09fbd29407074e295e7480643f
Copying blob sha256:f5852518415488bf422f9b7f2b17ffd7d4d7185e7c8ab8bf2147deeba4634f9b
Copying blob sha256:0185c6859b00ddb146dc31ca9b6beaed53efb3407563057f05fb266b3f434287
Copying blob sha256:205213b8936196dbb62c16b3a96e0b7e220299b3a9ca113bccfd126dadb699e5
Copying blob sha256:c1e0ef7b956a07c7b090256aa16cbb0550a34d0625d1d23c5b1a76e92a58d01e
Copying blob sha256:f1c87667e7842cd5137ab5ab073fd291aab49798d524866faf5e29baf799b2ef
Copying blob sha256:f4e912a38a04c24a3b2c9357881eb1d2c4a79966b599994cf923a3b861deb717
Copying blob sha256:867c56a9d8dc8e0f8bf8540326bb5638c709e265ad3375249cc036c62b16338b
Copying blob sha256:149990bdbe96c90c9632f7494d32f308f2f410a17dc862496798163b371df491
Copying blob sha256:7b43d926df6c0192fef4a132f46301cb25c933a70475037b5817c9ee977cf7f9
Copying blob sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1
Copying blob sha256:5fe5be224054609d6669eb71c74f8414c654ed0495c9298a32aec1bd29ac4ef3
Copying blob sha256:b5897c548647a8d823411b5f365fccd16994b35efcd75164b5fc82d77c396ebe
Copying blob sha256:2cc17a1ffe78834f475a35e67e612c3af76ac44d459e0ab42339f0fb2347feb7
Copying blob sha256:8714a15a9f79d2f01947ddb11b2760a05d897325efc39ff988dc4e073cf7a93c
Copying blob sha256:94947c0ccc56de03ab622a35e70c99ab4636dae5dae427dfba5df79b2a84177f
Copying blob sha256:215fbeb3c59b120bf53d3081b76272a835b13ae7a77dd072d59e70cfcda3bb07
Copying blob sha256:5e6b93867b6c54a5b48c6497faf8bf50214ea208d0be670cea6db9d9f23482fd
Copying blob sha256:6bf938e955c48891853605a1636950a912b1c81b9749205ba17c26241e005702
Copying blob sha256:92a15b9c822ec96fc09ed2ceacfec6f0a20058f9dc2c601c490985ec306826f7
Copying blob sha256:a503bc9e96a17982d6a2ae33314b3127dc7bf9acb4db2ac1ebbb899b32147aeb
Copying blob sha256:4c80b84ecf5976c85858871790f90a50816f48ceefccab5c843d2c0bde955036
Copying blob sha256:e01e5606c56fe7fc61177d8118a6274a5fbb146c881f00de6a8bc4780412c6df
Copying blob sha256:09e9c6b61a697d1af8b69f1aa5f2d048adfbbfd705ca5752943cd49772d884e3
Copying blob sha256:0bf7b01fb1e47ec1361fadec05df0a950da5a4c46b49779eb34d0e091e165a5e
Copying blob sha256:d220fb7d6aeb40b0998b710f1a4b61c2ce10876ed6e8dd5c8cc0009b5eb07289
Copying blob sha256:5ed9845c51464bbab10c8deb0bd80b0bc484e2064fa4076176cb5a4421169557
Copying config sha256:fe0702e3d2389cf3cdf28f1f6c4342b3da53981820f5c9fba1249a7efc351eac
Writing manifest to image destination
fe0702e3d2389cf3cdf28f1f6c4342b3da53981820f5c9fba1249a7efc351eac
%
AlloyDB Omniのコンテナを作成します。名前はmy-omniとしました。POSTGRES_PASSWORDに設定した値は、MCPサーバーの構成ファイルに書き込むので忘れないようにします。
podman run --name my-omni -e POSTGRES_PASSWORD=<パスワード> -v pgSampleWorld:/var/lib/postgresql/data -p 5432:5432 -d google/alloydbomni
% podman run --name my-omni -e POSTGRES_PASSWORD=********** -v pgSampleWorld:/var/lib/postgresql/data -p 5432:5432 -d google/alloydbomni
dc8cb2273f0d1e25de431f3f7960e301afcc17dea88940e56791e754852e3129
%
コンテナmy-omniが実行されていることを確認します。
% podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc8cb2273f0d docker.io/google/alloydbomni:latest postgres 3 minutes ago Up 3 minutes 0.0.0.0:5432->5432/tcp my-omni
%
PostgreSQLのworldのサンプル・データベースをダウンロードします。
% tar xzvf world-1.0.tar.gz
x dbsamples-0.1/
x dbsamples-0.1/world/
x dbsamples-0.1/world/world.sql
x dbsamples-0.1/world/README
%
展開したファイルに含まれているworld.sqlを実行します。
podman exec -i my-omni psql -U postgres < ./world.sql
% cd dbsamples-0.1/world
world % podman exec -i my-omni psql -U postgres < ./world.sql
BEGIN
SET
CREATE TABLE
CREATE TABLE
CREATE TABLE
COPY 4079
COPY 239
COPY 984
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
COMMIT
ANALYZE
ANALYZE
ANALYZE
world %
以上でPostgreSQLの準備はできました。
https://github.com/modelcontextprotocol/servers/tree/main/src/postgres
~/Library/Application\ Support/Claude以下にclaude_desktop_config.jsonというファイルを作成し、以下を記述します。[パスワード]の部分はAlloyDB Omniのコンテナ作成時に与えたパスワードに置き換えます。
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://postgres:[パスワード]@localhost:5432/postgres"
]
}
}
}
% cd ~/Library/Application\ Support/Claude
Claude % cat claude_desktop_config.json
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://postgres:*********@localhost:5432/postgres"
]
}
}
}
Claude %
Claude Desktop Appを起動します。すでに起動している場合は再起動します。
「私のpostgresから、どのような情報を問い合わせることができますか?」