【丁寧解説】結局MCPサーバーって何?Cursorで活躍する機能でもあります
あなたは「MCPサーバー」という言葉を耳にしたことはありますか?Cursor(AI開発エディタ)でつい最近追加された機能の1つでAIサービスのClaudeでも提供されている機能です。
MCPサーバーとは、ユーザーが使いたい外部の機能(ツール)をまとめて提供する“窓口”のような存在です。たとえば、ローカルファイルの検索やYouTubeの情報取得、天気APIの問い合わせなど、複数のツールをひとつの仕組みで扱えるメリットがあります。
Cursorなどのチャットツールと連携して柔軟に活用できるため、開発者やクリエイターにとって欠かせない機能になりつつあるのです。本記事では、MCPサーバーの基本的な仕組みから具体的な活用方法までをわかりやすく解説します。
動画で見たい方はYoutubeでも解説しているのでよかったらどうぞ
MCPサーバーとは?
MCPの3つの要素
MCPは、大きく以下の3つの要素から成り立ちます。以下の画像をみていただくのが早いです。
MCPホスト (MCP Host)
例:Claude Desktop、Cursor、独自のチャットインターフェイスなど
ユーザーとのやり取りを行う“窓口”です。ここにユーザーが指示を入力すると、ホストはその指示を解析し、必要に応じて外部ツールの呼び出しを行います。
MCPサーバー (MCP Server)
軽量なプログラムの形で、必要な「ツール」を提供します。たとえば「SQLiteにアクセスする」「YouTubeを検索する」「天気APIを叩く」など、複数のツールを集約して提供することができます。
「ツールの一覧」や「具体的なツールの呼び出し方」「ツール実行結果」などを、MCPの定める形式でやりとりします。
やりたいタスクのまとまりのWebサーバーみたいなもんです。
ツール (Tools)
MCPサーバーが保持している個々の機能のこと。例えば“SQLite検索ツール”や“YouTube検索ツール”、“画像生成ツール”など。MCPサーバーに “ツール名 + 必要なパラメータ” を送ると、対応する処理を実行して結果を返す仕組みです。
なぜ「サーバー」という呼び方なのか?
一言でいうと、クライアント=ホスト(LLMが動いているアプリ)からの要求を受け取って処理を行う“提供者”だから です。通常のWebサーバーと同じように、
「(例) tools/call エンドポイントにツール名「youtube-search」とクエリパラメータを送ると、サーバーはYouTube検索を実行し、結果を返す。」
というやりとりが行われます。
MCPが解決する課題
ツールやAPIの仕様を共通化できる
LLMが外部ツールを使おうとするとき、
- ツール名は何か?
- どんなパラメータ(引数)が必要か?
- どんな結果が返ってくるのか?
といった情報を事前に把握しておく必要があります。MCPでは「tools/list というエンドポイントを用意し、利用可能なツールをリストアップする」仕組みを標準化しています。LLMは「あるMCPサーバーに繋いだら、まず tools/list を見にいけばOK」というルールを使い回せるわけです。
プラットフォーム(Claude, ChatGPT, Cursorなど)が違っても再利用しやすい
MCPはオープンプロトコルなので、Claude専用、ChatGPT専用といった縛りがありません。
「今はClaude向けにMCPサーバーを作ったけど、後からCursorでも使いたい」
「Cursorで同じツールを呼び出したい」
といった場合でも、サーバー側に共通のMCPプロトコルがあるため、実装を流用できます。
セキュリティ上の枠組みを定めやすい
外部ツールを呼び出すときに「このツール、本当に安全?」といった疑念がつきまといます。MCPホストでは、ユーザーへ「このツールの呼び出しを許可しますか?」といった実行許可を取る仕組みを備えることができます。
また、LLMとサーバーの間で通信できる範囲をあらかじめ絞ることで、不要な危険操作を防ぎやすくなります。
具体例:SQLiteデータベースと連携
実際にMCPサーバーの活用例として、一番よく挙げられるのが「ローカルのSQLiteデータベースとの連携」です。
例えば下記の手順で流れをイメージできます:
-
MCPホスト(Claude Desktopなど)
ユーザーが「この商品の価格を教えて」「今日最も売れた商品は何?」といった質問をする。 -
ホストは自然言語を解析し、適切な“ツール”を見つける。SQLiteに関するツールが必要そうだ、と判断して「tools/call」エンドポイントでツール呼び出しを行う。
-
MCPサーバー
受け取ったツール呼び出しリクエスト(例:名前:top-selling, 引数:日付や数など)をもとに実際のSQLiteデータベースを操作し、結果を返す。 -
ホストが結果を整形してユーザーに返す
「本日の売上トップ商品は〇〇です!」と会話形式で表示。
このように、MCPサーバーは「SQLiteツール」を提供する“窓口” になり、ホストは自然言語→データベース操作への変換を安全かつ標準的に行えるようになります。
CursorなどからMCPサーバーにアクセスする仕組み
1. MCPサーバーを起動
上記URLはSlackのMCPサーバーのサンプルですが、大体
Usage with Claude Desktop
Add the following to your claude_desktop_config.json:
npx
{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
docker
{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_BOT_TOKEN",
"-e",
"SLACK_TEAM_ID",
"mcp/slack"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
とかいてあります。上記であればdockerで立ち上げるかnpxでサーバーを立ち上げることになるでしょう。
今回私は、npxで立ち上げます
npx -y @modelcontextprotocol/server-slack
2. MCPホストの設定にサーバーを登録する
今回はcursorの例を出します。
詳しい設定は以下の通り。私の場合は
- 使いたいmcpサーバーのディレクトリで、以下の画像に登録するコマンドを打ち込みサーバーを起動している
その後以下の画像のようにサーバー登録をする
うまく連携できるとグリーンランプがつく
3. Cursorで使ってみる
どうやら現在はCursorのComposer/agentモードのみで対応してそうだった。
まとめ
- MCP (Model Context Protocol) は、LLM(大規模言語モデル)と外部ツール・データベース・APIなどを連携するための オープンプロトコル です。
- MCPを使うと、ホスト(LLMアプリ) と サーバー(ツール集合) の役割分担が明確になり、
ツールの一覧・仕様を標準的にやりとりできる - エージェント機能を複数のプラットフォーム間で再利用しやすい
- ツール呼び出し時にユーザーへ明示的に承認を求めるなど、安全な設計を行いやすい
といったメリットがあります。
具体的には「SQLite」「YouTube検索」「天気情報取得」など、あらゆるAPIやローカルリソースがMCPサーバーとして実装可能です。
ClaudeやChatGPT、CursorなどのLLMアプリ(MCPホスト)からは、会話の文脈に応じて自動的に適切なツールを呼び出し、結果をまた自然言語に整形してユーザーへ返すことが可能になります。
エンジニア・非エンジニア問わず、LLMを拡張したアプリを作りたい場合に、MCPサーバーを導入することで応用の幅がぐんと広がる はずです。ぜひMCPを活用し、AIエージェントの開発を楽しんでみてください
[筆者の感想]パーソナルAIエージェントを作る時代が来れば、MCPをゴリゴリ作りこんだりするのでしょうか(笑) SlackやGmailなどのMCPサーバーのサンプルもありましたし、色々なコードを参考にして、MCPサーバーを作ると便利かもしれませんね。このMCPサーバーの考え方はAIエージェントの概念を理解するにはとても良い教材だと思いますのでぜひやってみることをおすすめします。
ここまでお付き合いいただき、ありがとうございます。今後もAI分野の新しい活用方法や開発テクニックを、X(旧Twitter)やYoutubeでいち早く紹介していきます。少しでも興味があれば、ぜひフォローして最新情報をチェックしてくださいね!👇
Discussion