My First MCP Server について
SSE ベースのサーバーを構築する開発者向けの、Express と Node.js による MCP サーバーテンプレートです。外部 HTTP API を使うネットワーク確認とユーザー操作のツール例を備えています。
主な機能
- 01SSE と HTTP エンドポイント
- 02ネットワーク・API 状態確認ツール
- 03ユーザー取得・作成ツール
- 04拡張可能なツールモジュール
活用シーン
- 01Express ベースの MCP サーバーの開始
- 02API の状態とユーザー操作の公開
- 03サンプルツールの別ドメインへの適用
MCP 対応
`GET /sse` で SSE 経由の MCP ツールを公開し、`POST /messages` でメッセージを受け付けます。MCP クライアントは SSE エンドポイントに接続し、メッセージエンドポイントへツール要求を送ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
はじめての SSE MCP サーバー
Model Context Protocol (MCP) に基づくサンプルサーバーです。HTTP + Server-Sent Events (SSE) を介してツールを公開し、ローカルのユーザー API およびステータス API と連携します。
このリポジトリは、Express + SSE に基づく Node 用の MCP サーバーをさらに作成するためのテンプレート/ボイラープレートとして設計されています。このプロジェクトをクローンし、名前を変更して、サンプルツールを独自のドメインや API に合わせて調整することを想定しています。
目次
🇪🇸 スペイン語ドキュメント
概要
myfirstmcpserver は、次の機能を備えた MCP サーバーです。
- Express を使用して、SSE エンドポイント(
GET /sse)と HTTP エンドポイント(POST /messages)を公開します。 - MCP ツールを登録するために、公式 SDK
@modelcontextprotocol/sdkを使用します。 - ネットワークおよびユーザー操作のため、外部 HTTP API(デフォルトは
http://localhost:3001)に接続します。
技術的な詳細については、内部仕様書 docs/spec.md を参照してください。
主な機能
- SSE トランスポート:MCP SDK の
SSEServerTransportに基づく統合です。 - ドメイン別のグループ化:
networkTools:API の接続性とステータスに関連するツールです。userTools:外部 API を介してユーザーを一覧表示および作成するツールです。
- 拡張しやすい設計:新しいツールグループや操作を簡単に追加できます。
注:リポジトリ名は STDIO に言及していますが、このテンプレートは純粋な STDIO ではなく、Express + SSE に基づいています。
このテンプレートの使用方法
- このリポジトリをクローンするか、GitHub の template として使用します。
- 必要に応じて、
package.jsonのパッケージ名と説明を変更します。 - 必要に応じて、
src/config/server.jsのMcpServerのnameを変更します。 - 次のファイルにあるサンプルツールを調整または削除します。
src/tools/networkTools.jssrc/tools/userTools.js独自のドメインに合わせて、同じパターンで新しいinitializeXToolsモジュールを作成します。
- 環境変数
API_BASE_URLを設定して、実際の API を指定します。 - 新しいプロジェクトに合わせて、
README.mdとdocs/spec.mdのドキュメントを調整します。
要件
- Node.js ≥ 18(Node のネイティブ
fetchを使用します)。 - npm(パッケージマネージャー)。
インストール
プロジェクトのルートから実行します。
npm install
実行
- 開発モード(
nodemonを使用):
npm run dev
- 通常モード:
npm start
デフォルトでは、サーバーは http://localhost:3000 で起動します。SSE エンドポイントは次のとおりです。
GET http://localhost:3000/sse
MCP メッセージエンドポイントは次のとおりです。
POST http://localhost:3000/messages
MCP クライアントでの使用
このサーバーは、SDK で定義されている SSE トランスポート(SSEServerTransport)をサポートするMCP クライアントから利用することを想定しています。
一般的に、クライアントは次の操作を行います。
GET /sseに対して SSE 接続を開きます。- MCP リクエスト(ツール)を JSON 形式で
POST /messagesに送信します。
外部 SSE エンドポイントの設定方法については、使用する MCP クライアントのドキュメントを参照してください。
利用可能な MCP ツール
ツールは McpServer のインスタンスに登録され、詳しい説明は docs/spec.md に記載されています。概要は次のとおりです。
- 🔗 ネットワークツール(
src/tools/networkTools.js):ping({ url }):fetch(url)を実行し、ステータスコードまたはエラーを返します。apiStatus():http://localhost:3001/statusを呼び出し、ステータスの JSON を返します。
- 👤 ユーザーツール(
src/tools/userTools.js):getUsers():http://localhost:3001/usersからユーザー一覧を取得します。createUser({ name, email }):名前と姓を分けて新しいユーザーを作成し、POSTをhttp://localhost:3001/usersに送信します。
外部 API
このプロジェクトには、http://localhost:3001 の外部 API の実装は含まれていません。
この API を利用するだけです。少なくとも次のサービスが存在することを想定しています。
GET /status— ステータス情報を返します。GET /users— ユーザーの配列を返します。POST /users— 適切な JSON ボディを指定して、新しいユーザーを作成します。
データ構造の例については、docs/spec.md を参照してください。
🇬🇧 英語のドキュメント
概要
myfirstmcpserver は、次の機能を備えた**Model Context Protocol(MCP)**サーバーです。
- Express を使用して、SSE エンドポイント(
GET /sse)と HTTP エンドポイント(POST /messages)を公開します。 - 公式の
@modelcontextprotocol/sdkを使用して、MCP ツールを登録します。 - 外部 HTTP API(デフォルトでは
http://localhost:3001)に接続して、ネットワークやユーザーに関する操作を行います。
技術的な詳細については、docs/spec.md の内部仕様を確認してください。
機能
- SDK の
SSEServerTransportを使用した SSE トランスポート。 - ドメイン別のツールグループ化:
networkTools:接続性と API のヘルスチェック。userTools:外部 API を介したユーザーの一覧表示と作成。
- 拡張しやすい設計:新しいツールグループや操作を簡単に追加できます。
注:リポジトリ名に STDIO とありますが、このテンプレートは純粋な STDIO トランスポートではなく、 Express + SSE を使用しています。
このテンプレートの使い方
- このリポジトリをクローンするか、GitHub で テンプレート として使用します。
- 必要に応じて、
package.jsonのパッケージのnameとdescriptionを更新します。 - 必要に応じて、
src/config/server.jsのMcpServerのnameを変更します。 - 次のファイルにあるサンプルツールを調整または削除し、
src/tools/networkTools.jssrc/tools/userTools.js同じパターンに従って新しいinitializeXToolsモジュールを作成します。
API_BASE_URL環境変数を、実際の API を指すように設定します。- 実際のプロジェクトの内容を説明するように、この
README.mdとdocs/spec.mdを調整します。
必要条件
- Node.js ≥ 18(Node.js 組み込みの
fetchを使用します)。 - パッケージマネージャーとして npm。
セットアップ
プロジェクトのルートから実行します。
npm install
実行
- 開発モード(
nodemonを使用):
npm run dev
- 通常モード:
npm start
デフォルトでは、サーバーは http://localhost:3000 でリッスンします。主なエンドポイントは次のとおりです。
GET http://localhost:3000/sse— MCP 用の SSE エンドポイント。POST http://localhost:3000/messages— MCP メッセージ用のエンドポイント。
MCP クライアントからの利用
このサーバーは、SDK で実装されている SSE トランスポートに対応した MCP クライアントからの利用を想定しています。
一般に、クライアントは次の操作を行います。
GET /sseで SSE 接続を開きます。- MCP ツールのリクエストを JSON として
POST /messagesに送信します。
外部の SSE MCP サーバーを指定するための正確な設定形式については、お使いの MCP クライアントのドキュメントを参照してください。
利用可能な MCP ツール
ツールは McpServer インスタンスに登録されています。詳しくは docs/spec.md を参照してください。
概要は次のとおりです。
- 🔗 ネットワークツール(
src/tools/networkTools.js):ping({ url }):fetch(url)を実行し、HTTP ステータスコードまたはエラーを返します。apiStatus():http://localhost:3001/statusを呼び出し、ステータス JSON を返します。
- 👤 ユーザーツール(
src/tools/userTools.js):getUsers():http://localhost:3001/usersからユーザー一覧を取得します。createUser({ name, email }):フルネームを姓と名に分割し、POSTをhttp://localhost:3001/usersに送信して新しいユーザーを作成します。
外部 API
このプロジェクトには、http://localhost:3001 の外部 API の実装は含まれていません。
この API を利用するだけです。少なくとも次のサービスが存在することを想定しています。
GET /status— 一般的なステータス情報を返します。GET /users— ユーザーの配列を返します。POST /users— 適切な JSON ボディを指定して、新しいユーザーを作成します。
リクエストデータの例は docs/spec.md にあります。
作成者:Enrique Rodriguez Vela
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。