mcpField
M
MCP TypeScript Starter

MCP TypeScript Starter

ローカル
github.com/SamMorrowDrums開発ツール84 週間前に更新

MCP TypeScript Starter について

MCP TypeScript Starterは、MCPサーバー構築用のTypeScriptテンプレートです。学習や試作に向けて、ツール、リソース、テンプレート、プロンプトの例と、stdio・HTTPの起動方法、VS CodeやDevContainerの設定を備えています。

主な機能

  1. 01ツール、リソース、プロンプトの例
  2. 02リソーステンプレートと構造化出力
  3. 03進捗通知と動的なツール読み込み
  4. 04stdioとHTTPのトランスポート
  5. 05VS CodeとDevContainerの設定

活用シーン

  1. 01TypeScriptでMCPサーバーの基本パターンを学習
  2. 02サンプルツールやリソースを使った試作
  3. 03VS CodeやMCP Inspectorでサーバーをテスト

MCP 対応

stdioまたはHTTP経由で、ツール、リソース、リソーステンプレート、プロンプトの例をMCPクライアントに公開するサーバーテンプレートです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"typescript-starter": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP TypeScript スターター

CI TypeScript Node.js License: MIT MCP

TypeScript で実装された、機能が充実した Model Context Protocol(MCP)サーバーのテンプレートです。このスターターでは、主要な MCP 機能をすべて、すっきりとした本番環境対応のコードで紹介します。

📚 ドキュメント

✨ 機能

カテゴリ機能説明
ツールhelloアノテーション付きの基本的なツール
get_weather構造化出力スキーマを備えたツール
ask_llmLLM サンプリングを呼び出すツール
long_task5 秒ごとに進捗を更新するツール
load_bonus_tool新しいツールを動的に読み込む
リソースinfo://about静的な情報リソース
file://example.mdファイルベースの Markdown リソース
テンプレートgreeting://{name}パーソナライズされた挨拶
data://items/{id}ID によるデータ検索
プロンプトgreetさまざまなスタイルの挨拶
code_review注目点を絞ったコードレビュー

🚀 クイックスタート

前提条件
インストール
# Clone the repository
git clone https://github.com/SamMorrowDrums/mcp-typescript-starter.git
cd mcp-typescript-starter

# Install dependencies
npm install

# Build
npm run build
サーバーの実行

stdio トランスポート(ローカル開発用):

npm run start:stdio

HTTP トランスポート(リモート/Web デプロイ用):

npm run start:http
# Server runs on http://localhost:3000

🔧 VS Code との統合

このプロジェクトには、スムーズに開発できるよう VS Code の設定が含まれています。

  1. VS Code でプロジェクトを開きます
  2. MCP の設定は .vscode/mcp.json にあります
  3. Ctrl+Shift+B(Mac では Cmd+Shift+B)でビルドします
  4. VS Code の MCP ツールを使ってサーバーをテストします
DevContainers の使用
  1. Dev Containers 拡張機能をインストールします
  2. コマンドパレットを開き、「Dev Containers: Reopen in Container」を選択します
  3. すべて設定済みで、すぐに使用できます!

📁 プロジェクト構成

.
├── src/
│   ├── tools.ts       # Tool definitions (hello, get_weather, ask_llm, etc.)
│   ├── resources.ts   # Resource and template definitions
│   ├── prompts.ts     # Prompt definitions
│   ├── server.ts      # Server orchestration (combines all modules)
│   ├── stdio.ts       # stdio transport entrypoint
│   └── http.ts        # HTTP transport entrypoint
├── .vscode/
│   ├── mcp.json       # MCP server configuration
│   ├── tasks.json     # Build/run tasks
│   └── extensions.json
├── .devcontainer/
│   └── devcontainer.json
├── package.json
├── tsconfig.json
├── .prettierrc        # Prettier configuration
└── eslint.config.js

🛠️ 開発

# Development mode with live reload
npm run dev

# Build for production
npm run build

# Format code
npm run format

# Lint
npm run lint

# Clean build
npm run clean && npm run build
ライブリロード

npm run dev コマンドでは tsx watch を使用しており、開発中にすぐリロードできます。 任意の .ts ファイルを変更すると、サーバーが自動的に再起動します。

🔍 MCP Inspector

MCP Inspector は、MCP サーバーのテストやデバッグに欠かせない開発ツールです。

Inspector の実行
npx @modelcontextprotocol/inspector -- npx tsx src/stdio.ts
Inspector でできること
  • Tools タブ:登録済みのすべてのツールをパラメーター付きで一覧表示し、実行できます
  • Resources タブ:リソースとテンプレートを参照して読み取れます
  • Prompts タブ:プロンプトテンプレートを表示してテストできます
  • Logs タブ:クライアントとサーバー間の JSON-RPC メッセージを確認できます
  • スキーマ検証:ツールの入出力スキーマを検証できます
デバッグのヒント
  1. IDE/クライアントに接続する前に Inspector を起動します
  2. 「Logs」タブで、正確なリクエスト/レスポンスのペイロードを確認します
  3. ツールのアノテーションが正しく公開されていることをテストします
  4. long_task の進捗通知が表示されることを確認します

📖 機能の例

アノテーション付きツール
server.tool(
  "hello",
  {
    title: "Say Hello",
    description: "A friendly greeting tool",
    annotations: { readOnlyHint: true },
  },
  { name: z.string() },
  async ({ name }) => ({
    content: [{ type: "text", text: `Hello, ${name}!` }],
  })
);
リソーステンプレート
server.resourceTemplate(
  "greeting://{name}",
  { name: "Personalized Greeting", mimeType: "text/plain" },
  async ({ name }) => ({
    contents: [{
      uri: `greeting://${name}`,
      text: `Hello, ${name}!`,
    }],
  })
);
進捗更新付きツール
server.tool(
  "long_task",
  { title: "Long Task" },
  { taskName: z.string() },
  async ({ taskName }, { sendProgress }) => {
    for (let i = 0; i < 5; i++) {
      await sendProgress({ progress: i / 5, total: 1.0 });
      await sleep(1000);
    }
    return { content: [{ type: "text", text: "Done!" }] };
  }
);

🔐 環境変数

.env.example を .env にコピーして設定します。

cp .env.example .env
変数説明デフォルト
PORTHTTP サーバーのポート3000

🤝 貢献

貢献を歓迎します!変更を加える際は、ほかの言語のスターターと機能が同等に保たれるようにしてください。

📄 ライセンス

MIT License - 詳細はLICENSEをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。