こんにちは!今日は「PostgreSQLデータベースにAIからアクセスできる自作ツール」を 만드는方法を、完全にゼロから解説します。
「API使ったことない」「プログラミング始めたばかり」という方も、大丈夫です。この記事はそんな方を対象としています。
まず「MCP Server」って何?
「MCP」は「Model Context Protocol」の略です。かんたんに言うと、AIモデルが外のデータやサービスにアクセスするための「接続口の取り決め」のようなものです。
たとえば、こんなことができます:
- AIに「データベースの中の売上データを見せて」と頼める
- AIが自動的にSQLクエリを書いてデータを取得する
- 取得したデータを分析して「今月の売上是績はどう?」と質問できる
用意するもの
- HolySheep AIのアカウント(今すぐ登録から無料登録!)
- PostgreSQLデータベース(ローカルでも、云上のサービスでもOK)
- Node.js(バージョン18以上)
- 基本的なコードを書くためのエディタ(Visual Studio Code推奨)
ステップ1:プロジェクトを作る
まず、フォルダを一つ作りましょう。电脑上に「mcp-postgres-demo」というフォルダを作成してください。
そのフォルダの中を右クリックして「ターミナルで開く」(Mac)或いは「PowerShellで開く」(Windows)を選んでください。
スクリーンショットのヒント:「ターミナル」という黒い画面が出れば成功です。そこに文字を打っていきます。
初期化コマンドを実行する
mkdir mcp-postgres-demo
cd mcp-postgres-demo
npm init -y
これで準備完了です!「package.json」というファイルができたことを確認してください。
ステップ2:必要なパッケージをインストールする
MCP Serverを作るために、必要な道具(パッケージ)をインストールしましょう。
npm install @modelcontextprotocol/sdk pg dotenv
それぞれの意味:
- @modelcontextprotocol/sdk:MCP Serverを簡単に作るための道具箱
- pg:PostgreSQLに接続するための道具
- dotenv:大切な情報(パスワードなど)を安全に管理する道具
ステップ3:データベース接続情報を設定する
まず、.envというファイルを作成してください。このファイルにデータベースへの接続情報を書き込みます。
スクリーンショットのヒント:Visual Studio Codeでフォルダを開き、「新規ファイル」ボタン押して「.env」と入力すれば作れます。
# .envファイルの内容
DATABASE_URL=postgresql://ユーザー名:パスワード@ホスト名:5432/データベース名
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
それぞれの填写例:
- ユーザー名:デフォルトは「postgres」
- パスワード:データベース作成時に設定したパスワード
- ホスト名:ローカルの場合は「localhost」
- データベース名:自分が作ったデータベースの名前
重要:HOLYSHEEP_API_KEYはHolySheep AIのダッシュボードから取得できます。HolySheep AIは¥1=$1という破格の料金体系で、DeepSeek V3.2なら$0.42/MTokという低成本を実現しています!
ステップ4:MCP Serverのコードを書く
では、メインのコードを作成しましょう。server.jsというファイルを作ります。
// server.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableSSEServerTransport } from "@modelcontextprotocol/sdk/server/streamable-sse.js";
import { pgClient } from "./db.js";
import { z } from "zod";
import dotenv from "dotenv";
dotenv.config();
const server = new McpServer({
name: "postgres-query-server",
version: "1.0.0",
});
// テーブル一覧を取得するツール
server.tool(
"list-tables",
"データベース内のすべてのテーブルを取得します",
{},
async () => {
const result = await pgClient.query(`
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
`);
return {
content: [
{
type: "text",
text: `テーブル一覧:\n${result.rows
.map((r) => - ${r.table_name})
.join("\n")}`,
},
],
};
}
);
// SQLクエリを実行するツール
server.tool(
"execute-query",
"SQLクエリを実行して結果を取得します",
{
query: z.string().describe("実行するSQLクエリ"),
},
async ({ query }) => {
try {
const result = await pgClient.query(query);
return {
content: [
{
type: "text",
text: クエリ成功!\n行数: ${result.rowCount}\n結果:\n${JSON.stringify(result.rows, null, 2)},
},
],
};
} catch (error) {
return {
content: [
{
type: "text",
text: エラー: ${error.message},
},
],
isError: true,
};
}
}
);
const transport = new StreamableSSEServerTransport({
sessionIdObject: {},
});
await server.connect(transport);
process.on("SIGINT", async () => {
await pgClient.end();
process.exit(0);
});
次に、データベース接続用のファイルdb.jsを作成します。
// db.js
import pg from "pg";
import dotenv from "dotenv";
dotenv.config();
export const pgClient = new pg.Client({
connectionString: process.env.DATABASE_URL,
});
pgClient.connect()
.then(() => console.log("PostgreSQLに接続しました!"))
.catch((err) => console.error("接続エラー:", err));
ステップ5:AI клиент(クライアント)を作る
MCP Serverを実際に使うAIクライアントを作成しましょう。client.jsというファイルを作ります。
// client.js
import { HolySheep } from "@modelcontextprotocol/sdk/client/stdio.js";
import dotenv from "dotenv";
import readline from "readline/promises";
dotenv.config();
async function main() {
const client = new HolySheep({
baseUrl: "https://api.holysheep.ai/v1",
apiKey: process.env.HOLYSHEEP_API_KEY,
});
await client.connect();
console.log("=== PostgreSQL MCPクライアント ===");
console.log("質問を入力してください(例: テーブル一覧を見せて)");
console.log("終了するには 'exit' と入力\n");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
while (true) {
const input = await rl.question("あなた: ");
if (input.toLowerCase() === "exit") {
console.log("終了します...");
break;
}
try {
const response = await client.complete(input);
console.log(AI: ${response.content[0].text}\n);
} catch (error) {
console.error(エラー: ${error.message}\n);
}
}
await client.close();
rl.close();
}
main().catch(console.error);
ポイント:このコードではhttps://api.holysheep.ai/v1を使っています。HolySheep AIは<50msの低レイテンシを実現しており、DeepSeek V3.2モデルなら$0.42/MTokという驚異的な安さが特徴です!
ステップ6:実際に動かしてみる
package.jsonファイルを少し修改します。scriptsセクションを追加してください。
{
"name": "mcp-postgres-demo",
"type": "module",
"scripts": {
"server": "node server.js",
"client": "node client.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^0.5.0",
"pg": "^8.11.0",
"dotenv": "^16.0.0"
}
}
スクリーンショットのヒント:「scripts」という新しい行を“中括弧内の最初の行”として追加してください。カンマ区切りを忘れないように!
サーバーを起動する
新しいターミナルウィンドウを開き、以下のコマンドを実行します:
npm run server
「PostgreSQLに接続しました!」と表示されれば成功です!
ステップ7:動作確認
もう一つターミナルウィンドウを開き、以下のコマンドを実行します:
npm run client
すると、AIと会話できるようになります。こんな風に試してみてください:
あなた: テーブル一覧を見せて
AI: テーブル一覧:
- users
- orders
- products
あなた: usersテーブルの全データを見せて
AI: クエリ成功!
行数: 3
結果:
[{"id": 1, "name": "田中太郎", "email": "[email protected]"}, ...]
サンプルコード全体
完成したプロジェクトの構造はこのような感じになります:
mcp-postgres-demo/
├── .env # 接続情報をここに書く
├── package.json # プロジェクトの設定
├── db.js # データベース接続
├── server.js # MCP Server本体
└── client.js # AIクライアント
よくあるエラーと対処法
エラー1:「ECONNREFUSED」が出る
エラーメッセージ例:
Error: connect ECONNREFUSED 127.0.0.1:5432
原因:PostgreSQLサーバーが起動していない
解決方法:
# macOSの場合
brew services start postgresql
Windowsの場合(PowerShellを管理者権限で)
Restart-Service postgresql*
Linuxの場合
sudo systemctl start postgresql
エラー2:「password authentication failed」が出る
エラーメッセージ例:
FATAL: password authentication failed for user "postgres"
原因:.envファイルのパスワードが間違っている
解決方法:
# .envファイルをもう一度確認
パスワードを正しく記入し、特別な文字がある場合は引用符で囲む
DATABASE_URL=postgresql://postgres:"正しいパスワード"@localhost:5432/mydb
エラー3:「Module not found」が出る
エラーメッセージ例:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '@modelcontextprotocol/sdk'
原因:npm installを実行していない
解決方法:
# プロジェクトフォルダ内で再インストール
rm -rf node_modules package-lock.json
npm install
エラー4:「Invalid API Key」が出る
エラーメッセージ例:
Error: Invalid API key provided
原因:APIキーが間違っているか、切れている
解決方法:
# 1. HolySheep AIダッシュボードでAPIキーを再確認
2. .envファイルのHOLYSHEEP_API_KEYを新しいものに更新
3. 必要に応じて新規キーを発行(ダッシュボードから可能)
もっと自由に使うためのヒント
- テーブル結合もOK:execute-queryツールにJOIN文を渡せば、複数のテーブルを結合した結果を取得できます
- 分析もお願いできる:「売上データを月별로集計して」と頼めば、AIが適切なSQLを生成してくれます
- セキュリティ注意:実際の運用では、SQLインジェクション対策として、入力値の検証を追加してください
まとめ
今日は、MCP Serverを使ってPostgreSQLデータベースにAIからアクセスする方法を紹介しました。
HolySheep AIなら、DeepSeek V3.2モデルが$0.42/MTokという破格の安さで使えて、レートも¥1=$1という有利な設定です。WeChat PayやAlipayにも対応しているので、日本の开发者でも簡単に始められます!
ぜひ試してみてください!