5 分で独自のモデル コンテキスト プロトコル (MCP) を作成する - ステップバイステップ ガイド
モデル コンテキスト プロトコル (MCP) の明確な説明
モデル コンテキスト プロトコル (略して MCP) は、AI を外部 API、ライブデータなどに接続するための標準化されたプロトコルです。これは、2024 年末に Anthropic によって導入されました。
MCP サーバーは、AI エージェントが現在のタスクにツールが役立つと判断したときに自律的に呼び出すことができるツール (天気データの取得、テキストの翻訳、API との対話など) と考えてください。
たとえば、当社の Upstash MCP を使用すると、Cursor がデータベースと対話できるようになります。これは、通常の Claude が単独では決して実行できないことです。 MCP がこれらのリクエストを実際のデータベース操作に変換するため、「XYZ を Redis データベースに入れる」などの単純な自然言語コマンドが可能になります。
モデル コンテキスト プロトコル (MCP) の例
MCP のリリース以来、人々はあちこちでクリエイティブなユースケースを考案してきました。これらはカーソルとコーディングに限定されるものではありません。自分で作成するには何時間もかかるような、Blender での複雑なアニメーション シーンはありませんか? MCP 経由でクロードに Blender へのアクセスを許可するだけです:

私にとって、モデル コンテキスト プロトコルは、AI にインターネットへのアクセスを許可した後の次のステップのように感じられます。比喩的な意味で、インターネット アクセスが AI に(実際に何かをさせるために)腕と手を与えることに似ているとすれば、MCP は AI に歩くための足を与えるようなものです。
ところで、MCP サーバーを構築できるのは、選ばれた企業や人に限定されるわけではありません。 誰でも独自の MCP を中心に SaaS を作成、ホスト、さらには構築することができます - その方法を見てみましょう。
基本的な MCP サーバーを構築する方法
非常に単純な MCP の例を見てみましょう。 Cursor がツールを使用してテキストを翻訳できるようにする翻訳 MCP を構築するとします。必要なのは、この MCP を提供するサーバーと、必要なことを実行するためのツールだけです。
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const server = new McpServer({
name: "Translation Service",
version: "1.0.0",
});
server.tool(
"translate",
{
text: z.string(),
targetLanguage: z.enum(["spanish", "french", "german"]),
},
async ({ text, targetLanguage }) => {
// 👉 Here, you'd make an API call to a translation service
const translatedText = `[Translated: "${text}" to ${targetLanguage}]`;
return {
content: [{ type: "text", text: translatedText }],
};
},
); 上記のコードは、モデル コンテキスト プロトコル (MCP) の基本原理を示しています。私たちは、クロードがプログラムで操作できる翻訳サービスを作成しています。
translate というツールを定義します。 受け入れるパラメータを指定する Zod スキーマを使用します。
text文字列としてtargetLanguage文字列として (スペイン語、フランス語、またはドイツ語に限定)
AI アシスタントがこのツールを呼び出すと、Zod (オープンソースのスキーマ検証ライブラリ) によって適用された必須パラメーターが渡され、関数がそれらを処理します。本番環境では、プレースホルダ翻訳を、DeepL や Google 翻訳などのサービスへの実際の API 呼び出しに置き換えます。
content: [{ type: "text", text: translatedText }], の応答形式 は MCP ツール仕様に従い、クロードが応答に使用できる構造体を返します。この標準化されたアプローチにより、カスタム統合作業を行うことなく、MCP 準拠の AI がツールを使用できるようになります。
どのタイプのツールでも同じパターンが機能します - 翻訳からデータ分析、画像生成、さらにはスマート ホーム デバイスの制御まで。
MCP サーバーの実行とカーソルによるテスト
ここで、MCP サーバーを起動するために、transport を使用します。 :
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "Translation Service",
version: "1.0.0",
});
server.tool(/* ... */);
const transport = new StdioServerTransport();
server.connect(transport); このようにして、独自の MCP サーバーを作成しました。 🎉
index.ts へのパスをコピーすることで、新しい MCP をローカルでテストできます。 ファイルを作成し、それを Cursor に接続します。カーソルを使用すると、MCP サーバーを追加して「エージェント」モードを改善できます。
index.ts > Copy Path を右クリックします。 。これは後で必要になります。Cursor Settings > Features > MCP に移動します。 + Add New MCP Server をクリックします。 。

type のままにしてください command として .Translation)。 .npx tsx <path-to-file> 。

カーソルが MCP サーバーと利用可能なすべてのツールを認識するようになりました。私たちにとって、これは translate です。 私たちが作成したツールです。

試してみるには、エージェント チャットを開きます。カーソルは私たちのツールを認識し、それを翻訳タスクに自動的に使用します。
注:この例では、ツールは実際には翻訳しているのではなく、翻訳を模擬しています。クロードは実際の翻訳で応答します。

その他の MCP の使用例
この記事を書いているときに、MCP サーバーを構築するためのアイデアをいくつか思いつきました。これらの中には、スタンドアロン サービスとして収益化することが合理的な場合もあります。
- MCP コードのスクリーンショット ツール
- 世代のベスト プラクティス、脆弱性、バグをチェックする MCP ツール
- MCP テスト ジェネレーター
あなたもきっと自分なりのアイデアを思いつくことができるでしょう。結局のところ、MCP は LLM 用の API を構築するだけのような気がします。
アップスタッシュ MCP
当社は、自然言語を使用して Upstash アカウントとやり取りするための独自のオープンソース Upstash MCP を提供しています。例:
- 「us-east-1 に新しい Redis データベースを作成する」
- 「データベースをリストする」
- 「users-db 内の「user:」で始まるすべてのキーを表示します」
- 「バックアップを作成する」
- 「過去 7 日間のスループットのスパイクを表示してください」
次のコマンドをカーソルの Add MCP Server に貼り付けるだけです。 :
npx -y @upstash/mcp-server run <UPSTASH_EMAIL> <UPSTASH_API_KEY> セットアップにかかる時間は 60 秒以内です。詳細については、こちらをご覧ください:https://github.com/upstash/mcp-server
読んで乾杯!フィードバックがある場合、または Upstash のゲスト著者になりたい場合は、josh@upstash.com までご連絡ください。 🙌
-
Node.js、Socket.IO、Redis を使用してスケーラブルなリアルタイム マルチプレイヤー Tic-Tac-Toe ゲームを作成する
このチュートリアルでは、リアルタイム マルチプレイヤー 三目並べ ゲームを構築します。 Node.js を使用する 、Socket.IO 、 そしてRedis 。このゲームでは、2 人のプレーヤーが異なるブラウザ タブから接続し、交代でプレイし、プレイ中にリアルタイムの更新を確認できます。 Redis を使用します。 複数の WebSocket サーバー間でのゲーム ステートの同期を管理し、アプリケーションをスケーラブルにします。 最終的には、リアルタイム機能を備えた完全に機能するゲームが完成し、WebSocket と Redis を使用してスケーラブルなリアルタイム アプリケーションを構築
-
Upstash Redis を使用して Laravel セッション管理を強化する
HTTP はステートレス プロトコルです。つまり、サーバーに対して行われるすべてのリクエストは独立しており、以前のリクエストの情報は保持されません。これは、認証資格情報やユーザー設定などのユーザー固有のデータを複数のリクエストにわたって保存する必要がある動的 Web アプリケーションを構築する場合に課題になる可能性があります。この制限を克服するために、Web アプリケーションはセッションに依存してリクエスト間のデータの保存と取得を行います。 最も人気のある PHP フレームワークの 1 つである Laravel は、このようなステートフルなニーズに対応する柔軟で堅牢なセッション管理システムを