MCP サーバー ボイラープレート

TypeScript と Express を使用して構築された、モデル コンテキスト プロトコル (MCP) の定型サーバー実装。
目次
Related MCP server: MCP Server Example
概要
このプロジェクトは、モデルコンテキストプロトコル(MCP)に準拠したサーバーを実装します。MCPにより、アプリケーションは標準化された方法でLLMのコンテキストを提供できるようになります。MCPには以下のものが含まれます。
HTTPおよびstdioトランスポートオプションを備えた完全に構成されたMCPサーバー
主要な機能を実証するためのサンプルリソース、ツール、プロンプト
型安全性と開発者エクスペリエンスの向上を実現する TypeScript サポート
HTTPトランスポート層の高速統合
プロジェクト構造
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
環境変数
サンプル環境ファイルをコピーし、必要に応じて変更します。
利用可能な環境変数:
サーバーの実行
HTTPサーバー
HTTP サーバーをビルドして起動します。
自動再起動を使用した開発の場合:
サーバーはhttp://localhost:3000/mcp (または .env ファイルで指定されたポート) で利用できます。
標準モード
サーバーを stdio モード (コマンドライン ツール用) で実行するには:
自動再起動を使用した開発の場合:
リソース
定型文には次のサンプル リソースが含まれています。
静的情報リソース: info://server
動的グリーティングリソース: greeting://{name}
リソースにアクセスするには:
MCPプロトコルを通じて
MCPクライアントライブラリの使用
ツール
定型文には次のサンプル ツールが含まれています。
電卓: 基本的な算術演算を実行します
タイムスタンプ: 現在の時刻をさまざまな形式で提供します
プロンプト
定型文には次のサンプルプロンプトが含まれています。
挨拶: パーソナライズされた挨拶プロンプトを作成します
データ分析: データ分析のプロンプトを作成します
サーバーの拡張
リソースの追加
新しいリソースを追加するには:
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インスペクターツール
MCP クライアント ライブラリ
直接 HTTP リクエスト (デバッグ用)
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。