Skip to main content
Glama
yone-k

MCP Base Server

by yone-k
README.md7.19 kB
# MCP Base Server [English README](README.en.md) MCP (Model Context Protocol) サーバー作成用のベーステンプレートです。 ## 特徴 - TypeScriptベースのMCPサーバー実装 - モジュラーなツールアーキテクチャ - Zodスキーマによる組み込みバリデーション - サンプルツール実装 - Vitestテスト環境 - 包括的なエラーハンドリング - 高速なMCPサーバー開発テンプレート ## 要件 - Docker - Docker Compose(オプション) ## インストール ```bash # リポジトリをクローン git clone <repository-url> cd mcp-base # Dockerイメージをビルド docker build -t mcp-base . ``` ## 使用方法 ### Docker(推奨) ```bash # 基本実行 docker run --rm -i mcp-base # 環境変数を指定して実行 docker run --rm -i -e API_KEY=your_api_key_here mcp-base # Docker Composeを使用 docker-compose up --build ``` ### 開発環境(ローカル開発用) ```bash # 依存関係をインストール npm install # 開発モードで開始 npm run dev # テスト実行 npm test # ビルド npm run build ``` ## MCPクライアント設定 ### Claude Desktop 1. Claude Desktopの設定ファイルを編集します: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` 2. 以下の設定を追加します: #### Dockerを使用する場合(推奨) ```json { "mcpServers": { "mcp-base": { "command": "docker", "args": [ "run", "--rm", "-i", "mcp-base" ] } } } ``` #### ローカルビルドを使用する場合 ```json { "mcpServers": { "mcp-base": { "command": "node", "args": ["/path/to/mcp-base/dist/index.js"] } } } ``` #### 開発環境での設定 ```json { "mcpServers": { "mcp-base-dev": { "command": "npx", "args": ["ts-node", "/path/to/mcp-base/src/index.ts"], "cwd": "/path/to/mcp-base" } } } ``` ### その他のMCPクライアント stdio転送をサポートする任意のMCPクライアントから利用できます: ```bash # Dockerで直接実行 docker run --rm -i mcp-base ``` ## アーキテクチャ プロジェクトはモジュラーアーキテクチャに従います: - `src/index.ts` - メインサーバーエントリーポイント - `src/core/tool-handler.ts` - コアツール実行ロジック - `src/tools/` - カテゴリ別に整理されたツール実装 - `src/tools/registry.ts` - ツール登録と発見 - `src/types/` - TypeScript型定義 ## 新しいツールの追加 1. `src/tools/[category]/[tool-name].ts`に新しいツールファイルを作成 2. ツールスキーマ、入出力型、実装を定義 3. 登録用に`toolDefinition`をエクスポート 4. `src/tools/registry.ts`にツールを追加 5. `src/core/tool-handler.ts`のツールハンドラーを更新 ## ツール実装テンプレート ```typescript import { z } from 'zod'; import { ToolDefinition } from '../../types/mcp.js'; // 入力スキーマ定義 export const MyToolInputSchema = z.object({ parameter: z.string().describe('パラメータの説明'), optionalParam: z.boolean().optional().default(false) }).strict(); export type MyToolInput = z.infer<typeof MyToolInputSchema>; // MCPツール定義 export const toolDefinition: ToolDefinition = { name: 'my_tool', description: 'ツールの機能説明', inputSchema: { type: 'object' as const, properties: { parameter: { type: 'string', description: 'パラメータの説明' }, optionalParam: { type: 'boolean', description: 'オプションパラメータの説明', default: false } }, required: ['parameter'], additionalProperties: false } }; // 出力スキーマ定義 export const MyToolOutputSchema = z.object({ result: z.string(), timestamp: z.string().optional() }); export type MyToolOutput = z.infer<typeof MyToolOutputSchema>; // ツール実装 export async function myTool(input: MyToolInput): Promise<MyToolOutput> { return { result: `処理結果: ${input.parameter}`, timestamp: new Date().toISOString() }; } ``` ## カスタマイズガイド ### 1. プロジェクト名の変更 `package.json`と`src/index.ts`をプロジェクト名で更新: ```typescript // src/index.ts this.server = new Server({ name: 'your-mcp-server', version: '1.0.0', }); ``` ### 2. カスタムクライアントの追加 `src/core/tool-handler.ts`にカスタムクライアントを追加: ```typescript export class ToolHandler { private customClient: CustomClient | null = null; private async ensureCustomClient(): Promise<CustomClient> { if (!this.customClient) { const apiKey = process.env.API_KEY; if (!apiKey) { throw new McpError( ErrorCode.InvalidRequest, 'API_KEY環境変数が設定されていません' ); } this.customClient = new CustomClient(apiKey); } return this.customClient; } } ``` ### 3. 環境変数 必要に応じて環境変数の処理を追加: ```bash # 環境変数の例 export API_KEY="your_api_key_here" export LOG_LEVEL="info" ``` ## 利用可能なスクリプト - `npm run build` - TypeScriptをJavaScriptにコンパイル - `npm run start` - 本番サーバーを開始 - `npm run dev` - ts-nodeで開発サーバーを開始 - `npm run lint` - ESLintを実行 - `npm run typecheck` - TypeScript型チェックを実行 - `npm test` - テストを実行 - `npm run test:watch` - 監視モードでテストを実行 - `npm run test:coverage` - カバレッジレポート付きでテストを実行 - `npm run docker:build` - Dockerイメージをビルド - `npm run docker:run` - Dockerコンテナを実行 - `npm run docker:dev` - Docker Composeで開発環境を起動 ## プロジェクト構造 ``` mcp-base/ ├── src/ │ ├── core/ │ │ └── tool-handler.ts # コアツール実行ロジック │ ├── tools/ │ │ ├── registry.ts # ツール登録 │ │ └── example/ │ │ └── example-tool.ts # サンプルツール実装 │ ├── types/ │ │ └── mcp.ts # 型定義 │ └── index.ts # メインサーバーエントリーポイント ├── dist/ # コンパイル済みJavaScript出力 ├── package.json # プロジェクト依存関係とスクリプト ├── tsconfig.json # TypeScript設定 ├── vitest.config.ts # テスト設定 ├── CLAUDE.md # 開発ドキュメント └── README.md # このファイル ``` ## 貢献 1. リポジトリをフォーク 2. フィーチャーブランチを作成 3. テスト付きで変更を追加 4. lintと型チェックを実行 5. プルリクエストを提出 ## ライセンス MITライセンス - 詳細は[LICENSE](LICENSE)ファイルを参照してください。

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yone-k/mcp-base'

If you have feedback or need assistance with the MCP directory API, please join our Discord server