🚀 MCPコード監査サーバ
このサーバは、Model Context Protocol (MCP) を統合したローカルのOllamaモデルを使用して、AIによるコード監査を行います。TypeScriptで構築された包括的なMCPサーバで、Ollama経由のローカルAIモデルを使って、セキュリティ、完全性、パフォーマンス、品質、アーキテクチャ、テスト、およびドキュメントに関する高度なコード監査を実行します。
🚀 クイックスタート
このサーバを使用することで、コードの多面的な分析、インテリジェントなモデル選択、高度な機能を利用して、コードの品質を向上させることができます。
✨ 主な機能
多面的なコード分析
- セキュリティ:OWASPトップ10の脆弱性、認証の欠陥、インジェクション攻撃
- 完全性:TODO、空の関数、欠落したエラーハンドリング、未完成の実装
- パフォーマンス:アルゴリズムの複雑性、メモリリーク、最適化の機会
- 品質:コードの臭い、SOLID原則、保守性の問題
- アーキテクチャ:設計パターン、関心事の分離、依存関係の管理
- テスト:テスト可能性の問題、欠落したカバレッジ、競合状態
- ドキュメント:APIドキュメント、コードコメント、コンプライアンス基準
インテリジェントなモデル選択
- マルチモデルサポート:CodeLlama、DeepSeek-Coder、StarCoder2、Granite-Code、Qwen2.5-Coder
- 専門性に基づくルーティング:異なる監査タイプに対して異なるモデルを使用
- フォールバック戦略:失敗時に自動的にモデルを切り替える
- パフォーマンス最適化:高速モードと詳細モード
高度な機能
- コンテキスト認識分析:フレームワーク固有のチェック(React、Express、Djangoなど)
- 優先度に基づく監査:高速モード(セキュリティ + 完全性)で迅速なフィードバックを得る
- 言語サポート:10種類以上のプログラミング言語に対応し、言語固有のルールを持つ
- 設定可能な深刻度:問題の深刻度の閾値をカスタマイズできる
- 自動修正提案:信頼度がスコア付けされた修正提案を提供
- 複雑性分析:循環的、認知的、および保守性のメトリクスを分析
📦 インストール
グローバルインストール(推奨)
npm install -g @moikas/code-audit-mcp
code-audit setup
code-audit setup --auto
code-audit start
開発用インストール
git clone <repository-url>
cd code-audit-mcp
npm install
npm run build
npm run test-local
開発環境のセットアップ
前提条件
- Node.js:18.0.0以上
- Ollama:最新バージョン(ダウンロード)
- RAM:大規模なモデルを使用する場合は8GB以上を推奨
- ストレージ:必須モデルには10GB以上、包括的なセットアップには50GB以上
初期セットアップ
git clone https://github.com/warrengates/code-audit-mcp.git
cd code-audit-mcp
npm install
npm run build
npm run quality-check
npm run test-local
コミット前フック
このプロジェクトでは、Huskyとlint-stagedを使用して自動的なコード品質チェックを行います。
- ESLint:コードのエラーとスタイルの問題をチェック
- Prettier:コードを一貫した形式で整形
- TypeScript:すべてのTypeScriptファイルの型チェック
コミット前フックはgit commit
時に自動的に実行されます。手動で品質チェックを実行するには、以下のコマンドを使用します。
npm run quality-check
npm run quality-fix
npm run lint
npm run format:check
npm run type-check
セットアップスクリプトは以下のことを行います。
- ✅ 前提条件(Node.js、npm、tsx)をチェック
- 🩺 Ollamaのインストールと正常性を確認
- 📦 推奨されるAIモデルをインストール
- 🧪 MCPサーバの機能をテスト
- 📝 サンプル設定を生成
手動セットアップ
手動でインストールする場合は、以下の手順を実行します。
npm install
ollama pull codellama:7b
ollama pull granite-code:8b
npm run build
npm run dev
💻 使用例
基本的な使用法
CLIコマンドを使用してサーバを操作することができます。
code-audit setup
code-audit start
code-audit start --daemon
code-audit stop
code-audit health
code-audit models --list
code-audit models --pull codellama:7b
code-audit config --show
code-audit config --set ollama.host=http://remote:11434
code-audit mcp status
code-audit mcp configure
code-audit mcp remove
code-audit update
開発モード
npm run dev
npm run build
npm run test-local
MCP統合
自動設定(推奨)
セットアップウィザードで自動的にcode-auditをMCPサーバとして設定することができます。
code-audit setup
code-audit mcp configure
これにより、code-auditが以下の場所に自動的に追加されます。
- Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
- Claude Code (グローバル):
~/.config/claude/mcp-settings.json
- Claude Code (プロジェクト):
.claude/mcp-settings.json
手動設定
手動で設定する場合は、MCP設定に以下を追加します。
{
"mcpServers": {
"code-audit": {
"command": "code-audit",
"args": ["start", "--stdio"],
"env": {}
}
}
}
詳細については、以下を参照してください。
利用可能なツール
audit_code
- 主要な監査ツール
{
"name": "audit_code",
"arguments": {
"code": "function processPayment(amount) {\n const query = `SELECT * FROM users WHERE id = ${userId}`;\n // TODO: implement payment logic\n}",
"language": "javascript",
"auditType": "all",
"priority": "thorough",
"context": {
"framework": "express",
"environment": "production",
"performanceCritical": true,
"projectType": "api"
}
}
}
パラメータ:
code
(必須): 監査するコード
language
(必須): プログラミング言語
auditType
: security
| completeness
| performance
| quality
| architecture
| testing
| documentation
| all
priority
: fast
(セキュリティ + 完全性のみ) | thorough
(すべての監査タイプ)
context
: フレームワーク固有の分析のための追加コンテキスト
maxIssues
: 返される問題の数を制限(デフォルト: 50)
health_check
- サーバの健全性ステータス
{
"name": "health_check",
"arguments": {}
}
list_models
- 利用可能なAIモデル
{
"name": "list_models",
"arguments": {}
}
📚 ドキュメント
サーバ設定
設定ファイルを作成するか、環境変数を使用してサーバを設定します。
const config = {
name: 'code-audit-mcp',
version: '1.0.0',
ollama: {
host: 'http://localhost:11434',
timeout: 30000,
retryAttempts: 3,
retryDelay: 1000,
},
auditors: {
security: {
enabled: true,
severity: ['critical', 'high', 'medium'],
rules: {
sql_injection: true,
xss_vulnerability: true,
hardcoded_secret: true,
},
},
performance: {
enabled: true,
severity: ['high', 'medium', 'low'],
thresholds: {
cyclomaticComplexity: 10,
nestingDepth: 4,
},
},
},
logging: {
level: 'info',
enableMetrics: true,
enableTracing: false,
},
};
監査員設定
各監査員は個別に設定することができます。
{
enabled: boolean;
severity: Severity[];
rules: Record<string, boolean>;
thresholds: Record<string, number>;
}
モデル選択
異なるシナリオに対してモデルの優先順位を設定します。
const performanceConfig = {
strategy: 'PerformanceModelSelectionStrategy',
fallbackModels: ['codellama:7b', 'granite-code:8b'],
};
const qualityConfig = {
strategy: 'QualityModelSelectionStrategy',
fallbackModels: ['deepseek-coder:33b', 'codellama:13b'],
};
🔧 技術詳細
サポートされるモデル
必須モデル(推奨)
- CodeLlama 7B:高速で汎用的なコード分析
- Granite Code 8B:セキュリティ分析に優れている
包括的なセットアップ
- CodeLlama 13B:複雑な分析に対してより高い精度を持つ
- DeepSeek-Coder 6.7B:優れたパフォーマンス分析
- StarCoder2 7B:テスト分析に特化している
- Qwen2.5-Coder 7B:ドキュメント分析に適している
完全セットアップ(高度)
- DeepSeek-Coder 33B:最高の精度(16GB以上のRAMが必要)
- StarCoder2 15B:高度なテストとアーキテクチャ分析
- Llama 3.1 8B:ドキュメントに優れている
モデルのインストール
ollama pull codellama:7b
ollama pull granite-code:8b
ollama pull codellama:13b
ollama pull deepseek-coder:6.7b
ollama pull starcoder2:7b
ollama pull qwen2.5-coder:7b
ollama pull deepseek-coder:33b
ollama pull starcoder2:15b
ollama pull llama3.1:8b
言語サポート
完全サポート
- JavaScript/TypeScript:React、Node.js、Express固有のチェック
- Python:Django、Flask、FastAPI固有の分析
- Java:Spring Boot、セキュリティに焦点を当てた分析
- Go:Goroutineの安全性、パフォーマンスパターン
- Rust:メモリの安全性、パフォーマンス最適化
良好なサポート
- C#:.NETパターン、セキュリティ分析
- PHP:Laravel、WordPressのセキュリティチェック
- Ruby:Rails固有のパターン
- Swift:iOS固有のパターン
- Kotlin:Android固有の分析
基本的なサポート
- C/C++:メモリの安全性、パフォーマンス
- SQL:インジェクション検出、クエリ最適化
- HTML/CSS:XSS防止、パフォーマンス
- Docker:セキュリティ設定
- YAML/JSON:設定の検証
出力例
{
"requestId": "audit_12345",
"issues": [
{
"id": "sql_injection_2",
"location": { "line": 2, "column": 15 },
"severity": "critical",
"type": "sql_injection",
"category": "security",
"title": "SQL injection vulnerability in query construction",
"description": "Direct string interpolation in SQL query allows SQL injection attacks",
"suggestion": "Use parameterized queries or prepared statements",
"confidence": 0.95,
"fixable": true,
"ruleId": "SEC001",
"documentation": "OWASP Top 10: A03:2021 – Injection"
},
{
"id": "todo_3",
"location": { "line": 3 },
"severity": "medium",
"type": "todo_comment",
"category": "completeness",
"title": "TODO comment indicates incomplete implementation",
"description": "Found TODO comment: // TODO: implement payment logic",
"suggestion": "Implement the missing functionality or remove the TODO comment",
"confidence": 1.0,
"fixable": false,
"ruleId": "COMP001"
}
],
"summary": {
"total": 2,
"critical": 1,
"high": 0,
"medium": 1,
"low": 0,
"info": 0,
"byCategory": {
"security": 1,
"completeness": 1
}
},
"suggestions": {
"autoFixable": [
],
"priorityFixes": [
],
"quickWins": [
],
"technicalDebt": [
]
},
"metrics": {
"duration": 1250,
"modelResponseTime": 800,
"coverage": {
"linesAnalyzed": 15,
"functionsAnalyzed": 1,
"complexity": 3
}
}
}
パフォーマンス最適化
高速開発のための高速モード
{
"auditType": "all",
"priority": "fast"
}
コンテキスト認識分析
{
"context": {
"framework": "react",
"environment": "production",
"performanceCritical": true,
"projectType": "web"
}
}
キャッシュ設定
{
performance: {
maxConcurrentAudits: 3,
cacheEnabled: true,
cacheTtl: 300
}
}
監査タイプの詳細
セキュリティ監査
- OWASPトップ10のカバレッジ:SQLインジェクション、XSS、認証の欠陥
- 言語固有:プロトタイプ汚染(JS)、pickleの使用(Python)
- フレームワーク固有:CSRF保護(Express)、SQLインジェクション(Django)
パフォーマンス監査
- アルゴリズム分析:O(n²)の検出、ネストされたループの最適化
- メモリ管理:リーク検出、オブジェクトプーリングの機会
- データベース最適化:N+1クエリ、欠落したインデックス
- 非同期パターン:ブロッキング操作、Promiseのハンドリング
品質監査
- コードの臭い:長いメソッド、大きなクラス、重複コード
- SOLID原則:SRP、OCP、LSP、ISP、DIPの違反
- 保守性:循環的複雑性、認知的負荷
- 命名規則:一貫性、明瞭性、ドメインの整合性
開発
VS Codeのセットアップ
このプロジェクトには、最適な開発体験を得るための包括的なVS Code設定が含まれています。
推奨拡張機能
以下のコマンドを使用して、推奨される拡張機能をインストールします。
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-vscode.vscode-typescript-next
code --install-extension usernamehw.errorlens
code --install-extension yoavbls.pretty-ts-errors
または、VS Codeを開き、ワークスペースの推奨事項のポップアップを受け入れます。
ワークスペース設定
.vscode/settings.json
には以下の設定が含まれています。
- 自動整形:保存時にPrettierで整形する
- リント:リアルタイムのESLintフィードバック
- TypeScript:強化されたIntelliSenseとエラーチェック
- インポート管理:自動インポートとパスのIntelliSense
- Git統合:ワークフローに事前設定されている
デバッグ
含まれているデバッグ設定を使用して、サーバ、CLIコマンド、テストをデバッグすることができます。
- デバッグサーバ:MCPサーバを起動してデバッグする
- デバッグCLI:CLIコマンドをデバッグする
- デバッグテスト:テストの実行をステップ実行する
F5
を押すか、デバッグパネルを使用してデバッグを開始します。
プロジェクト構造
code-audit-mcp/
├── src/
│ ├── server.ts # メインのMCPサーバ
│ ├── types.ts # TypeScriptのインターフェース
│ ├── auditors/ # 監査の実装
│ │ ├── base.ts # ベースの監査員クラス
│ │ ├── security.ts # セキュリティ監査員
│ │ ├── completeness.ts # 完全性監査員
│ │ ├── performance.ts # パフォーマンス監査員
│ │ └── ...
│ ├── ollama/ # Ollamaの統合
│ │ ├── client.ts # HTTPクライアントラッパー
│ │ ├── models.ts # モデルの設定
│ │ └── prompts.ts # 監査のプロンプト
│ └── utils/ # ユーティリティ
│ ├── codeParser.ts # コードの解析
│ ├── complexity.ts # 複雑性分析
│ └── logger.ts # ロギングユーティリティ
├── cli/
│ └── setup.ts # セットアップスクリプト
├── .vscode/ # VS Codeの設定
│ ├── settings.json # ワークスペース設定
│ ├── extensions.json # 推奨拡張機能
│ └── launch.json # デバッグ設定
├── .husky/ # Gitフック
│ └── pre-commit # コミット前チェック
└── tests/ # テストスイート
ビルドとテスト
npm run dev
npm run build
npm run lint
npm run format
npm test
npm run test:watch
npm run test:coverage
npm run start
カスタム監査員の追加
BaseAuditor
を拡張する新しい監査員クラスを作成します。
import { BaseAuditor } from './base.js';
export class CustomAuditor extends BaseAuditor {
constructor(config, ollamaClient, modelManager) {
super('custom', config, ollamaClient, modelManager);
}
protected async postProcessIssues(rawIssues, request, language) {
return super.postProcessIssues(rawIssues, request, language);
}
}
auditors/index.ts
で登録します。
import { CustomAuditor } from './custom.js';
export const auditorClasses = {
custom: CustomAuditor,
};
- 設定を追加します。
const config = {
auditors: {
custom: {
enabled: true,
severity: ['high', 'medium'],
rules: {},
},
},
};
トラブルシューティング
一般的な問題
Ollama接続失敗
ollama list
ollama serve
curl http://localhost:11434/api/tags
モデルが見つからない
ollama list
ollama pull codellama:7b
curl -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{"model": "codellama:7b", "prompt": "test"}'
TypeScriptコンパイルエラー
rm -rf dist/
rm -rf node_modules/
npm install
npx tsc --noEmit
npm update
メモリの問題
free -h
ollama pull codellama:7b
{
"performance": {
"maxConcurrentAudits": 1
}
}
パフォーマンスチューニング
モデル選択の最適化
const ciConfig = {
strategy: 'PerformanceModelSelectionStrategy',
priority: 'fast',
};
const reviewConfig = {
strategy: 'QualityModelSelectionStrategy',
priority: 'thorough',
};
リソース管理
{
ollama: {
timeout: 60000,
retryAttempts: 5,
healthCheckInterval: 30000
},
performance: {
maxConcurrentAudits: 2,
cacheEnabled: true,
cacheTtl: 600
}
}
📚 APIリファレンス
ツールのスキーマ
audit_code
interface AuditRequest {
code: string;
language: string;
auditType: AuditType;
file?: string;
context?: AuditContext;
priority?: 'fast' | 'thorough';
maxIssues?: number;
includeFixSuggestions?: boolean;
}
レスポンス形式
interface AuditResult {
requestId: string;
issues: AuditIssue[];
summary: AuditSummary;
coverage: AuditCoverage;
suggestions: AuditSuggestions;
metrics: AuditMetrics;
model: string;
timestamp: string;
version: string;
}
エラーコード
コード |
説明 |
解決策 |
INVALID_REQUEST |
不正なリクエスト |
必須パラメータを確認 |
CODE_TOO_LARGE |
コードがサイズ制限を超えています |
小さなチャンクに分割 |
LANGUAGE_NOT_SUPPORTED |
サポートされていない言語 |
サポートされている言語を使用 |
NO_AVAILABLE_MODEL |
適切なモデルが見つかりません |
必要なモデルをインストール |
OLLAMA_UNAVAILABLE |
Ollamaサービスが停止しています |
Ollamaサービスを起動 |
MODEL_NOT_FOUND |
要求されたモデルが見つかりません |
ollama pull でモデルを取得 |
GENERATION_FAILED |
AI生成に失敗しました |
モデルの健全性を確認し、再試行 |
AUDIT_FAILED |
一般的な監査失敗 |
ログを確認し、設定を検証 |
🤝 コントリビューション
コントリビューションを歓迎します!詳細については、コントリビューションガイドラインを参照してください。
開発環境のセットアップ
git clone https://github.com/your-username/code-audit-mcp.git
cd code-audit-mcp
npm install
npm run dev
npm test
コード標準
- TypeScript: 厳格モードが有効
- ESLint: Airbnb設定
- Prettier: 自動整形
- テスト: Jestを使用し、80%以上のカバレッジ
- ドキュメント: すべてのパブリックAPIにJSDocを使用
開発ドキュメント
📄 ライセンス
MITライセンス - 詳細については、LICENSEを参照してください。
🙏 謝辞
- Anthropic:Model Context Protocolの仕様提供
- Ollama:ローカルAIモデルの提供
- Meta:CodeLlamaモデルの提供
- DeepSeek:専用のコーディングモデルの提供
- BigCode:StarCoderモデルの提供
📞 サポート
AIによる分析を通じて、より良いコード品質のために愛情を込めて構築されました