MCP Server Boilerplate について
MCP Server Boilerplate は、MCP サーバーを開発・拡張する開発者向けの TypeScript と Express によるテンプレートです。HTTP と stdio のトランスポートに加え、リソース、ツール、プロンプトのサンプルを含みます。
主な機能
- 01HTTP と stdio のトランスポート
- 02TypeScript と Express
- 03リソース・ツール・プロンプトのサンプル
- 04拡張可能なモジュール構成
活用シーン
- 01新しい MCP サーバープロジェクトの開始
- 02サーバーへの独自リソースやツールの追加
- 03HTTP または stdio モードでのサーバーテスト
MCP 対応
HTTP または stdio で MCP クライアントと通信する MCP サーバーを実装しており、リソース、ツール、プロンプトのサンプルを備えています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーのボイラープレート
TypeScript と Express で構築された、Model Context Protocol(MCP)に準拠するサーバーのボイラープレート実装です。
目次
概要
このプロジェクトは、アプリケーションが標準化された方法で LLM にコンテキストを提供できるようにする Model Context Protocol(MCP)に準拠するサーバーを実装しています。次の機能が含まれます。
- HTTP と stdio のトランスポートオプションを備えた、設定済みの MCP サーバー
- 主な機能を示すサンプルのリソース、ツール、プロンプト
- 型安全性と開発者エクスペリエンスを向上させる TypeScript サポート
- HTTP トランスポート層の Express 統合
プロジェクト構成
mcp-server-boilerplate/
├── .env # Environment variables
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── src/
│ ├── index.ts # Main HTTP server entry point
│ ├── stdio.ts # Stdio server entry point
│ ├── resources/ # MCP resources
│ │ ├── index.ts # Resource registration
│ │ ├── infoResource.ts # Static info resource
│ │ └── greetingResource.ts # Dynamic greeting resource
│ ├── tools/ # MCP tools
│ │ ├── index.ts # Tool registration
│ │ ├── calculatorTool.ts # Sample calculator tool
│ │ └── timestampTool.ts # Sample timestamp tool
│ └── prompts/ # MCP prompts
│ ├── index.ts # Prompt registration
│ ├── greetingPrompt.ts # Sample greeting prompt
│ └── analyzeDataPrompt.ts # Sample data analysis prompt
└── dist/ # Compiled JavaScript output
はじめに
前提条件
- Node.js(v18 以降)
- npm または yarn
インストール
リポジトリをクローンし、依存関係をインストールします。
git clone https://github.com/yourusername/mcp-server-boilerplate.git
cd mcp-server-boilerplate
npm install
環境変数
環境ファイルのサンプルをコピーし、必要に応じて変更します。
cp .env.example .env
使用可能な環境変数:
PORT:HTTP サーバーのポート(デフォルト:3000)NODE_ENV:環境モード(development、production)- OAuth 設定(必要な場合)
サーバーの実行
HTTP サーバー
HTTP サーバーをビルドして起動します。
npm run build
npm start
自動再起動を有効にして開発する場合:
npm run dev
サーバーは http://localhost:3000/mcp(または .env ファイルで指定したポート)で利用できます。
Stdio モード
stdio モードでサーバーを実行するには(コマンドラインツール向け):
npm run start:stdio
自動再起動を有効にして開発する場合:
npm run dev:stdio
リソース
このボイラープレートには、次のリソース例が含まれます。
-
静的情報リソース:
info://server- サーバーに関する基本情報を提供します
-
動的な挨拶リソース:
greeting://{name}- 指定された name パラメーターを使って、個別にカスタマイズされた挨拶を生成します
リソースにアクセスする方法:
- MCP プロトコル経由
- MCP クライアントライブラリを使用
ツール
このボイラープレートには、次のツール例が含まれます。
-
電卓:基本的な算術演算を実行します
- パラメーター:
operation:実行する演算(add、subtract、multiply、divide)a:1 つ目の数値b:2 つ目の数値
- パラメーター:
-
タイムスタンプ:さまざまな形式で現在時刻を提供します
- パラメーター:
format:出力形式(iso、unix、readable)
- パラメーター:
プロンプト
このボイラープレートには、次のプロンプト例が含まれます。
-
挨拶:個別にカスタマイズされた挨拶プロンプトを作成します
- パラメーター:
name:挨拶する相手の名前formal:フォーマルな挨拶スタイルを使用するかどうか(任意)
- パラメーター:
-
データ分析:データ分析用のプロンプトを作成します
- パラメーター:
data:分析するデータformat:データ形式(json、csv、text)instructions:追加の分析指示(任意)
- パラメーター:
サーバーの拡張
リソースの追加
新しいリソースを追加するには:
src/resources/に新しいファイルを作成します(例:myResource.ts)- リソースハンドラーを実装します
src/resources/index.tsに登録します
例:
// myResource.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
export function myResource(server: McpServer): void {
server.resource('my-resource', 'my-resource://path', async uri => ({
contents: [
{
uri: uri.href,
text: 'My resource content',
},
],
}));
}
// Then add to resources/index.ts
import { myResource } from './myResource.js';
export function registerResources(server: McpServer): void {
// ...existing resources
myResource(server);
}
ツールの追加
新しいツールを追加するには:
src/tools/に新しいファイルを作成します(例:myTool.ts)- ツールハンドラーを実装します
src/tools/index.tsに登録します
例:
// myTool.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
export function myTool(server: McpServer): void {
server.tool('my-tool', { param: z.string() }, async ({ param }) => ({
content: [
{
type: 'text',
text: `Processed: ${param}`,
},
],
}));
}
// Then add to tools/index.ts
import { myTool } from './myTool.js';
export function registerTools(server: McpServer): void {
// ...existing tools
myTool(server);
}
プロンプトの追加
新しいプロンプトを追加するには:
src/prompts/に新しいファイルを作成します(例:myPrompt.ts)- プロンプトハンドラーを実装します
src/prompts/index.tsに登録します
例:
// myPrompt.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
export function myPrompt(server: McpServer): void {
server.prompt('my-prompt', { topic: z.string() }, ({ topic }) => ({
messages: [
{
role: 'user',
content: {
type: 'text',
text: `Please explain ${topic} in simple terms.`,
},
},
],
}));
}
// Then add to prompts/index.ts
import { myPrompt } from './myPrompt.js';
export function registerPrompts(server: McpServer): void {
// ...existing prompts
myPrompt(server);
}
テストとデバッグ
MCP サーバーをテストするには、次のものを使用できます。
- MCP Inspector ツール
- MCP クライアントライブラリ
- 直接の HTTP リクエスト(デバッグ用)
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。