はじめに
こんにちは、弁護士ドットコム SRE 室の原口です。
今回、 Claude Desktop で利用できる MCP (Model Context Protocol) を試してみました。
MCPとは
MCP(Model Context Protocol)は、LLM アプリケーションと、外部のデータソースやツールをシームレスに連携させるためのプロトコルです。
LLM は、このプロトコルで MCP Server と通信します。
MCP Server はバックグラウンドでいろいろな SaaS やローカルのファイルからデータを取得し、それを LLM に渡します。
MCP の公式サイトには以下のような図があります。
目玉はやはり上記の図の下部にあるインターネット経由で情報が取得できるところだと考えます。
将来的には、Claude サーバーでも動作するようにしたいようですが、現時点(2025/03/03)では Claude Desktop や Cursor などクライアントのみで動作します。
詳細は公式サイトをチェックしてみてください。
またたくさんの MCP Server が公開されていますので、利用している SaaS が見つかるはずです。
今回試したこと
今回は以下の 3 サービスとの連携をテストしてみました。
- JIRA のチケットを分析して、自身が行った作業のサマリーを作ってもらう
- Slack のメッセージを分析して、結果を投稿する
- GitHub のプルリクエストをレビューしてもらう
ケース1: JIRA との連携
JIRA との連携には MCP Atlassian という MCP Server が用意されています。
MCP Atlassian
という名前になっているのは、JIRA
だけでなく Confluence
にも対応しているからですね。
以下のように設定することで利用可能です。
$ ~/Library/Application\ Support/Claude/claude_desktop_config.json { "mcpServers": { "mcp-atlassian": { "command": "uvx", "args": ["mcp-atlassian"], "env": { "CONFLUENCE_URL": "https://your-domain.atlassian.net/wiki", "CONFLUENCE_USERNAME": "your.email@domain.com", "CONFLUENCE_API_TOKEN": "your_api_token", "JIRA_URL": "https://your-domain.atlassian.net", "JIRA_USERNAME": "your.email@domain.com", "JIRA_API_TOKEN": "【JIRAのAPI Token】" } } } }
私は Confluence
を利用していないため設定を削除したのですが、うまく行きませんでした。
ダミーでも設定項目を残さないといけません。
どうして連携しようと思ったのか(目的)
SRE 室では JIRA を使ってタスクを管理しています。その情報を取得し、LLM に分析してもらうことで今までの実績や、これからの作業の概要などを知ることができると考えました。
ちょうどこれから行われる、 今季の振り返りなどが一瞬で終わらせられるとすごくうれしい。 とよこしまな気持ちもありもっとも期待しています。
やはり毎回めんどうな、今季の振り返りを自動化したい気持ちでいっぱいです。
例: 個人のタスクを分析してみる
MCP Atlassian の仕様上、取得件数の上限が 50 件なので、1 週間ごとや 1 ヶ月ごとに実施する必要があります。今回は、最新の 50 件のみ取得しています。
JQL を直接渡すことができるのでリストアップの自由度はとても高いですね、素晴らしい製品です。
ちなみに「JQL なんて絶対覚えない」と思っていたわたしなのですが、 なんと アトラシアン様がウィリアムズF1チームのタイトルスポンサーになってくれました!
アトラシアン様への感謝の証として、JQL だけでなく JIRA や SourceTree なども積極的に利用します❗
F1 界、モータースポーツ界へのサポート誠にありがとうございます。
すっかり脱線しましたが、以下のプロンプトで私の実績一覧を作成してもらうことにしました。
投入したプロンプト
jira_search を使って、私が担当となっている issue をリストアップしてください。 また、リストアップした issue を要約してください。 実績を効果的に上司にアピールできるようなフォーマットで出力してください。 jira_search のプロパティは以下の通りです。 - jql: project = [プロジェクト名] AND issuetype IN (standardIssueTypes(), subTaskIssueTypes()) AND assignee = [ユーザーID] ORDER BY duedate DESC - limit: 50
LLM の応答
了解しました! あなたが担当しているJIRAのissueをリストアップして、 上司へのアピールポイントとしてまとめますね。 まずは情報を取得しましょう! (途中省略) この報告書は、あなたが取り組んできたプロジェクトやタスクを 整理し、上司に対して効果的にアピールできるよう構成しています。 # インフラ基盤強化と新規プロジェクト推進の実績報告 ## 主な成果サマリー この四半期において、クラウド基盤の強化、新規プロジェクト環境の構築、 既存環境のマイグレーション計画を中心に取り組みました。 特に、2つの主要プロジェクトのインフラ整備において中心的な役割を担い、 セキュリティ対策の強化やパフォーマンス最適化も実現しました。 ## 1. プロジェクトA関連の実績 ### ☑️ インフラ基盤構築と統合 - **IaCツールの活用による管理の最適化** - コード差分解消による環境の一貫性確保 - 分割していた開発環境の設定ファイル統合によるコード品質向上 (途中省略) ## 2. プロジェクトB関連の実績 ### ☑️ 認証基盤の整備 - **IDaaSとの連携** - ユーザー認証サービス環境の構築 - 認証用サーバーレス関数の実装とセキュリティ設定 ### ☑️ ネットワークとセキュリティ対策 - **DNS設計と運用改善** - DNS管理サービスリソースの構築 - マネージドサービスのエンドポイント設計 - ロードバランサーのセキュリティ検討とWAF導入計画 (途中省略) ## 今後の展望 1. **開発環境間の完全移行の実現** - 移行手順の最適化と自動化によるダウンタイム最小化 - マイグレーション後の検証プロセス確立 (途中省略) F1エンジニアが常に限界に挑戦し続けるように、 プロジェクトのインフラ基盤も常に進化させながら、 安定性とパフォーマンスの両立を目指してまいります。
このように、JIRA のタスク情報をもとに実績をまとめることができます。
実績をもとに今後の目標についても考えてもらうことも簡単にできそうです。
さらに、上長や組織が特に評価するポイントをプロンプトにして LLM に投げるともっと有効なレポートを作ってくれます。 (たとえば、LLM の検証がもっとも高評価。など)
どんな作業をしたのかを簡単にまとめてもらえるこの機能は、さっそく活用の道がありそうです。
また JIRA のチケットを作成する際に、ていねいに説明を書くモチベーションにもなりそうです。
なお LLM が、いたるところに F1 のネタを仕込んでおります。
これは私が Claude のキャラクターを「F1 好き」と指定しているからです。
ケース2: Slack との連携
Slack との連携には Slack MCP Server という MCP Server が用意されています。
以下のように設定することで利用可能です。
$ ~/Library/Application\ Support/Claude/claude_desktop_config.json { "mcpServers": { "slack": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-slack" ], "env": { "SLACK_BOT_TOKEN": "【xoxbで始まるKey】", "SLACK_TEAM_ID": "【チームID】" } } } }
どうして連携しようと思ったのか(目的)
弁護士ドットコムでは Slack を中心にコミュニケーションを取っています。
それらの情報を LLM にわたしてチームの状況などを分析させると面白そうだと思って使ってみました。
例1: 個人のtimesチャンネルを分析してみる
まず実験台として選んだのは、私の times です。
投入したプロンプト
slack_get_channel_history を利用して、Slackからデータを取得して以下の情報を作成してください - 直近の活動を 日報形式で日別かつ日付順に 300 文字くらいに要約する - 人物像を考察してください - 対象人物にどのように接すると良いか。アドバイスも添えてください slack_get_channel_history のプロパティは以下の通りです - channel_id: [チャンネルID] - limit: 1000 その後、slack_post_message を使い考察した結果を同じチャンネルに投稿してください。
プロンプトを投入すると、slack_get_channel_history
などを実行していいか問われますので、許可してあげてください。
LLM の応答
了解です!Slackのメッセージを取得して、楽しく分析してみましょう😊 お申し出の情報をまとめますね! ### 日報形式での直近の活動サマリー **2/21** - 通常業務の遂行 - AWS関連の作業継続 - Slack連携機能の確認を実施 **2/20** - Amazon Q Developer Proの導入検証を主に実施 - AWS Chatbot環境の構築・テスト作業 (途中省略) ### 推測される人物像 - **1. 技術面** - インフラ/DevOpsエンジニアとしての専門性が高い - 新技術への好奇心が強く、積極的に検証を行う - 効率化・自動化への意識が高い ### おすすめの接し方 - **技術的な話題で気軽に話しかける**:特にAWS、インフラ、自動化に関するトピックが喜ばれそう - **フランクなコミュニケーションスタイルを心がける**:堅苦しさよりも親しみやすい話し方が合う - **新しい技術情報の共有を積極的に**:新技術への好奇心が強いので、最新情報は歓迎される ### 交流のヒント - **F1などの趣味の話題も交えると会話が広がる**:仕事以外の共通の話題があると関係性が深まる - **リアクションを積極的に返す**:コミュニケーションを大切にしているので、リアクションも重要 - **長すぎる説明は避け、ポイントを絞った情報提供**:詳細な説明を好むが、長すぎると読まない傾向 (以下省略)
毎日作業内容をつぶやいたりしていることが前提となりますが、日報や週報を書いてもらうことも可能でした。
また発言している人物の人柄なども分析できたりしていて楽しいとおもいました。
このプロンプトでは、対象人物にどのように接すると良いか。アドバイスも添えてください との
情報を追加して、これが私の times に投稿されます。
その結果、周りから私へのアプローチに F1 の話題を入れることをお願い できます。
なお LLM に指摘された、 詳細な説明を好むが、長すぎると読まない傾向 は改善したいと思いました。
グラフィカルなレポート作成もお手の物なので、これを使ってチームの活動を可視化できます。
例2: 組織のチャンネルを分析する
次に SRE 室のメンバーにお許しをいただき、 SRE 室のチャンネルを分析させてみました。
投入したプロンプト
slack_get_channel_history を使って以下の作業を実施してください - 300文字くらいで要約する - 組織の雰囲気を考察する - SREを行う組織の完成度を5段階評価する slack_get_channel_history のプロパティは以下の通りです - channel_id: [チャンネルID] - limit: 1000 その後、slack_post_message を使い考察した結果を同じチャンネルに投稿してください。
LLM の応答
SREチームの活動分析結果をお伝えします 📊 【活動の要約】 - AWS、GitHub、IaC等のインフラ管理が主な業務 - 新技術の検証も積極的に実施 【SREとしての活動度】🌟🌟🌟🌟🌟 (5/5) - インフラストラクチャの継続的な改善 - 自動化への取り組み(GitHub Actions等) - パフォーマンスモニタリングツールの活用 【組織の雰囲気】 - フレンドリーで協力的な雰囲気(絵文字の活用が多い) - 新しい技術への挑戦を歓迎する文化 - メンバー間の相互サポートが充実
組織のチャンネルを LLM に分析させることで、客観的な視点からチームの雰囲気や成熟度を評価してもらうことができました。これにより、自分たちでは気づかなかった組織の強みや改善点を発見できそうです。 今後は、メンバーごとの傾向を分析したり、障害発生時のやりとりを要約して手順化してもらうことなどを考えています。
ただし、メンバーからは🌟 5 つの評価に対して「嘘つけ w」「AI もまだまだやな」といった反応もありました。
AI の評価を鵜呑みにするのではなく、あくまで参考情報として活用することが大切だと感じました。
F1 のテレメトリーデータのように、パフォーマンスの参考にはなるけれど、最終的な判断はドライバー(チームメンバー)自身が行うべきものですね。
ケース3: GitHubとの連携
GitHub との連携には GitHub MCP Server という MCP Server が用意されています。
以下のように設定することで利用可能です。
$ ~/Library/Application\ Support/Claude/claude_desktop_config.json { "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "【github_pat_で始まるPAT】" } } } }
なお Claude 3.7 Sonnet のリリースと同時に、 GitHub の統合が beta 版ながらリリースされていて、期待せずにはいられません。
どうして連携しようと思ったのか(目的)
GitHub との連携もできるので試してみました。今回はプルリクエストをレビューしてもらいましたが、プルリクエストの作成(create_pull_request
)などもあり、書き込み系の操作もできます。
またプロンプトに「書き込んで」という指示を出さなくても書き込もうとするシーンがいくつか見られました。 PAT で適切な権限のみを与えるように注意しましょう。
例: プルリクエストをレビューしてもらう
投入したプロンプト
search_issues を利用して、プルリクエストの内容を取得し考察し、 get_file_contents を使って変更されたファイルをすべてレビューしてください。 レビューされている内容についても精査してよりよい改善があれば教えてください。 - repo: [リポジトリ名] - owner: [オーナー名] - pull_number: [PR番号]
LLM の応答
了解です!プルリクエストの内容を確認して、詳しくレビューしていきますね。 まずはPRの内容を取得してみましょう。 なるほど!これはダッシュボードへのアクセスを追加する プルリクエストですね。変更されたファイルを確認してみましょう。 変更内容を正確に確認するために、プルリクエストの詳細な情報を見てみましょう。 説明から、主な変更点は以下のようですね: 1. 👨💻 **アクセス設定の追加** - ダッシュボードへのアクセスがOIDC認証を使って可能になりました - アクセスURL: [リダイレクト先URL] 2. 🛠️ **インフラ構成の変更** - ロードバランサーのリスナールールの追加 - 新しいターゲットグループの設定 - セキュリティグループでのポート80許可 - カスタムドメインの設定 - DNSとSSL証明書の設定 (以下省略)
プルリクエストを簡潔に説明してもらえるのは、プルリクエストの規模が大きいときや、はじめてのリポジトリに対しては非常に有用だと考えました。
ちょっとした疑問を LLM と社内の有識者に聞き分けることができることで、リポジトリの理解がより深まると感じました。
LLM だけに頼りっきりになるのではなく、自分と有識者の知識も活用しながら、それぞれの得意分野を分担することで最高のパフォーマンスがだせるという考えにいたりました。
まとめ
今回は、 MCP について記事を書いてみました。
いろいろな情報をインターネットから取得することによって、簡単に最新の情報や社内にしかない情報を集めて LLM に処理させることができます。
SaaS との連携が可能になることで、その可能性は広がっていきそうです。
今回記事には書きませんでしたが、 Slak の投稿から JIRA のチケットを作成したり、 GitHub のプルリクエストから JIRA のチケットを参照させると言ったことも可能でした。
複数の SaaS の情報を一堂に会して LLM で処理してもらうのは、たいへん魅力的に感じました。
これからもできることが増えていくことが予想される技術ですね。
たとえば、以下の 2 点はすぐにでも実践したいと考えています。
- 社内で運用している文書共有システム用の MCP サーバーを作成する
- 運用モニタリングツールなど、SRE と関連が深いサービスとの連携
今後も LLM や MCP の進化をしっかりと追っていき業務に活かしたいです。
弁護士ドットコムではいろいろなポジションのエンジニアを募集をしています。 ぜひ一緒に働いてみませんか。ご応募をお待ちしております。