Open4

Claude Code GitHub ActionsでMCPサーバを設定する方法

dehio3dehio3

Claude Code Actions のGitHub Actionsワークフローファイルを作成しただけのリポジトリで「@claudeこのプロジェクトで利用できるMCPサーバを教えて」の結果

このプロジェクトで利用できるMCPサーバについての情報です:

MCP(Model Control Protocol)サーバは、Claude Codeがカスタムツールやサービスと対話するための仕組みです。このGitHub Actionでは以下の方法でMCPサーバを設定・利用できます:

  1. MCPサーバ設定方法

    • JSONファイル(mcp_configパラメータでパスを指定)
    • インラインJSON文字列(mcp_configパラメータで直接指定)
  2. MCPサーバ設定例

{
  "mcpServers": {
    "server-name": {
      "command": "node",
      "args": ["./server.js"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}
  1. 使用方法
    • GitHub Actionの設定でmcp_configパラメータを指定
    • allowed_toolsmcp__server-name__custom_toolのように指定してMCPサーバのツールを使用可能

このアクションでは、enableAllProjectMcpServers設定が常にtrueに設定されており、プロジェクト内のすべてのMCPサーバが自動的に有効になります。

dehio3dehio3

.mcp.jsonを追加して「@claudeこのプロジェクトで利用できるMCPサーバを教えて」の結果

.mcp.json
{
  "mcpServers": {
    "awslabs-terraform-mcp-server": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "awslabs.terraform-mcp-server@latest"
      ],
      "env": {}
    },
    "awslabs-aws-documentation-mcp-server": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "awslabs.aws-documentation-mcp-server@latest"
      ],
      "env": {}
    }
  }
}

このプロジェクトで利用できるMCPサーバについて

このGitHub Actionでは、MCPサーバ(Model Control Protocol)は以下の方法で設定・利用できます:

MCPサーバ設定方法

  1. 設定方法:

    • action.ymlのmcp_configパラメータを使用して設定
    • JSONファイル(パスを指定)または直接JSONオブジェクト(文字列)を提供可能
  2. 設定例:

{
  "mcpServers": {
    "server-name": {
      "command": "node",
      "args": ["./server.js"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}
  1. 特徴:

    • enableAllProjectMcpServersが常にtrueに設定される(setup-claude-code-settings.tsで自動設定)
    • プロジェクト内のすべてのMCPサーバが自動的に有効になる
  2. 使用方法:

    • allowed_toolsパラメータにmcp__server-name__custom_tool形式で指定することでMCPサーバのツールを利用可能

このプロジェクトで特定のMCPサーバをカスタム構成するには、上記の設定方法に従ってmcp_configを指定する必要があります。デフォルトでは、プロジェクト内で定義されたすべてのMCPサーバが自動的に有効になります。


.mcp.configを追加すると、ローカルでClaude codeを起動した時は自動で認識してくれるが、Claude Code Actionsでは自動で認識されない

dehio3dehio3

mcp_config: ".mcp.config"の設定をGitHub Actionsワークフローファイルに追加して「@claudeこのプロジェクトで利用できるMCPサーバを教えて」の結果」


MCP サーバについての情報

  • Gather context about MCP servers in this project
  • Analyze MCP server implementation and configuration
  • Provide detailed information about available MCP servers

このGitHub Actionでは、事前設定されたMCPサーバは含まれていません。ユーザーが自分のMCPサーバを設定するための基盤を提供しています。

MCPサーバの設定方法

  1. 設定方法:

    • mcp_configパラメータを使用して設定
    • JSONファイル(パスを指定)または直接JSONオブジェクト(文字列)を提供可能
  2. 設定例:

{
  "mcpServers": {
    "server-name": {
      "command": "node",
      "args": ["./server.js"],
      "env": {
        "API_KEY": "your-api-key"
      }
    }
  }
}
  1. 特徴:
    • enableAllProjectMcpServersが常にtrueに設定されている
    • プロジェクト内で定義されたMCPサーバが自動的に有効になる

使用可能なMCPサーバ例

このアクションには以下のMCPサーバ例が含まれています:

  1. GitHub MCP サーバ (examples/issue-triage.yml)

    • Dockerイメージを使用: ghcr.io/github/github-mcp-server:sha-7aced2b
    • GitHubトークンが必要
    • 以下のツールを提供:
      • mcp__github__get_issue
      • mcp__github__get_issue_comments
      • mcp__github__update_issue
      • mcp__github__search_issues
      • mcp__github__list_issues
  2. テスト用MCPサーバ (test/mcp-test/simple-mcp-server.ts)

    • テスト目的のみ
    • test_toolという単一のツールを提供

このリポジトリ自体には、ユーザーが直接使用できる事前設定されたMCPサーバはありません。MCPサーバを利用するには、ワークフロー内で明示的に設定する必要があります。


あれ?認識されていない?
GitHub Actions画面にて以下のメッセージが出ていた。

Run anthropics/claude-code-action@beta
Failed to parse additional MCP config: SyntaxError: JSON Parse error: Unexpected token '.'. Using base config only.

GitHub ActionsのログをGeminiにて分析した回答。

GitHub Actionsでは、ワークフローのYAMLファイルに書かれたmcp_config: .mcp.jsonが、実行環境に渡される前にYAMLパーサーによって処理されます。この際、引用符がないと、./から始まらないmcp.jsonは、ファイルパスではなく、単なる文字列mcp.jsonとして扱われます。この文字列がClaude Codeに渡されると、それが有効なJSONオブジェクトではないため、パースエラーが発生します。

mcp_config: "./.mcp.config"に修正したが変わらず
ファイル指定はやめて、ファイルを読み込むステップを追加して警告は解消

      - name: Read MCP config
        id: mcp-config
        run: echo "config=$(cat path/to/your/mcp-config.json)" >> $GITHUB_OUTPUT

      - uses: anthropics/claude-code-action@beta
        with:
          use_bedrock: "true"
          model: "apac.anthropic.claude-3-7-sonnet-20250219-v1:0"
          mcp_config: ${{ steps.mcp-config.outputs.config }}
dehio3dehio3

最終的なGitHub Actionsワークフローと「@claudeこのプロジェクトで利用できるMCPサーバを教えて」の結果

ClaudeCodeActions.yml
name: Claude Action

permissions:
  contents: write
  pull-requests: write
  issues: write
  id-token: write

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]

jobs:
  claude-action:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
    runs-on: codebuild-claude-code-gha-runner-${{ github.run_id }}-${{ github.run_attempt }}
    env:
      AWS_REGION: ap-northeast-1
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Configure AWS Credentials (OIDC)
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ vars.AWS_BEDROCK_ROLE_TO_ASSUME }}
          aws-region: ap-northeast-1

      - name: Setup uv (includes uvx)
        uses: astral-sh/setup-uv@v6

      - name: Install Checkov for security scanning
        run: |
          echo "Installing Checkov for Terraform security scanning..."
          pip install checkov
          checkov --version
          echo "✅ Checkov installation completed"

      - name: Prepare MCP config
        id: mcp-config
        run: echo "config=$(jq -c . .mcp.json)" >> $GITHUB_OUTPUT

      - name: Run Claude Code Action
        uses: anthropics/claude-code-action@beta
        with:
          use_bedrock: "true"
          model: "apac.anthropic.claude-3-7-sonnet-20250219-v1:0"
          allowed_tools: |
            Bash
            mcp__awslabs-terraform-mcp-server__SearchAwsProviderDocs
            mcp__awslabs-terraform-mcp-server__SearchAwsccProviderDocs
            mcp__awslabs-terraform-mcp-server__SearchSpecificAwsIaModules
            mcp__awslabs-terraform-mcp-server__RunCheckovScan
            mcp__awslabs-aws-documentation-mcp-server__read_documentation
            mcp__awslabs-aws-documentation-mcp-server__search_documentation
            mcp__awslabs-aws-documentation-mcp-server__recommend
          mcp_config: ${{ steps.mcp-config.outputs.config }}
          github_token: ${{ secrets.GITHUB_TOKEN }}

このプロジェクトで利用できるMCPサーバ

  • MCPサーバに関する情報を収集する
  • 利用可能なMCPサーバを確認
  • 日本語で詳細な回答を作成

現在このプロジェクトで利用できるMCPサーバは以下の2つです:

1. AWS ドキュメンテーションMCPサーバ (awslabs-aws-documentation-mcp-server)

このサーバは公式のAWSドキュメントにアクセスするためのツールを提供します:

  • ドキュメントの読み取り
  • コンテンツ検索
  • 関連コンテンツの推奨

主な機能:

  • read_documentation: 特定のドキュメントURLの内容を取得
  • search_documentation: AWSドキュメント全体を検索
  • recommend: 関連ドキュメントページを推奨

2. Terraform MCPサーバ (awslabs-terraform-mcp-server)

このサーバはTerraformを使用したAWSクラウドインフラストラクチャの作成と管理をサポートします:

リソース:

  • terraform_development_workflow: Terraformの開発ワークフロー
  • terraform_aws_best_practices: AWS Terraformプロバイダのベストプラクティス
  • terraform_aws_provider_resources_listing: AWSプロバイダリソースの一覧
  • terraform_awscc_provider_resources_listing: AWCCCプロバイダリソースの一覧

主な機能:

  • ExecuteTerraformCommand: Terraformコマンドを実行
  • ExecuteTerragruntCommand: Terragruntコマンドを実行
  • SearchAwsProviderDocs: AWSプロバイダのドキュメントを検索
  • SearchAwsccProviderDocs: AWCCCプロバイダのドキュメントを検索
  • SearchSpecificAwsIaModules: 特定のAWS-IAモジュールを検索
  • RunCheckovScan: セキュリティスキャンを実行
  • SearchUserProvidedModule: ユーザー提供モジュールを検索

これらのMCPサーバを使用することで、AWSドキュメントの参照やTerraformを使ったインフラ構築に関連する機能をClaudeに提供できます。