Skip to main content
Glama
structure.md2.3 kB
# Project Structure ## Organization Philosophy **機能ドメイン分離**: Lychee統合、Redmine統合、MCPサーバー基盤を明確に分離し、各ドメインの独立性を保つ設計を採用します。 ## Directory Patterns ### MCP Server Core (`/src/server/`) **Purpose**: MCPプロトコル実装とクライアント通信の管理 **Example**: 初期化処理、ツール/リソース登録、JSON-RPCハンドリング ### Redmine Integration (`/src/redmine/`) **Purpose**: Lychee Redmine APIとの統合機能 **Example**: - `api.ts` - Redmine REST API クライアント - `types.ts` - Redmine APIレスポンス型定義 - `tools.ts` - MCPツール定義(チケット作成、検索など) ### Configuration (`/src/config/`) **Purpose**: 設定管理とバリデーション **Example**: 環境変数読み込み、設定ファイルパース、URLバリデーション ### Utilities (`/src/utils/`) **Purpose**: 共通ユーティリティ **Example**: ログ機能、エラーハンドリング、リトライロジック ## Naming Conventions - **Files**: kebab-case (`lychee-client.ts`, `mcp-server.ts`) - **Classes**: PascalCase (`LycheeClient`, `RedmineClient`) - **Functions**: camelCase (`getAlbums`, `createTicket`) - **Constants**: UPPER_SNAKE_CASE (`DEFAULT_TIMEOUT`, `MAX_RETRIES`) ## Import Organization ```typescript // 外部ライブラリ import { Server } from '@modelcontextprotocol/sdk/server/index.js' // 内部モジュール(機能ドメイン) import { RedmineClient } from './redmine/api.js' // 型定義 import type { Project } from './redmine/types.js' // ユーティリティ import { logger } from './utils/logger.js' ``` **Import Rules**: - 外部ライブラリ → 内部モジュール → 型定義 → ユーティリティの順 - 相対パスは同一ドメイン内のみ使用 - ESモジュール形式(`.js`拡張子を明記) ## Code Organization Principles ### 型安全性 - すべてのAPI レスポンスに型定義を提供 - ツールパラメータはJSON Schemaで定義 ### テスト可能性 - API クライアントはモック化可能な設計 - 依存性注入パターンの使用を推奨 --- _Document patterns, not file trees. New files following patterns shouldn't require updates_

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/ssoma-dev/mcp-server-lychee-redmine'

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