Asana MCP と GitHub MCP を連携させて、Claude Desktopから 半自動で Pull Request を生成する
最近ホットなMCPサーバーを使って、自動で Pull Requestを作成させる手順を解説します。
これによって Claude Desktop などの client から、Asana チケットを参照させ、要件に基づいてAIに実装させることができます。
都度MCPコマンドを承認するのが若干めんどうなものの、基本半自動で実装までしてもらうことができます。
なお、MCP自体に関しては先人たちのわかりやすい解説が多々ありますので、ここでは割愛させていただきます。
Claude Desktop の導入
下記から Claude Desktop をダウンロードします。
が、エンジニアたるもの brew
で管理することを個人的にはおすすめします。
brew install --cask claude
AsanaからPATを払い出す
少し導線がわかりづらいので、スクショをベースに解説していきます。
※ なお、ブラウザではなくAsanaアプリを使った場合で進めます。
Asanaの個人アイコンをクリックし、「設定」を開きます。
「アプリ」セクションを開き、一番下までスクロールします。
一番下に「デベロッパーコンソールを表示」という外部リンクがあるので、開きます。
すると、「個人アクセストークン」という箇所があるので、ここから新規の Personal Access Token(以下PAT)を払い出します。
名前を入れて作成すると、トークンが払い出されるのでメモっておきましょう。
GitHubからPATを払い出す
下記から PAT を払い出します。
Resource Ownerを指定します。
操作したいリポジトリが参照できるOwnerにする必要があることに注意してください。
Repository accessを設定して、このPATがタッチするリポジトリを選択します。
最後に Permission を設定します。
デフォルトでは全てが No access なので、プロジェクト方針に従って最小限の権限をONにします。
今回の主題である「Pull Requestの作成」を満たすためには、「Repository permissions
」の 「contents」セクションの権限を、Read and write にする必要があります。
Permissionが設定できたら、PATを払い出してメモします。
GitHubのPATも同様に一度しか表示されないので注意してください。
Claude Desktop に MCP サーバーを設定
それでは、払い出した2つのPATを使って Claude Desktop に MCP サーバーを設定していきます。
Claude → 設定を開きます。
一般と開発者のタブが出てくるので、「開発者」を選択します。
「構成を編集」というボタンがあるので押すと、Claudeの内部ファイルが編集できます。
claude_desktop_config.json
というファイルを編集していきます。
ここに具体的なMCPの設定を書いていきます。
MCPサーバーの具体的な設定
下記のように設定してください。
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT_HERE"
}
},
"asana": {
"command": "npx",
"args": ["-y", "@roychri/mcp-server-asana"],
"env": {
"ASANA_ACCESS_TOKEN": "YOUR_ASANA_PAT_HERE"
}
}
}
}
GitHubは公式のMCPサーバーを、Asanaは有志が作ってくださった下記を採用します。
上記を npx で扱います。
設定ができたら、一度 Claude Desktop を再起動します。
(2025年4月23日時点では、再起動しないとMCPが有効にならないようです)
もう一度、設定→開発者タブを選択してください。
すると、下記のようにGitHubとAsanaのMCPサーバーが設定されているはずです。
成功していれば画像のように、「running」になっています。
逆に赤色になっていたら失敗しています。
GitHub・Asanaともに running になっていることが確認できたら、実際に使ってみます。
Claude Desktopで半自動実装してみる
MCPの設定ができたら、Claudeとのチャットボックスにこのような表示が出ているはずです。
MCPと連携できていると、利用できるツール・MCPがUIとして見れるようになります。
では、実際に実装して「もらって」みます。
「MCPから添付」を押すと連携サービスが選択できます。
ここで、「task-summary」を選択すると、対象チケットのtaskIdを入力するボックスが出てきます。
ここで対象のチケットのみを選択することで、与える知識を限定することができます。
例えばhttps://app.asana.com/1/123456/project/54321/task/55555
というリンクの場合、55555
を指定します。
すると、下記のように添付されたことが確認できるはずです。
ではプロンプトを実行してみます。
例えば下記のように入れます。
添付の asana チケットの内容を満たす実装を、your_api リポジトリに対して行い、Pull Request を立ててください。
するとチャットが始まります。
何度か下記のようなモーダルにて、コマンドを実行していいか聞かれるので、内容を確認して問題なければ許可してください。
Claude Desktopの不安定さも含めて乗り越え、明確かつシンプルな要件がチケットに定義されていれば、Pull Requestが作成されるはずです。
期待する今後の変化と代替案
方法としてはこれでいいものの、前述した通り不安定さはどうしても否めません。
技術・業界として新規性が高いので、この点はしょうがないと思っています。
そこで現時点で私が期待している今後の変化と、それまでの代替案を提案することで締めます。
この世界線ができれば、人間が注力すべきは「明確な要件定義」と「生成の妥当性判断」に収束していき(マクロな視点ではその限りではありません)、開発体験のパラダイムシフトとなることを確信しているからです。
期待する今後の変化
AIに実装の主体を移していく中で、今後期待したい変化は下記です。
- Claude Desktop MCP の安定化
- 公式の Asana MCP 提供
- CursorでのMCP接続ログの確認機構
- ChatGPT Desktop での MCP 導入
- MCPサーバー群の管理レイヤー
安定性や信頼性などは時代を待ちつつ、現段階だとClaude Desktop や Cursor など呼び出し元ごとに定義する必要があるため、これを統合する汎用レイヤーができたら一気に楽になるかなと思っています。
とはいいつつ、圧倒的な強者(ex. ChatGPT)が全ての interface になる予感もしています。
予想しすぎてもしょうがないので、ここは時代の流れを見つつ、上記の変化が徐々に起きるのをウォッチします。
代替案
不安定さが無視できないうちは、足元は Cursor x GitHub MCP が使い勝手いいと感じています。
MCPの設定は全く同じで、Asanaセクションを抜くだけです。
Cursor → 基本設定 → Cursor Settingsを選び
Add global MCP server にて、全く同じ設定を行います。
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT_HERE"
}
}
}
あとは、Cursor の Agent モードにて、Asana の内容をコピペして実装指示するだけです。
まとめ
Claude Desktopを client として、Asana MCP と GitHub MCP を使って、半自動で Pull Request を生成してもらう手順を説明しました。
不安定さがあるため、今後期待したい変化や足元の代替案も提供しました。
いずれにせよ、AIエージェントによるコーディングの未来は明るいです。
逆にいうと、いつまでもマニュアルでやっていると業界のスピード感に100%ついていけなくなるでしょう。
いち早く仕組みを取り入れて、業界変化に追従していきたいところです。
Discussion