これまでの記事(プロジェクトフォルダの回し方 / Gmail × MCP / WordPress × MCP)で「MCP で繋いでいる」と繰り返し書いてきた。その後 Google カレンダーも同じ要領で繋いだので、この記事では Gmail・WordPress・Google カレンダーの3つを実例に、設定の中身と、つまずいたところをまとめて書く。
前提
- Claude Code が入っていること
- Node.js(
npxで動くタイプの MCP サーバーが多い) - 例は Gmail・WordPress・Google カレンダーの3つ
設定ファイルの場所とスコープ
MCP サーバーの登録先は用途で変わる。
- ~/.claude.json のトップレベル
mcpServers:自分の全プロジェクトで有効(user スコープ)。Windows ならC:\Users\<ユーザー名>\.claude.json - プロジェクト直下の
.mcp.json:そのプロジェクト限定。チームで共有=Git に入れる前提
認証情報を含むものは user スコープ(~/.claude.json)に置く。Git 管理下のファイルにパスワードを書かない。
実際の中身(このブログ環境の設定)
~/.claude.json の mcpServers はこうなっている(認証情報はダミー)。
{
"mcpServers": {
"gmail": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@gongrzhe/server-gmail-autoauth-mcp"],
"env": {}
},
"wordpress": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-wordpress"],
"env": {
"WORDPRESS_SITE_URL": "https://example.com",
"WORDPRESS_USERNAME": "あなたのユーザー名",
"WORDPRESS_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx",
"WORDPRESS_AUTH_METHOD": "app-password"
}
},
"google-calendar": {
"type": "stdio",
"command": "node",
"args": ["C:\\Users\\<ユーザー名>\\.google-calendar-mcp\\src\\build\\index.js"],
"env": {
"GOOGLE_OAUTH_CREDENTIALS": "C:\\Users\\<ユーザー名>\\.google-calendar-mcp\\gcp-oauth.keys.json"
}
}
}
}
command+args:起動コマンド。npx -y <パッケージ名>で npm のパッケージをその場で取ってきて実行できるenv:そのサーバーに渡す環境変数。Gmail は空(認証は後述の方法で別ファイルに保存される)、WordPress は接続先とログイン情報
google-calendar だけ npx ではなく node でビルド済みファイルを直接指定している。理由は後述の「つまずいたところ」参照。
コマンドで追加する場合
手で JSON を書かなくても、claude mcp add で同じことができる。
claude mcp add wordpress -s user \
-e WORDPRESS_SITE_URL=https://example.com \
-e WORDPRESS_USERNAME=あなたのユーザー名 \
-e "WORDPRESS_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx" \
-e WORDPRESS_AUTH_METHOD=app-password \
-- npx -y mcp-wordpress
-s user がスコープ、-e が環境変数、-- の後ろが起動コマンド。
ただしこれはターミナルから claude コマンドが使える環境の話。うちの Windows PC は VS Code 拡張版の Claude Code しか入っておらず、claude コマンド自体が PATH に無くてターミナルから叩けない。その場合は素直に ~/.claude.json を直接編集すればいい。
認証
- WordPress:管理画面 → ユーザー → プロフィール → 「アプリケーションパスワード」で発行。表示される
xxxx xxxx xxxx xxxx xxxx xxxx(スペース込み)をそのままenvに入れる - Gmail / Google カレンダー:どちらも Google の OAuth。初回は認証コマンドを実行するとブラウザが開いて Google のアクセス許可画面が出る(開かない場合はターミナルに出るURLを手で開けばいい)。許可すると認証情報が
~/.gmail-mcp/や~/.google-calendar-mcp/に保存され、設定ファイル自体には何も書かない
反映と確認
- 設定を変えたら Claude Code を起動し直す(VS Code 拡張なら「Developer: Reload Window」)
/mcpでサーバーの状態を確認。connectedになっていればOK
つまずいたところ
npx がその場で解決するバージョンで壊れることがある。
Google カレンダーの MCP サーバー(@cocal/google-calendar-mcp)を npx -y で起動したら ERR_MODULE_NOT_FOUND: zod/v3/index.js で即クラッシュした。原因は、npx がその場で最新の zod v4系を掴んでしまい、MCP SDK が期待する v3系のサブパスが存在しなかったこと。対処は、GitHub リポジトリをクローンして、同梱の package-lock.json でバージョンを固定した状態で npm install && npm run build。.claude.json 側も npx ではなく、ビルド済みの build/index.js を node で直接指定する形に変更した。「npx -y で動かない MCP サーバーに当たったら、ローカルにクローンしてビルドする」は覚えておいて損はない。
認証の有効期限が切れると invalid_grant になる。
しばらく使っていなかった Gmail の連携が、ある日 invalid_grant エラーで一切動かなくなった。認証コマンドを打ち直せば再認証はできる(ブラウザでもう一度許可するだけ)が、ハマったのはその後:認証情報ファイルを更新しても、MCP サーバーのプロセス自体は Claude Code 起動時に立ち上がったまま常駐しているので、古い認証情報を握ったまま動き続ける。ウィンドウの再読み込み(VS Code なら「Developer: Reload Window」)でサーバープロセスごと再起動して、はじめて新しい認証情報を読みにいってくれた。「再認証したのに直らない」と思ったら、まずプロセスの再起動を疑うとよい。
サーバーの WAF が更新をブロックしていた。
新規投稿(POST)は通るのに、既存記事の修正(PUT)だけ「Forbidden」で弾かれる。原因は、レンタルサーバーの WAF が「PUT メソッドの拒否」というルールで REST API の更新まで止めていたこと。コントロールパネルの WAF ログから、その1件を「除外」に登録して解決した。
日本語タイトルだとスラッグが自動生成でぐちゃぐちゃになる。
パーセントエンコードされた長い URL になるので、投稿後に手で英字スラッグに直す運用にしている。
MCP が一覧の結果をキャッシュする。
カテゴリー一覧などが古い値のまま返ってくることがあり、「消したはずのカテゴリーがまだある」と勘違いした。確認の前にキャッシュをクリアするようにした。
まとめ
- MCP サーバーの追加 =「~/.claude.json の mcpServers に、起動コマンドと環境変数を書く」だけ
- 認証情報は user スコープに。Git に入るファイルには書かない
- npx が壊れたらローカルビルド、認証が切れたら再認証+プロセス再起動、更新が弾かれたら WAF を疑う。うちで実際に踏んだ地雷は今のところこの3つ
- 変更後は再起動 → /mcp で確認

