Skip to main content
Glama
yone-k

MCP Base Server

by yone-k
CLAUDE.md2.92 kB
# core ディレクトリ ## 概要 MCPサーバーのコア機能を実装するディレクトリです。ツール実行ロジック、エラーハンドリング、共通処理を担当します。 ## 設計方針 ### 単一責任の原則 各クラスは明確に定義された責任を持ち、MCPプロトコルの基本機能のみを扱います。 ### 拡張性の確保 新しいツールの追加や機能拡張に対して、既存コードの修正を最小限に抑える設計を採用します。 ## 実装ルール ### 1. ToolHandlerクラスの実装パターン ```typescript export class ToolHandler { // バリデーション処理は共通化 private validateAndParseInput<T>( args: unknown, schema: any, toolName: string ): T { // Zodスキーマを使用した厳密なバリデーション } // レスポンス形式は統一 private formatResponse(result: any) { return { content: [ { type: 'text' as const, text: JSON.stringify(result, null, 2) } ] }; } } ``` ### 2. エラーハンドリングパターン ```typescript // MCPError を使用した統一的なエラー処理 import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; throw new McpError( ErrorCode.InvalidParams, `Invalid parameters for ${toolName}: ${error.message}` ); ``` 詳細な実装例については以下を参照: - [ToolHandler実装例](./docs/examples/tool-handler-example.md) - [エラーハンドリングパターン](./docs/patterns/error-handling.md) ## アンチパターン ### ❌ 避けるべきパターン ```typescript // 直接throwではなく、McpErrorを使用する throw new Error('Something went wrong'); // バリデーションなしの直接処理 async executeTool(name: string, args: any) { // argsをそのまま使用 } ``` ### ✅ 推奨パターン ```typescript // McpErrorを使用した適切なエラーハンドリング throw new McpError( ErrorCode.InvalidParams, `Invalid parameters: ${error.message}` ); // 型安全なバリデーション const input = this.validateAndParseInput<InputType>( args, InputSchema, toolName ); ``` ## パフォーマンス考慮事項 1. **遅延初期化**: 重いリソースは実際に使用されるまで初期化しない 2. **キャッシュ戦略**: 頻繁にアクセスされるリソースのキャッシュ実装 ## セキュリティ考慮事項 1. **入力サニタイゼーション**: すべての外部入力はZodスキーマで検証 2. **環境変数の適切な管理**: 機密情報の漏洩防止 ## 新規ツール追加時のチェックリスト - [ ] ツールのswitchケースをexecuteTool()に追加 - [ ] 適切なエラーハンドリングを実装 - [ ] バリデーション処理を追加 - [ ] レスポンス形式を統一 - [ ] ドキュメントを更新

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