汎用 MCP サーバー テンプレート
簡単にカスタマイズおよび拡張できるように設計された、モジュール式の拡張可能なモデル コンテキスト プロトコル (MCP) サーバー テンプレート。
特徴
- モジュラーアーキテクチャ:明確に定義された構造による関心事の明確な分離
- 小さく、焦点を絞ったファイル:メンテナンス性が向上し、AIが取り込みやすくなります
- 簡単な拡張ポイント: 新しいツールやサービスを追加するためのシンプルなパターン
- 包括的なエラー処理: コードベース全体にわたる堅牢なエラー管理
- 型安全性: 適切な型付けによる完全なTypeScriptサポート
プロジェクト構造
generic-mcp-template/
├── src/
│ ├── services/ # Service classes for API interactions
│ │ ├── base-service.ts # Abstract base service with common functionality
│ │ └── example-service.ts # Example service implementation
│ ├── tools/ # MCP tool definitions and handlers
│ │ ├── example-tools.ts # Tool definitions (name, description, schema)
│ │ └── example-tool-handlers.ts # Tool handler implementations
│ ├── types/ # TypeScript type definitions
│ │ └── example-types.ts # Example type definitions
│ ├── config.ts # Configuration management
│ └── index.ts # Main entry point
├── .env.example # Example environment variables
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentation
はじめる
前提条件
インストール
- このリポジトリをクローンします:
git clone https://github.com/v4lheru/generic-mcp-template.git
cd generic-mcp-template
- 依存関係をインストールします:
.env.example
に基づいて.env
ファイルを作成します。- API キーと設定を使用して
.env
ファイルを編集します。
構築と実行
- プロジェクトをビルドします。
- サーバーを実行します。
テンプレートの拡張
新しいサービスの追加
src/services/
に新しいサービス ファイルを作成します。// src/services/my-service.ts
import { BaseService } from './base-service.js';
import config from '../config.js';
export class MyService extends BaseService {
// Implement your service...
}
- 必要なタイプを
src/types/
に追加します。
新しいツールの追加
- 新しいファイルでツールを定義するか、
src/tools/
内の既存のツールを拡張します。// src/tools/my-tools.ts
export const myTools = [
{
name: "my_tool",
description: "Description of my tool",
inputSchema: {
// JSON Schema for the tool's input
}
}
];
- ツールのハンドラーを実装します。
// src/tools/my-tool-handlers.ts
import { MyService } from '../services/my-service.js';
export function createMyToolHandlers(myService: MyService) {
return {
my_tool: async (args: any) => {
// Implement your tool handler
}
};
}
- ツールとハンドラーを
src/index.ts
に登録します。
構成
このテンプレートはsrc/config.ts
内の集中設定システムを使用します。設定は以下の方法で行うことができます。
- 環境変数
- コマンドライン引数(
--env KEY=VALUE
を使用) - コード内のデフォルト値
エラー処理
テンプレートには包括的なエラー処理が含まれています。
- レート制限をサポートするサービスレベルのエラー処理
- 適切なエラーメッセージによるツールレベルのエラー処理
- MCPプロトコルエラー処理
ライセンス
マサチューセッツ工科大学