【Model Context Protocol】Claudeが全てのアプリと繋がる!?SlackやGitHubと連携してみた
2024/11/26、Anthropicから新たなAIツールがリリースされました!
新たにリリースされた「Model Context Protocol(MCP)」はAIシステムをデータソースやツールと連携させるための新しいオープンスタンダードです。
つまりMCPを使うことで、AIシステムがGoogle DriveやSlack、GitHub、Postgresなどの複数のデータやツールと共通の標準プロトコルで連携可能になるということです。
- Anthropicが開発したGoogle Drive、Slack、GitHub、Postgresなどのデータソースやツールを効率的に連携させる仕組み
- 普遍性とオープン性、双方向接続、安全性、拡張性の4つを備える
- 従来の個別API開発の手間を省き、統一されたプロトコルで接続可能
- サービス間の文脈を維持しながら効率的にデータを扱える点が魅力
本記事では、Anthropicの新しいツールであるMCPについてどういったものなのかを解説し、活用例を紹介していきます。
ぜひ最後までお読みください!
Model Context Protocolの概要
Model Context Protocol(MCP)はさまざまなWebサービスやアプリなどを繋ぐための技術です。
これまではAIサービスとWebサービスやツールと連携するたびに、それぞれの専用コネクターやAPIを開発する必要がありました。また、各サービスの仕様変更に応じてアップデートが必要であったり、サービス間でデータや文脈の一貫性を保つのも困難でした。
しかし、MCPが登場したことにより、AIサービスとAサービス、Bサービス、さらには他のサービスとの連携が統一的かつ効率的に行えるようになります。
AIツールがSlackでメッセージを読み取り、別途Google Driveからデータを取得し、さらにGitHubでタスクを作成する場合、それぞれに個別のコネクターが必要だった。
Model Context Protocolの開発背景
これまでAIサービスとそのほかのサービスを連携したことがある方は、それぞれのサービスに応じて連携を行わなければいけない、という煩わしさを感じていたかと思います。
個別に連携する必要があったのは、AIサービスがそれぞれのデータすべてにアクセスすることができなかったことが要因として挙げられます。
AIサービスの普及に伴い、AIモデルの機能向上に多額の投資が行われ、推論能力と品質が急速に向上しています。 しかし、どれだけ高度なモデルであっても、バラバラのシステムや古い仕組みの中にあるデータにはアクセスできず、活用が難しい状態でした。
そこで、MCPの登場です。
MCPはAIサービスとデータソースを接続するための、オープンスタンダードを提供することで、バラバラのシステムや古い仕組みの中にあるデータを統合し、AIツールが必要なデータにアクセスするための、より持続可能で信頼性の高い方法に置き換えます。
Model Context Protocolのメリット
MCPのメリットは、これまで必要だったデータソースごとの個別のコネクターを維持する手間を省き、標準化されたプロトコルに基づいてシステムを構築できる点です。
また、エコシステムが成熟するにつれて、AIサービスはさまざまなツールやデータセット間を移動する際にも文脈を維持しやすくなり、これまでのように分断された統合方式をより持続可能で一貫性のあるアーキテクチャへと置き換えることができます。
Model Context Protocolの特徴
MCPの特徴は4つあります。
- 普遍性とオープン性
- 双方向接続
- 安全性
- 拡張性
まず1つ目の特徴が普遍性とオープン性です。
MCPは、AIサービスとデータソースを接続するための汎用的でオープンスタンダードを提供しています。この仕組みにより、特定のデータソースに依存せず、さまざまな環境で柔軟に接続することが可能です。
2つ目の特徴は、双方向接続の機能です。
開発者は、MCPサーバーを通じてデータを公開することも、これらのサーバーに接続するAIサービス(MCPクライアント)を構築することも可能です。これにより、AIサービスがデータを取得するだけでなく、必要に応じてデータを書き込むこともできます。
3つ目の特徴が安全性です。
MCPは、AIサービスがデータに安全にアクセスできるように設計されています。アクセス制御やセキュリティ機能が組み込まれており、機密性の高いデータも安心して利用できる仕組みが整っています。
最後の特徴が拡張性です。
MCPは、新しいデータソースやAIサービスへの対応が可能で、エコシステムが成長するにつれて、さらに多くのデータソースやAIサービスがMCPをサポートします。
Model Context Protocolのサーバー
MCPサーバーは、AIサービス(MCPクライアント)と、各種データソース(Google Drive、Slack、Postgresなど)の間でデータをやり取りするための仲介役です。
異なるデータソース間の連携を標準化された方法で実現するため、複数のサービスを一貫した形で接続できます。
AnthropicのGitHubで紹介されているのは、以下のサーバーです。
- Filesystem:設定可能なアクセス制御による安全なファイル操作
- GitHub :リポジトリ管理、ファイル操作、GitHub API統合
- Google Drive:Google Driveのファイルアクセスと検索機能
- PostgreSQL :スキーマ検査による読み取り専用データベースアクセス
- Slack :チャネル管理とメッセージング機能
- Memory :知識グラフベースの永続記憶システム
- Puppeteer:ブラウザの自動化とウェブスクレイピング
- Brave Search:Braveの検索APIを使ったウェブ検索とローカル検索
- Google Maps:位置情報サービス、道順、場所の詳細
- Fetch:効率的なLLM利用のためのウェブコンテンツの取得と変換
Model Context Protocolのライセンス
MCPはMITライセンスです。そのため、基本的には商用利用や改変などを行うこよができますが、元の著作権表示を行う必要があります。
また、特許使用に関してはMITライセンスには明記されていないため、特許使用を行う場合にはAnthropicに確認をするのがいいでしょう。
利用用途 | 可否 |
---|---|
商用利用 | ⭕️ |
改変 | ⭕️ |
配布 | ⭕️ |
特許使用 | 不明 |
私的使用 | ⭕️ |
なお、複数エージェントを管理するMulti-Agent Orchestratorについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
Model Context Protocolの使い方
MCPを使うためには、MCPサーバーとMCPクライアント、Claude Desktopが必要です。
Claude Desktopをまだダウンロードしていない場合には、こちらからダウンロードをしておきます。
また、MCPサーバーとClaudeを接続するためには、デスクトップアプリのjsonファイルにMCPサーバーの情報を追記する必要があります。jsonファイルはデスクトップアプリから開けます。
Model Context Protocolのクイックスタート
MCPのクイックスタートを行なっていきます。
まずは必要なライブラリをインストール。基本的にはMacであればすべてターミナルで完了します。
brew install uv git sqlite3
続いてデータベースを作成します。
sqlite3 ~/test.db
test.dbの中身はこちら
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT,
price REAL
);
INSERT INTO products (name, price) VALUES
('Widget', 19.99),
('Gadget', 29.99),
('Gizmo', 39.99),
('Smart Watch', 199.99),
('Wireless Earbuds', 89.99),
('Portable Charger', 24.99),
('Bluetooth Speaker', 79.99),
('Phone Stand', 15.99),
('Laptop Sleeve', 34.99),
('Mini Drone', 299.99),
('LED Desk Lamp', 45.99),
('Keyboard', 129.99),
('Mouse Pad', 12.99),
('USB Hub', 49.99),
('Webcam', 69.99),
('Screen Protector', 9.99),
('Travel Adapter', 27.99),
('Gaming Headset', 159.99),
('Fitness Tracker', 119.99),
('Portable SSD', 179.99);
入力したら適切にテーブルが作成されているかを確認しておきましょう。適切に作成されていれば、作成されたproductsテーブルが一覧に表示されるはずです。
.tables
データも確認します。
SELECT * FROM products;
これでデータが表示されていればOKです。test.dbのパス名をコピペして、デスクトップアプリのjsonファイルにMCPサーバーの情報を追記します。
jsonファイルの中身はこちら
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
}
}
}
「/Users/YOUR_USERNAME/test.db」をコピペしたパス名に変更し、Claudeのデスクトップアプリを再起動します。
MCPサーバーが適切に接続されていたら、画像のようなマークが表示されます。
接続が確認できたら「test.db」の中身を表示してください。とプロンプトを与えます。そうすると、画像のように接続許可の確認をされるので、許可をしましょう。
許可をすると、出力されます。
出力された結果はこちら
SQLiteデータベースの内容を確認するために、まず利用可能なテーブルの一覧を取得してみましょう。
productsテーブルが存在することがわかりました。このテーブルのスキーマを確認してみましょう。
productsテーブルには以下のカラムがあります:
- id (INTEGER): 主キー
- name (TEXT): 商品名
- price (REAL): 価格
では、テーブルの内容を確認してみましょう。
データベースには20個の製品が登録されており、それぞれにID、商品名、価格が設定されています。価格帯は$9.99から$299.99まで様々で、主にテクノロジー関連の商品が登録されているようです。
製品の種類としては:
- スマートウォッチ、イヤホン、スピーカーなどのオーディオ機器
- キーボード、マウスパッド、USBハブなどのPC周辺機器
- ポータブルSSD、充電器などのアクセサリー
- ドローン、ゲーミングヘッドセットなどのハイテク製品
が含まれています。
これでクイックスタートは完了です。
Model Context Protocolで何ができるかを検証
GitHubと連携
まずはGitHubの操作を行います。MCPサーバーでGitHubの操作を行うためには、トークンが必要になるので事前に準備をしておきましょう。
また、GitHub MCPサーバーを作成するには、Node.jsが必要なので、公式サイトからダウンロードしてこちらも準備をしておきます。
Node.jsとアクセストークンの準備ができたら、MCPサーバーを立ち上げます。
GITHUB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN> npx -y @modelcontextprotocol/server-github
適切にサーバーが動けば以下のように表示されます。
GitHub MCP server is now running...
Listening on port 5000...
もしくはこちら。
GitHub MCP Server running on stdio
ここまできたらあとはjsonファイルに以下を追記すればOKです。
jsonファイルの追記内容はこちら
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
jsonファイルに追記をしたらClaudeデスクトップアプリを再起動して、プロンプトを送信しましょう。
「Githubのリポジトリ一覧を表示して」とプロンプトを送った結果が以下です。
プロンプト一覧の結果はこちら
GitHubのリポジトリを検索してみましょう。デフォルトの検索で人気のあるリポジトリを表示します。
GitHubで最も人気のあるリポジトリのトップ10を表示しました。主なリポジトリを簡単に説明します:
1. freeCodeCamp/freeCodeCamp - プログラミングを無料で学べるプラットフォームのコードベース
2. EbookFoundation/free-programming-books - 無料のプログラミング関連書籍のリスト
3. sindresorhus/awesome - 様々な技術トピックに関する厳選されたリソース集
4. public-apis/public-apis - 無料で使えるAPIのまとめ
5. codecrafters-io/build-your-own-x - 様々な技術を一から作って学ぶプロジェクト
6. jwasham/coding-interview-university - ソフトウェアエンジニアになるための包括的な学習プラン
7. kamranahmedse/developer-roadmap - 開発者のキャリアロードマップとガイド
8. donnemartin/system-design-primer - システム設計の学習リソース
9. 996icu/996.ICU - 中国の労働環境に関する問題提起プロジェクト
10. facebook/react - Webアプリケーション開発のための人気フレームワーク
これらのリポジトリは主に学習リソース、技術ドキュメント、そして重要なソフトウェアプロジェクトで構成されています。特定のトピックやキーワードで検索することもできますが、何かお探しのものはありますか?
同じようにプロンプトで「test-repoという名前で新しいリポジトリを作って」「Hello,worldを表示する関数をPythonファイルで作成して」というプロンプトも忠実に実行できました。
作られた関数がこちら
def say_hello():
print("Hello, World!")
if __name__ == "__main__":
say_hello()
Slackと連携
次にSlack MCPサーバーを動かしていきます。Slack MCPサーバーを使うには、Slackの設定がいくつか必要です。
まずはSlack APIページにアクセスします。
「Generate Token」をクリック後、「From scratch」を選択。
画面向かって左にある「OAuth & Permission」を選択。
「Scopes」の「User Token Scopes」に以下のスコープを追加。
- channels:history – 公開チャンネルのメッセージやコンテンツを閲覧。
- channels:read – 基本的なチャンネル情報を閲覧。
- chat:write – アプリとしてメッセージを送信。
- reactions:write – メッセージに絵文字リアクションを追加。
- users:read – ユーザー情報を閲覧。
スコープの追加が終わったら、ページ上部に戻り「Install to チャンネル名」をクリックして、その後許可をクリック。
そうすると「User OAuth Token」が表示されるので、コピペしておきます。
また、ワークスペースのチームIDもコピペします。
Slack URLのTから始まる部分がチームIDです。
この二つが準備できたらOK。
ターミナルで以下を入力します。
SLACK_BOT_TOKEN=xoxb-your-bot-token SLACK_TEAM_ID=your_ID npx -y @modelcontextprotocol/server-slack
Slack MCPサーバーが起動すると、以下の文字が表示されます。
Starting Slack MCP Server...
Connecting server to transport...
Slack MCP Server running on stdio
そうしたらjsonファイルに追記をします。
jsonファイルの追記内容はこちら
{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "your_token",
"SLACK_TEAM_ID": "your_ID"
}
}
}
}
入力したらClaudeデスクトップアプリを再起動すればOKです。
「Slackから過去3日以内のメッセージを表示してください」とプロンプトを送った結果が以下です。
Slackの結果はこちら
申し訳ありませんが、特定の日付範囲でメッセージをフィルタリングする直接的な機能は提供されていないようです。ただし、チャンネルの最新のメッセージを取得することはできます。
まず、利用可能なチャンネルの一覧を取得してみましょう:
各チャンネルの最新メッセージを確認してみましょう。主要なチャンネルから順に見ていきます:
generalチャンネルには最近のメッセージがないようですので、論文管理チャンネルを確認してみましょう:
過去3日以内のメッセージを時系列順にまとめると、以下のような論文が共有されています:
1. 2024年11月24日:
- 人工股関節・膝関節置換術における単回投与vs延長抗生物質予防投与に関するメタ分析
2. 2024年11月22日:
- 人工膝関節全置換術後の術後痛に対する心理社会的介入の系統的レビュー
3. 2024年11月20日:
- 人工関節置換術後の合併症と関節周囲感染に対する前立腺肥大症の影響についてのメタ分析
各メッセージはボットによる論文の自動共有で、主に人工関節置換術に関連する最新の研究成果が共有されています。ほとんどのメッセージは、研究のタイトルとその要約または結論を含んでいます。
他のチャンネルも確認しましたが、最近3日以内の活発なメッセージのやり取りはこの「論文管理」チャンネルに集中しているようです。メッセージの内容は主に医学研究、特に整形外科領域の最新の系統的レビューとメタ分析に関するものです。
Googleマップと連携
最後にGoogle Maps MCPサーバーを実行します。
まずはGoogle maps APIを取得します。取得したAPIをコピペして、jsonファイルに追記します。
jsonファイルの追記はこちら
{
"mcpServers": {
"google-maps": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-google-maps"
],
"env": {
"GOOGLE_MAPS_API_KEY": "yourAPIkey"
}
}
}
}
そうしたらターミナルで以下のように入力。
GOOGLE_MAPS_API_KEY=your-api-key npx -y @modelcontextprotocol/server-google-maps
これでGoogle maps MCPサーバーが起動します。Claudeにアクセスして、プロンプトを送りましょう。
「mapで東京駅から札幌までの行き方を調べて」「東京駅で22時までやっている飲食店を探して」というプロンプトを送りました。
mapで東京駅から札幌までの行き方を調べての結果はこちら
東京駅から札幌までの経路を調べてみましょう。
申し訳ありません。Google Mapsの経路検索では東京駅から札幌駅までの公共交通機関での直接的な経路を表示できないようです。これは、長距離の移動であり、複数の交通手段を組み合わせる必要があるためだと思われます。
実際の移動方法としては、主に以下の2つの選択肢があります:
1. 飛行機での移動
- 東京駅から羽田空港または成田空港まで電車で移動
- 羽田空港/成田空港から新千歳空港まで飛行機で約1時間30分
- 新千歳空港から札幌駅まで快速エアポートで約40分
2. 新幹線と特急列車での移動
- 東京駅から新函館北斗駅まで北海道新幹線で約4時間
- 新函館北斗駅から札幌駅まで特急列車で約3時間30分
一般的には、時間を優先する場合は飛行機での移動がおすすめです。費用や景色を楽しみたい場合は、列車での移動も良い選択肢となります。
具体的な時刻表や料金については、各交通機関の公式ウェブサイトで最新の情報を確認することをお勧めします。
東京駅で22時までやっている飲食店を探してという結果はこちら
東京駅周辺の22時まで営業している飲食店を検索してみます。
検索結果から、東京駅周辺で夜遅くまで営業している主なレストランをご紹介します:
1. Station Restaurant The Central (東京駅構内)
- 場所:グランスタ東京地下
- 評価:4.0/5.0
2. THE OLD STATION Tokyo
- 場所:八重洲北口
- バーも併設
- 評価:3.7/5.0
3. Kisuke (キスケ)
- 場所:グランスタ八重北
- 評価:4.2/5.0
4. KITTE GRANCHE
- 場所:KITTE丸の内 B1F
- 評価:3.6/5.0
5. Tokyo Gourmet Zone (東京駅一番街)
- 場所:東京駅一番街
- 評価:3.9/5.0
より詳しい情報を知りたい店舗があれば、営業時間や料理のジャンルなどを確認することができます。また、これらの店舗の中で特に気になるものがありましたら、詳細情報を調べることができます。
ご希望の店舗をお選びいただければ、具体的な場所や詳細情報をお調べできます。
なお、プロンプトを自動修正してClaudeの性能を爆上げするPrompt Improverについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
まとめ
本記事では、Model Context Protocolの概要と具体的な使い方を紹介しました。使ってみた感じ、非常に便利だなと感じる一方で準備がやや煩雑だなという印象を持ちました。
まだまだリリースされたばかりの新しい技術です。今後の発展が非常に楽しみな技術でした!
最後に
いかがだったでしょうか?
Claudeと様々なアプリを連携させることで社内の生成AI利用を活発化させ、生産性を大幅に向上できるでしょう。
株式会社WEELは、自社・業務特化の効果が出るAIプロダクト開発が強みです!
開発実績として、
・新規事業室での「リサーチ」「分析」「事業計画検討」を70%自動化するAIエージェント
・社内お問い合わせの1次回答を自動化するRAG型のチャットボット
・過去事例や最新情報を加味して、10秒で記事のたたき台を作成できるAIプロダクト
・お客様からのメール対応の工数を80%削減したAIメール
・サーバーやAI PCを活用したオンプレでの生成AI活用
・生徒の感情や学習状況を踏まえ、勉強をアシストするAIアシスタント
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、大規模言語モデル(LLM)を対象に、言語理解能力、生成能力、応答速度の各側面について比較・検証した資料も配布しております。この機会にぜひご活用ください。