MCP サーバーを使うと、カスタムデータソースに接続して、そのデータを Cursor 内で利用できる。ブラウザ、データベース、エラーやシステムログといった場所からコンテキストが必要なときに特に便利。MCP サーバーのセットアップはシンプルで、Cursor ならすぐに完了する。
このガイドでは、Postgres 向けの MCP サーバーの作り方を解説する。目的は、Cursor が Postgres データベースに対して直接 SQL クエリを実行できるようにし、テーブルスキーマを構造化して公開すること。
このチュートリアルは、MCP サーバー構築の基礎を学ぶためのものだよ。
> mkdir postgres-mcp-server
> Bun init
Blank プロジェクトを選ぶ。ボイラープレートのセットアップが終わったら、必要な依存関係をインストールしよう。zod は MCP SDK で入出力のスキーマを定義するために必須だ。
bun add postgres @modelcontextprotocol/sdk zod
- postgres
- @modelcontextprotocol/sdk:
次に、サーバーの振る舞いをどうさせたいかを定義する。そのためにspec.md を作成して、上位レベルの目標を書き出す
# 仕様
- MCP の環境変数設定で DATABASE_URL を定義できるようにする
- ツール経由で Postgres のデータをクエリできるようにする
  - 既定では読み取り専用
  - 環境変数 `DANGEROUSLY_ALLOW_WRITE_OPS=true|1` を設定すると書き込みを許可
- テーブルは `resources` としてアクセスする
- スキーマ定義には Zod を使用する
以下を読み、@spec.md に従って求めている内容を把握すること。必要な依存関係はすべてインストール済み
- @https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/refs/heads/main/README.md
- @https://raw.githubusercontent.com/porsager/postgres/refs/heads/master/README.md
npx @modelcontextprotocol/inspector bun run index.ts
 問題なさそうなら、サーバーを Cursor 本体に接続して実環境でテストしよう。この時点で、Cursor は Postgres MCP サーバーをネイティブ機能のように扱えるようになり、データベースに直接クエリしたり、インスペクトしたりできる。
stdio 経由でローカルに MCP サーバーを動かすのはいい出発点だけど、チームでは MCP サーバー経由で同じデータベースへの共有アクセスが必要になることが多い。そんな場合は、MCP サーバーを中央集約型の HTTP サービスとしてデプロイする必要がある。
デプロイ済みの MCP サーバーには、個別の stdio インスタンスに比べて次の利点がある:
問題なさそうなら、サーバーを Cursor 本体に接続して実環境でテストしよう。この時点で、Cursor は Postgres MCP サーバーをネイティブ機能のように扱えるようになり、データベースに直接クエリしたり、インスペクトしたりできる。
stdio 経由でローカルに MCP サーバーを動かすのはいい出発点だけど、チームでは MCP サーバー経由で同じデータベースへの共有アクセスが必要になることが多い。そんな場合は、MCP サーバーを中央集約型の HTTP サービスとしてデプロイする必要がある。
デプロイ済みの MCP サーバーには、個別の stdio インスタンスに比べて次の利点がある:
- 共有データベースアクセス: 複数のチームメンバーが Cursor を通じて同じデータベースインスタンスにクエリできる
- 集中管理された設定: スキーマ更新や権限変更を 1 か所で管理できる
- セキュリティ強化: 適切な認証、レート制限、アクセス制御を実装できる
- 可観測性: チーム全体の利用状況やパフォーマンスメトリクスを監視できる
これを実現するには、トランスポート方式を stdio から HTTP に切り替えよう。
セットアップ全体は扱わないけど、まずは Cursor に渡せる良いプロンプトを紹介するね既存の MCP サーバーをベースに、HTTP プロトコルを実装する新しいファイルを作成する。
共通ロジックを mcp-core に移し、各トランスポート実装に名前を付ける(mcp-server-stdio、mcp-server-http)。
@https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/refs/heads/main/README.md