MCPサーバーを自作してCodexで呼び出す

はじめに

Codexの勉強でMCPサーバーを自作します。
環境構築にはまったので備忘録として残します。

環境

  • Windows
  • Codex(VSCode拡張機能で起動)
  • Node.js

MCPサーバーを作成する

「Hello <Name>」と入力すると「Hello <Name>-san」と返すMCPサーバーを作成します。

package.json

必要なパッケージを準備します。
modelcontextprotocolのバージョンが2以上だとディレクトリ構成が変わっているようでうまく動きませんでした。

{
  "name": "my-mcp",
  "type": "module",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.29.0",
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@types/node": "^24.10.1"
  }
}

server.js

MCPサーバーの本体を作成します。

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "my-mcp",
  version: "1.0.0",
});

server.tool(
  "hello",
  "Say hello",
  {
    name: z.string().describe("Your name"),
  },
  async ({ name }) => {
    return {
      content: [
        {
          type: "text",
          text: `Hello, ${name}-san!`,
        },
      ],
    };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

C:\Users\<UserName>\.codex/config.toml

config.tomlに
MPCサーバー名、サーバーを起動するコマンド、server.jsのフルパス
を記述します。

[mcp_servers.my_mcp]
command = 'C:\Program Files\nodejs\node.exe'
args = [
  'c:\users\<UserName>\codex_work\mcp\server.js',
]

動作確認

必要なパッケージをインストールします。
package.jsonに記載したバージョンのパッケージがインストールされます。

npm install

VSCodeを起動します。
「Codex – OpenAI’s coding agent」をインストールしていない場合はインストールします。

OpenAIのマークがつくのでクリックしてCodexのChatを開きます。
アカウントのSign-inが終わるとChatが使用できるようになります。

Chatから「/mcp」と入力してエンターします。
my-mcpが追加されていると、MCPサーバーが認識されています。

Chatから「Hello tanaka」と入力すると「Hello, tanaka-san!」と返ってきたら成功です。

はまったポイント

WSLだとCodex CLIを起動したディレクトリの.codex/config.tomlを読みますが、
VSCode拡張機能かつWindows環境だとC:\User\<UserName>\.codex/config.toml を編集する必要がありました。

まとめ

Windows/VSCode/Codex環境でMCPサーバーを自作しました。

コメント

タイトルとURLをコピーしました