🔥
Claude DesktopからClaude CodeにMCPサーバーを追加したらエラーが出た話【Claude Code】
背景
- 現在Claude CodeのMaxプラン($100)を契約し、Claude Codeでどこまでやれるのかを試して遊んでいる。
- React + FastAPI + Postgresの単純な3層スキーマのアプリケーションをAWSにデプロイするためのシンプルな構成をTerraformで記述させていた。
- 手放しでTerraformを書かせると案外沼ったので、なにか軸となる参照対象が欲しくて使えるMCPサーバーがないか調べてみた。
- AWS Terraform MCP Serverという、AWSリソースのTerraformを書くときのベスプラを提供してくれるMCPサーバーらしい(ざっくり)。
- Claude Codeが直接ベスプラのドキュメントを読みながらTerraformのコードを書いてくれるならとても嬉しいので、使ってみることにした。
AWS Terraform MCP Server - 公式
awslabs/terraform_mcp_server - GitHubリポジトリ
動作環境
- MacBook Pro (Apple M3 Pro) - macOS Sonoma 14.7.1
- Cursor 0.50.5
やったこと
- コマンドでも
claude add mcp
というものが用意されているし、Claude Desktopが入っている人はそこで使用しているMCPサーバーをimportするコマンドclaude mcp add-from-claude-desktop
が用意されている。 - 今回は
claude add mcp
での追加がよくわからなかったので、Claude Desktopに登録済みのMCPサーバーを追加するやり方で行った
再現手順
- Claude Desktopを開く
- 画面左上の Claude > 設定 を開く
- 「開発者」タブに移動し、「構成を編集」ボタンを押す
- Finderが開くので、
claude_desktop_config.json
を開く - 開いた
claude_desktop_config.json
に以下のコードを追加する
claude_desktop_config.json
{
"mcpServers": {
"awslabs.terraform-mcp-server": {
"command": "uvx",
"args": [
"awslabs.terraform-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}
-
claude_desktop_config.json
を閉じてClaude Desktopを再起動する - 手順1~3でもう一度開発者用設定を開き、以下のようにrunningステータスになっているかを確認する
- ターミナルでClaude Codeプロジェクトが存在するディレクトリに移動する
- 以下のコマンドでClaude DesktopからMCPサーバーの設定をimportする
claude mcp add-from-claude-desktop
- 先ほどClaude Desktopに登録したMCPサーバーが出てくるので、選択してEnter
- ターミナルを再起動し、Claude Codeを起動
claude
- Claude Codeに適当に質問してみる
発生したエラー
- Claude Codeが先程のMCPサーバーに接続された状態で質問をすると、以下のエラーが発生した。
API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"tools.17.custom.name: String should match pattern '^[a-zA-Z0-9_-]{1,64}$'"}}
- 訳:tools[17].custom.name に設定した名前が「英数字・_・- だけで1〜64文字以内」という規則に違反している。
解決方法
- mcpServer名に使われている
.
を-
等に置き換える
解決手順
- ~/.claude.jsonを開く
- jsonファイルの projects > path/to/your/project > mcpServers を見つける
- 以下のようにコードを修正する
.claude.json
{
"projects": {
...,
"path/to/your/project": {
...,
"mcpServers": {
- "awslabs.terraform-mcp-server": {
+ "awslabs-terraform-mcp-server": {
"command": "uvx",
"args": [
"awslabs.terraform-mcp-server@latest"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
},
...
},
},
}
- Claude Codeを起動し、
/mcp
コマンドを打って接続されていることを確認する - なにか質問してみる
まとめ
- Claude DesktopでのMCPサーバー名の制約と、Claude CodeでのMCPサーバー名の制約が違うことによって発生するエラーだった。
- Claude系の製品にMCPサーバーを接続する手順は色々あり、わかりやすいものがなかなか出てこないので困った。
- Claude Desktopは
~/Library/Application Support/Claude/claude_desktop_config.json
に設定jsonを追加する形が良さそう。 - Claude Codeは
~/.claude.json
の中の該当プロジェクトに設定jsonを追加する形が良さそう。 - これでまだ戦える!!
- AWS Terraform MCP Serverに接続したClaude Codeくんのパワーアップ度合いはまた別問題なので別途検証します。
参考記事
Discussion