概要
インストール
コンテンツ詳細
代替品
MCPコード監査サーバーとは?
MCPコード監査サーバーは、ローカルのOllamaモデルに基づくAIコード監査ツールで、コードの安全性、完全性、パフォーマンス、品質などの多面的な分析が可能です。Model Context Protocol (MCP)を介して、Claudeなどのツールとシームレスに連携できます。MCPコード監査サーバーの使い方は?
ユーザーはコマンドラインまたは開発環境に統合することで、このサーバーを使用できます。依存関係をインストールし、モデルを設定するだけで、コード監査を開始できます。適用シナリオ
ソフトウェア開発チーム、セキュリティ研究者、独立した開発者に適しており、開発過程でコード内の潜在的な問題を早期に発見し、コードの品質と安全性を向上させるのに役立ちます。主要機能
使い方
使用例
よくある質問
関連リソース
インストール
{
"mcpServers": {
"code-audit": {
"command": "code-audit",
"args": ["start", "--stdio"],
"env": {}
}
}
}🚀 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からグローバルにインストール
npm install -g @moikas/code-audit-mcp
# インタラクティブなセットアップを実行(MCP設定を含む)
code-audit setup
# または自動MCP設定でセットアップ
code-audit setup --auto
# MCPサーバを起動
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
# 依存関係をインストール(husky設定を含む)
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 # ESLintチェック
npm run format:check # Prettierチェック
npm run type-check # TypeScriptチェック
セットアップスクリプトは以下のことを行います。
- ✅ 前提条件(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
# MCPサーバを起動(フォアグラウンド)
code-audit start
# バックグラウンドデーモンとして起動
code-audit start --daemon
# 実行中のサーバを停止
code-audit stop
# システムの健全性をチェック
code-audit health
# AIモデルを管理
code-audit models --list
code-audit models --pull codellama:7b
# 設定管理
code-audit config --show
code-audit config --set ollama.host=http://remote:11434
# MCPサーバ管理
code-audit mcp status
code-audit mcp configure
code-audit mcp remove
# 更新を確認
code-audit update
開発モード
# ホットリロードで開発モードを起動
npm run dev
# TypeScriptをビルド
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": {}
}
}
}
詳細については、以下を参照してください。
- MCP設定ガイド
- Claude Code統合
利用可能なツール
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|allpriority: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:ドキュメントに優れている
モデルのインストール
# 必須モデル (~7GB)
ollama pull codellama:7b
ollama pull granite-code:8b
# 包括的なセットアップ (~30GB)
ollama pull codellama:13b
ollama pull deepseek-coder:6.7b
ollama pull starcoder2:7b
ollama pull qwen2.5-coder:7b
# 完全セットアップ (~80GB)
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": [
/* fixable issues */
],
"priorityFixes": [
/* critical/high severity */
],
"quickWins": [
/* low effort, high impact */
],
"technicalDebt": [
/* long-term improvements */
]
},
"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 // 5分
}
}
監査タイプの詳細
セキュリティ監査
- 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 # TypeScriptをコンパイル
npm run lint # ESLintを実行
npm run format # Prettierで整形
# テスト
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が実行中か確認
ollama list
# Ollamaサービスを起動
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
# TypeScriptの設定を確認
npx tsc --noEmit
# 依存関係を更新
npm update
メモリの問題
# 利用可能なメモリを確認
free -h
# 小さいモデルを使用
ollama pull codellama:7b # codellama:34bの代わりに
# 同時実行する監査を減らす
{
"performance": {
"maxConcurrentAudits": 1
}
}
パフォーマンスチューニング
モデル選択の最適化
// CI/CD環境 - 速度を優先
const ciConfig = {
strategy: 'PerformanceModelSelectionStrategy',
priority: 'fast',
};
// コードレビュー - 精度を優先
const reviewConfig = {
strategy: 'QualityModelSelectionStrategy',
priority: 'thorough',
};
リソース管理
{
ollama: {
timeout: 60000, // 大きなファイルの場合は増やす
retryAttempts: 5, // 信頼性のためにより多くのリトライを行う
healthCheckInterval: 30000 // より頻繁に健全性チェックを行う
},
performance: {
maxConcurrentAudits: 2, // 限られたRAMの場合は減らす
cacheEnabled: true, // 繰り返しの分析のために有効にする
cacheTtl: 600 // 10分のキャッシュ
}
}
📚 APIリファレンス
ツールのスキーマ
audit_code
interface AuditRequest {
code: string; // 必須: 監査するコード
language: string; // 必須: プログラミング言語
auditType: AuditType; // オプション: デフォルト 'all'
file?: string; // オプション: コンテキストのためのファイルパス
context?: AuditContext; // オプション: 追加のコンテキスト
priority?: 'fast' | 'thorough'; // オプション: デフォルト 'thorough'
maxIssues?: number; // オプション: デフォルト 50
includeFixSuggestions?: boolean; // オプション: デフォルト true
}
レスポンス形式
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を使用
開発ドキュメント
- コントリビューションガイドライン: プロジェクトへのコントリビュート方法
- VS Codeセットアップ: 最適なIDE設定
- コミット前フック: 自動的な品質チェック
- トラブルシューティング: 一般的な問題の解決策
📄 ライセンス
MITライセンス - 詳細については、LICENSEを参照してください。
🙏 謝辞
- Anthropic:Model Context Protocolの仕様提供
- Ollama:ローカルAIモデルの提供
- Meta:CodeLlamaモデルの提供
- DeepSeek:専用のコーディングモデルの提供
- BigCode:StarCoderモデルの提供
📞 サポート
- 問題報告: GitHub Issues
- ディスカッション: GitHub Discussions
- ドキュメント: Wiki
AIによる分析を通じて、より良いコード品質のために愛情を込めて構築されました
代替品












