こんにちは!今日は「PostgreSQLデータベースにAIからアクセスできる自作ツール」を 만드는方法を、完全にゼロから解説します。

「API使ったことない」「プログラミング始めたばかり」という方も、大丈夫です。この記事はそんな方を対象としています。

まず「MCP Server」って何?

「MCP」は「Model Context Protocol」の略です。かんたんに言うと、AIモデルが外のデータやサービスにアクセスするための「接続口の取り決め」のようなものです。

たとえば、こんなことができます:

用意するもの

ステップ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

それぞれの意味:

ステップ3:データベース接続情報を設定する

まず、.envというファイルを作成してください。このファイルにデータベースへの接続情報を書き込みます。

スクリーンショットのヒント:Visual Studio Codeでフォルダを開き、「新規ファイル」ボタン押して「.env」と入力すれば作れます。

# .envファイルの内容
DATABASE_URL=postgresql://ユーザー名:パスワード@ホスト名:5432/データベース名
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY

それぞれの填写例:

重要: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. 必要に応じて新規キーを発行(ダッシュボードから可能)

もっと自由に使うためのヒント

まとめ

今日は、MCP Serverを使ってPostgreSQLデータベースにAIからアクセスする方法を紹介しました。

HolySheep AIなら、DeepSeek V3.2モデルが$0.42/MTokという破格の安さで使えて、レートも¥1=$1という有利な設定です。WeChat PayやAlipayにも対応しているので、日本の开发者でも簡単に始められます!

ぜひ試してみてください!


👉 HolySheep AI に登録して無料クレジットを獲得