Generate Unit Testing Server について
Angular、React、Next.js のプロジェクトを検出し、Jest、Karma/Jasmine、Vitest でユニットテストを生成する MCP サーバーです。テストの実行とカバレッジ計測にも対応し、開発者が生成コードを確認できます。
主な機能
- 01プロジェクトとテストフレームワークの検出
- 02公開メソッドのテスト生成
- 03Jest、Karma/Jasmine、Vitest に対応
- 04テスト実行とカバレッジ計測
- 05ソースコードとテストの並列表示
活用シーン
- 01React コンポーネントのテスト作成
- 02Angular サービスやパイプのテスト
- 03生成テストとカバレッジの確認
MCP 対応
プロジェクト検出、テストフレームワークのインストール、テスト生成、検証、コード比較のツールを MCP クライアントに提供します。テストドキュメントのリソースとテスト生成用プロンプトも公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Generate Unit Testing Server
Jest、Karma/Jasmine、その他のテストフレームワークを使用して、Angular、React、Next.js プロジェクト向けの包括的なユニットテストを自動生成する、インテリジェントな Model Context Protocol(MCP)サーバーです。
機能
- 🔍 プロジェクトの自動検出 - Angular、React、Next.js プロジェクトとそのバージョンを検出します
- 📦 フレームワーク管理 - テストフレームワークを確認し、自動インストールを提案します
- 📚 ドキュメントのリアルタイム取得 - テスト生成前に、Jest と Jasmine の最新ドキュメントを取得します
- 🤖 LLM による生成 - Claude Sonnet 4.5+ を使用して、インテリジェントにテストを生成します
- 🎯 高いカバレッジ目標 - コードカバレッジ 85% 超を目標とするテストを生成します
- ✅ すべてのパブリックメソッド - エクスポートされた関数とパブリッククラスメソッドすべてのテストを作成します
- 🔄 並べて表示して検証 - ソースコードとテストコードを表示し、簡単に確認できます
- 🛠️ 複数のフレームワーク - Jest、Karma/Jasmine、Vitest をサポートします
インストール
npm install
npm run build
使用方法
MCP サーバーとして
MCP クライアントの設定に追加します(例:Claude Desktop、MCP 対応の VS Code)。
{
"mcpServers": {
"generate-unit-testing": {
"command": "node",
"args": ["/path/to/GenerateUnitTesting/build/index.js"]
}
}
}
利用可能なツール
1. detect_project
プロジェクトの種類とテストフレームワークを検出します。
{
"filePath": "/path/to/your/project/src/component.ts"
}
2. install_test_framework
ユーザーの許可を得て、不足しているテストフレームワークをインストールします。
{
"projectPath": "/path/to/your/project",
"framework": "jest",
"autoInstall": false
}
3. generate_unit_test
ソースファイル向けの包括的なユニットテストを生成します。
{
"filePath": "/path/to/your/project/src/component.ts",
"framework": "jest",
"coverageTarget": 85,
"generateForAllPublicMethods": true,
"includeEdgeCases": true
}
4. validate_test
生成したテストを実行し、カバレッジを算出します。
{
"testFilePath": "/path/to/your/project/src/component.test.ts",
"framework": "jest"
}
5. display_side_by_side
ソースコードとテストコードを並べて比較表示します。
{
"sourceFilePath": "/path/to/your/project/src/component.ts",
"testFilePath": "/path/to/your/project/src/component.test.ts"
}
利用可能なリソース
docs://jest/latest- Jest の最新ドキュメントdocs://jasmine/latest- Jasmine の最新ドキュメント
利用可能なプロンプト
generate-unit-test- 包括的なユニットテスト生成プロンプトgenerate-edge-cases- エッジケースのテスト生成プロンプトgenerate-mocks- モック生成プロンプト
アーキテクチャ
src/
├── index.ts # Main MCP server entry point
├── types.ts # TypeScript type definitions
├── tools/
│ ├── detectProject.ts # Project and framework detection
│ └── testGenerator.ts # Test generation logic
├── resources/
│ └── documentationFetcher.ts # Live doc fetching from Jest/Jasmine
├── templates/
│ └── testTemplates.ts # Framework-specific test templates
├── prompts/
│ └── testPrompts.ts # LLM prompts for test generation
└── utils/
├── fileUtils.ts # File system utilities
└── codeAnalyzer.ts # AST-based code analysis
ワークフロー
- プロジェクト検出 -
package.jsonを解析し、プロジェクトの種類と既存のテスト設定を特定します - フレームワークの確認 - テストフレームワークがインストールされているか確認し、不足している場合はインストールを促します
- ドキュメントの取得 - 公式ソースからフレームワークの最新ドキュメントを取得します
- コード解析 - Babel を使用してソースコードを解析し、関数、クラス、メソッドを抽出します
- テスト生成 - コンテキスト(コード+ドキュメント+テンプレート)を含めて LLM を使用し、包括的なテストを生成します
- 検証 - テストを実行し、カバレッジを算出します
- 表示 - 開発者が確認できるよう、比較結果を並べて表示します
サポート対象のフレームワーク
Jest
- React および Next.js プロジェクト
- TypeScript/JavaScript
- 最新の async/await パターン
- モック関数とスパイ
Karma/Jasmine
- Angular プロジェクト
- TestBed によるコンポーネントのテスト
- サービスとパイプのテスト
- 従来の describe/it 構文
カバレッジ目標
このサーバーは、次のテストを生成してコードカバレッジ 85% 超を目指します。
- すべてのパブリック関数のテスト
- すべてのパブリッククラスメソッドのテスト
- エッジケースのシナリオ
- エラー処理のテスト
- 非同期処理のテスト
- 依存関係のモック実装
出力例
React コンポーネントの場合:
// Original: Button.tsx
export const Button = ({ onClick, label }) => {
return <button onClick={onClick}>{label}</button>;
};
生成されるテスト:
// Generated: Button.test.tsx
import { render, fireEvent } from '@testing-library/react';
import { Button } from './Button';
describe('Button', () => {
it('should render with label', () => {
const { getByText } = render(<Button label="Click me" onClick={() => {}} />);
expect(getByText('Click me')).toBeInTheDocument();
});
it('should call onClick when clicked', () => {
const handleClick = jest.fn();
const { getByText } = render(<Button label="Click me" onClick={handleClick} />);
fireEvent.click(getByText('Click me'));
expect(handleClick).toHaveBeenCalledTimes(1);
});
// ... more tests for edge cases;
必要条件
- Node.js 18+
- TypeScript 5+
- MCP クライアント(Claude Desktop、MCP 拡張機能を備えた VS Code など)
開発
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run watch
# Start server
npm start
設定
サーバーは次の項目を自動的に検出します。
- パッケージマネージャー(npm、yarn、pnpm)
- プロジェクトの種類(Angular、React、Next.js)
- 既存のテストフレームワーク
- TypeScript/JavaScript
手動での設定は不要です!
ライセンス
MIT
コントリビューション
コントリビューションを歓迎します!次の点をご確認ください。
- コードが既存のパターンに従っていること
- 新機能にテストが含まれていること
- ドキュメントが更新されていること
サポート
- 問題や質問がある場合は、リポジトリで issue を作成してください。
- 作者:Ahmadreza Shamimi (https://github.com/shentia)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。