はじめに: データベースとテストサーバー
開発ワークフローで管理されるのは、 モデルコンテキストプロトコル、データ構造を理解する とコード品質は 2 つの基本的な柱です。既存のデータベースを使用する場合は、次のことを理解する必要があります。 どのテーブルが存在するか、それらがどのようにリンクされているか、どのインデックスが欠落しているかをすぐに確認できます。コードを書くときに必要になります 自動テストを生成し、エッジケースを特定し、パフォーマンスを測定します。
MCP シリーズの第 9 回目の記事では、次のことを分析します。 4つのサーバー プロジェクトの テックMCP そのカバー これら 2 つの重要な領域: データベース専用の 2 つのサーバー (データベーススキーマエクスプローラー e データモックジェネレーター) とテスト専用の 2 台のサーバー (テストジェネレーター e パフォーマンスプロファイラー).
この記事で学べること
- PRAGMA イントロスペクションを使用して SQLite データベース スキーマを探索する方法
- Mermaid 構文での ERD 図の自動生成
- インデックスが作成されていない外部キーに対するインデックスの自動提案
- 16 個の内蔵ジェネレーターで現実的なモックデータを生成
- ソースコードから単体テストスケルトンを自動作成
- 静的パフォーマンス分析とアンチパターンの特定
- 典型的なイベント:
db:index-suggestion,test:generated,test:coverage-report,perf:bottleneck-found
サーバー 1: db-schema-explorer
サーバー データベーススキーマエクスプローラー SQLite データベース スキーマを対話的に探索できます。 これにより、データ構造を理解するという問題が解決されます。既存のデータベースを使用する場合、次のことが必要です。 どのテーブルが存在するか、どのようにリンクされているか、どのインデックスが欠落しているか、関係を視覚化する方法をすばやく理解します。
サーバーはアクセスを提供します 読み取り専用 データベースにアクセスし、いかなる操作も実行できないようにします。
データまたはスキーマを変更します。図書館を利用する better-sqlite3 旗を持って
readonly: true 直接、同期、高パフォーマンスのアクセスを実現します。
サーバーアーキテクチャ
+------------------------------------------------------------+
| db-schema-explorer server |
| |
| +--------------------------------------------------------+ |
| | Tool Layer | |
| | | |
| | explore-schema describe-table | |
| | suggest-indexes generate-erd | |
| +--------------------------------------------------------+ |
| | |
| v |
| +--------------------------------------------------------+ |
| | better-sqlite3 (readonly: true) | |
| | | |
| | PRAGMA table_info PRAGMA index_list | |
| | PRAGMA index_info PRAGMA foreign_key_list | |
| | sqlite_master SELECT COUNT(*) | |
| +--------------------------------------------------------+ |
| | |
| v |
| +--------------------------------------------------------+ |
| | Event Bus: db:index-suggestion | |
| +--------------------------------------------------------+ |
+------------------------------------------------------------+
利用可能なツール
ツールテーブル - db-schema-explorer
| ツール | 説明 | パラメータ |
|---|---|---|
explore-schema |
データベース スキーマを調査し、すべてのテーブルとその列を返します。 | dbPath (文字列) - SQLite ファイルへのパス |
describe-table |
テーブルの詳細: 列、インデックス、外部キー、行数 | dbPath (弦); tableName (弦) |
suggest-indexes |
テーブルを分析し、パフォーマンスを向上させるために欠落しているインデックスを提案します | dbPath (弦) |
generate-erd |
Mermaid erDiagram 構文でエンティティ関係図を生成する | dbPath (弦) |
基本的なデータ型
サーバーは、イントロスペクションによって返される情報を構造化する 4 つの TypeScript インターフェイスを定義します。 データベースの:
// TableInfo: informazioni su una tabella
interface TableInfo {
name: string;
columns: ColumnInfo[];
}
// ColumnInfo: dettaglio di una colonna
interface ColumnInfo {
name: string;
type: string; // INTEGER, TEXT, REAL, BLOB, BOOLEAN, DATETIME
nullable: boolean;
primaryKey: boolean;
defaultValue: string | null;
}
// IndexInfo: informazioni su un indice
interface IndexInfo {
name: string;
unique: boolean;
columns: string[];
}
// ForeignKeyInfo: informazioni su una foreign key
interface ForeignKeyInfo {
id: number;
table: string; // tabella referenziata
from: string; // colonna locale
to: string; // colonna referenziata
onUpdate: string;
onDelete: string;
}
使用されるプラグマクエリ
すべての分析は、メタデータを提供する標準 SQLite PRAGMA コマンドに基づいています。 データを変更せずにデータベース構造を変更します。
PRAGMA と返される情報
| プラグマ | 使用 | 返される情報 |
|---|---|---|
sqlite_master |
テーブル一覧 | テーブル名(除外) sqlite_*) |
PRAGMA table_info |
テーブルの列 | cid、名前、タイプ、notnull、dflt_value、pk |
PRAGMA index_list |
索引リスト | シーケンス、名前、一意、起源、部分 |
PRAGMA index_info |
インデックス列 | シーケンス番号、cid、名前 |
PRAGMA foreign_key_list |
外部キー | id、seq、テーブル、from、to、on_update、on_delete |
例: スキーマの探索
// Richiesta
{
"tool": "explore-schema",
"arguments": {
"dbPath": "/home/user/data/app.sqlite"
}
}
// Risposta
{
"dbPath": "/home/user/data/app.sqlite",
"tableCount": 3,
"tables": [
{
"name": "users",
"columns": [
{ "name": "id", "type": "INTEGER", "nullable": false, "primaryKey": true },
{ "name": "email", "type": "TEXT", "nullable": false, "primaryKey": false },
{ "name": "name", "type": "TEXT", "nullable": true, "primaryKey": false }
]
},
{
"name": "posts",
"columns": [
{ "name": "id", "type": "INTEGER", "nullable": false, "primaryKey": true },
{ "name": "user_id", "type": "INTEGER", "nullable": false, "primaryKey": false },
{ "name": "title", "type": "TEXT", "nullable": false, "primaryKey": false }
]
}
]
}
例: テーブルの詳細な説明
// Richiesta
{
"tool": "describe-table",
"arguments": {
"dbPath": "/home/user/data/app.sqlite",
"tableName": "posts"
}
}
// Risposta
{
"tableName": "posts",
"rowCount": 1523,
"columns": [
{ "name": "id", "type": "INTEGER", "nullable": false,
"primaryKey": true, "defaultValue": null },
{ "name": "user_id", "type": "INTEGER", "nullable": false,
"primaryKey": false, "defaultValue": null },
{ "name": "title", "type": "TEXT", "nullable": false,
"primaryKey": false, "defaultValue": null }
],
"indexes": [
{ "name": "idx_posts_user_id", "unique": false, "columns": ["user_id"] }
],
"foreignKeys": [
{ "id": 0, "table": "users", "from": "user_id", "to": "id",
"onUpdate": "NO ACTION", "onDelete": "CASCADE" }
]
}
自動インデックス提案
ツール suggest-indexes データベース内のすべてのテーブルを分析し、2 つのタイプのテーブルを識別します。
パフォーマンスの問題: 専用のインデックスのない外部キーと、インデックスのない多くの行を含むテーブル
ユーザー定義。フィールドが属する各外部キーについて from インデックスが作成されていない場合、サーバーが生成します
SQL コマンドが自動的に実行される CREATE INDEX 対応しています。
// Risposta suggest-indexes
{
"tablesAnalyzed": 5,
"suggestionsCount": 2,
"suggestions": [
{
"table": "comments",
"column": "post_id",
"reason": "Foreign key column referencing \"posts\"(\"id\") is not indexed.",
"suggestedSql": "CREATE INDEX idx_comments_post_id ON \"comments\"(\"post_id\");"
}
]
}
ERD図の生成
ツール generate-erd 構文でエンティティ関係図を生成します 人魚の図、
SQLite 型を対応する Mermaid 型に自動的に変換します。 INTEGER になる
int, TEXT/CHAR になる string, REAL/FLOAT になる
float, BLOB になる blob e DATE/TIME になる
datetime.
erDiagram
users {
int id PK
string email
string name
datetime created_at
}
posts {
int id PK
int user_id
string title
string body
}
users ||--o{ posts : "id -> user_id"
イベント: db:index-suggestion
いつでも suggest-indexes インデックスのない公開外部キーを識別します
イベント db:index-suggestion ペイロードを含むイベント バス上:
{
database: string, // percorso al file SQLite
table: string, // nome della tabella
columns: string[], // colonne da indicizzare
reason: string // motivazione del suggerimento
}
このイベントは次のようなサーバーでサブスクライブできます。 agile-metrics o
standup-notes 提案された最適化を自動的に追跡します。
サーバー 2: データモックジェネレーター
サーバー データモックジェネレーター テスト、開発、プロトタイピング用の現実的なモックデータを生成します。
アプリケーションのテストには実際のデータに似たデータが必要ですが、手動で作成しても拡張できません。
このサーバーが提供するのは、 16種類のジェネレーター、JSON および CSV 出力をサポートし、依存関係はありません。
データ生成用の外部: 排他的に使用します Math.random() e
crypto.randomUUID().
利用可能なツール
ツールテーブル - データモックジェネレーター
| ツール | 説明 | パラメータ |
|---|---|---|
generate-mock-data |
フィールド/型パターンに基づいてデータ行を生成します。 | schema ({フィールド, タイプ} の配列); count (1 ~ 10000、デフォルト: 10) |
generate-json |
プロパティと形式のヒントを使用して JSON スキーマから JSON オブジェクトを生成する | jsonSchema (プロパティを持つオブジェクト); count (1 ~ 10000、デフォルト: 10) |
generate-csv |
設定可能なヘッダーと区切り文字を使用して CSV 形式でデータを生成します | columns ({名前, タイプ} の配列); count (1-10000); delimiter (デフォルト: "、") |
list-generators |
使用可能なすべてのジェネレータ タイプを説明とともにリストします。 | 誰でもない |
16 個の内蔵ジェネレーター
サービス層 generators.ts 基本的なデータセット (名前、姓、通り、都市、会社、
lorem 単語、ドメイン) と 16 個のジェネレーター関数 (それぞれレジストリに登録されています)
Record<string, GeneratorInfo>:
利用可能な発電機
| 名前 | 出力タイプ | 説明 | Esempio |
|---|---|---|---|
firstName |
string | 40 人の中からランダムに名前を決定 | 「ジェニファー」 |
lastName |
string | 40 人の中からランダムに姓を選択 | 「マルティネス」 |
email |
string | 名前+姓+ドメインを組み合わせたメール | 「jennifer_martinez42@example.com」 |
phone |
string | 米国の電話形式 (XXX) XXX-XXXX | 「(415) 555-1234」 |
address |
string | 住所: 番号 + 番地 + 市区町村 | 「シアトル、オーク アベニュー 4521」 |
company |
string | 20 名の中から会社名を選択 | 「スターク・インダストリーズ」 |
date |
string | 日付 YYYY-MM-DD (2000 年から 2025 年まで) | 「2018-07-23」 |
integer |
番号 | 0 ~ 10000 の整数 | 4287 |
float |
番号 | 2 桁の 10 進数、0 ~ 10000 | 3456.78 |
boolean |
ブール値 | 真または偽 (50/50) | 真実 |
uuid |
string | crypto.randomUUID() 経由の UUID v4 | 「550e8400-e29b-...」 |
sentence |
string | Lorem ipsum 文 5 ~ 15 単語 | 「ローレム・イプサム・ドール・シット・アメット」 |
paragraph |
string | 3~7 個のローレム文の段落 | 「ローレム・イプサム…ドーロール、座って…」 |
url |
string | プロトコル、ドメイン、パスを含む URL | 「https://app.demo.io/docs」 |
ipv4 |
string | 有効な v4 IP アドレス | 「192.168.42.1」 |
hexColor |
string | # を含む 16 進数の色 | 「#a3f2c1」 |
例: スキーマからのデータ生成
// Richiesta
{
"tool": "generate-mock-data",
"arguments": {
"schema": [
{ "field": "id", "type": "uuid" },
{ "field": "name", "type": "firstName" },
{ "field": "surname", "type": "lastName" },
{ "field": "email", "type": "email" },
{ "field": "active", "type": "boolean" }
],
"count": 3
}
}
// Risposta
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jennifer",
"surname": "Martinez",
"email": "jennifer.martinez@example.com",
"active": true
},
{
"id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"name": "Robert",
"surname": "Smith",
"email": "robert_smith42@test.org",
"active": false
}
]
例: JSON スキーマからの生成
ツール generate-json プロパティを含む JSON スキーマを取得し、自動的に解決します
正しいジェネレーター: 最初にフィールドを確認してください format (電子メール、URI、UUID、IPv4、日付)、
その後、それは元に戻ります type (文字列は文になり、数値は浮動小数点になり、整数は整数になり、
ブール値はブール値になります)。
// Richiesta
{
"tool": "generate-json",
"arguments": {
"jsonSchema": {
"properties": {
"userId": { "type": "string", "format": "uuid" },
"email": { "type": "string", "format": "email" },
"registeredAt": { "type": "string", "format": "date" },
"score": { "type": "integer" }
}
},
"count": 2
}
}
// Risposta
[
{ "userId": "abc-123-...", "email": "james.lee@mock.dev",
"registeredAt": "2019-03-15", "score": 7842 },
{ "userId": "def-456-...", "email": "mary_white@demo.net",
"registeredAt": "2022-11-08", "score": 1256 }
]
例: CSV の生成
ツール generate-csv 区切り文字、引用符のエスケープを正しく処理します
および改行文字。値に区切り文字、引用符、または \n、彼は来ます
二重引用符で囲まれ、内部引用符が二重になっています。
// Richiesta con delimiter: ";"
Nome;Cognome;IP
James;Smith;192.168.1.42
Linda;Johnson;10.0.0.15
Robert;Williams;172.16.5.200
db-schema-explorer との統合
2 つのデータベース サーバーは補完的です。スキーマは次のとおりです。 db-schema-explorer ガイド
モックデータのスキーマ定義。 AIはデータベースの構造を探索し、抽出することができます。
列の型を指定し、それらを直接渡します generate-mock-data テーブルにデータを追加するには
現実的なテストデータを使用します。
サーバー 3: テストジェネレーター
サーバー テストジェネレーター 単体テストの自動生成に特化しており、 エッジケースの特定とコードカバレッジ分析。そして出発点は MCP Suite 内のあらゆるテスト ワークフローで、コード間を切り替えることができます。 スケルトンソースを数秒でテストします。
サーバーは完全に ステートレス: データベースや内部ストアはありません。 ソース コードを入力として受け取り、関数シグネチャによって解析し、返します。 呼び出し間の状態を維持することなく、構造化された出力を実現します。
利用可能なツール
ツールテーブル - テストジェネレーター
| ツール | 説明 | パラメータ |
|---|---|---|
generate-unit-tests |
関数シグネチャを分析して単体テスト スケルトンを生成する | code (弦); language (デフォルト: typescript); framework (ヴィテスト | ジョーク | モカ) |
find-edge-cases |
コードを分析し、重大度別に分類されたエッジケースを提案します | code (弦) |
analyze-coverage |
ソース内の関数とテスト内の参照を比較し、カバレッジを計算します | sourceCode (弦); testCode (弦) |
自動テスト生成
ツール generate-unit-tests ソースコードを解析して 2 つのパターンを探します
宣言の: 古典的な関数 (export function name(params)) とアロー関数
(export const name = (params) =>)。見つかった関数ごとにブロックを生成します
describe/it 3 つの事前定義されたテストを使用します。
// Input: codice sorgente
export function calculateTotal(items: Item[], tax: number): number {
return items.reduce((sum, item) => sum + item.price, 0) * (1 + tax);
}
export const formatCurrency = (amount: number): string => {
return new Intl.NumberFormat('it-IT',
{ style: 'currency', currency: 'EUR' }
).format(amount);
};
// Output generato (framework: vitest)
import { describe, it, expect } from 'vitest';
// import { calculateTotal, formatCurrency } from './source';
describe('calculateTotal', () => {
it('should exist and be callable', () => {
expect(calculateTotal).toBeDefined();
expect(typeof calculateTotal).toBe('function');
});
it('should return expected result with valid input', () => {
const result = calculateTotal(/* items */, /* tax */);
expect(result).toBeDefined();
// TODO: Add specific assertions
});
it('should handle edge cases', () => {
// TODO: Test with null/undefined inputs
// TODO: Test with empty values
// TODO: Test with boundary values
});
});
エッジケースの識別
ツール find-edge-cases コードの静的分析を実行して、潜在的なコードを特定します。
エッジケース。チェックは重大度によって分類されています (高い, 中くらい,
低い) 多数のカテゴリをカバーしています。
検出されたエッジ ホームのカテゴリ
| カテゴリ | 重大度 | 検出条件 |
|---|---|---|
null/undefined |
高い | 関数内のパラメータの存在 |
empty-string |
高い | の使用 .length, .trim(), .split() |
empty-array |
高い | の使用 .map(), .filter(), .reduce() |
zero |
高い | の使用 parseInt, parseFloat, Math.* |
division-by-zero |
高い | オペレーターの存在 / |
async-rejection |
高い | の存在 async, await, Promise |
error-propagation |
高い | ブロックの存在 try/catch |
file-not-found |
高い | の使用 readFile, writeFile, fs.* |
whitespace-string |
中くらい | 文字列メソッドの使用 |
negative-numbers |
高い | 数値関数の使用 |
nested-null |
中くらい | の使用 ?., ||, && |
regex-edge-cases |
中くらい | の使用 RegExp, .match(), .test() |
カバレッジ分析
ツール analyze-coverage ソースコードとテストコードを比較して判断する
どの機能がカバーされているか。このプロセスには 3 つのフェーズが含まれます。ソースからの関数名の抽出、
テスト内の参照を検索します (ブロック describe()、ブロック it()/test()、
直接呼び出し) とパーセンテージの計算。
Sorgente Test
+------------------+ +------------------+
| function add() | ------> | describe('add') | COPERTA
| function sub() | ------> | test('sub ...') | COPERTA
| function mul() | --X | | SCOPERTA
| function div() | --X | | SCOPERTA
+------------------+ +------------------+
Coverage: 2/4 = 50%
テストジェネレーターイベント
サーバーはイベント バス上に 2 つのイベントを発行します。
-
test:generated: 発行者generate-unit-testsペイロードあり{ filePath: string, testCount: number, framework: string } -
test:coverage-report: 発行者analyze-coverageペイロードあり{ filePath: string, coverage: number, uncoveredLines: number[] }
これらのイベントは次の方法で購読できます。 agile-metrics カバレッジ指標を含めるには
スプリント分析内、または standup-notes 生成されたテストを自動的に記録します。
サーバー 4: パフォーマンス プロファイラー
サーバー パフォーマンスプロファイラー 静的パフォーマンス分析ツールを提供します JavaScript および TypeScript コード用。ランタイム プロファイラーとは異なり、このサーバーはコードを分析します ソース 実行せずに、既知のパフォーマンスのアンチパターン、重い依存関係を特定する 実行可能なベンチマーク テンプレートを生成します。
このサーバーの基本原理は、 設計による安全性: 決して実行しない
eval() 任意のコードでもありません。ツール benchmark-compare Node.jsテンプレートを生成します
ユーザーは自分の環境で個別に実行できます。
利用可能なツール
ツールテーブル - パフォーマンスプロファイラー
| ツール | 説明 | パラメータ |
|---|---|---|
analyze-bundle |
JS/TS ファイルを分析してバンドル サイズと大量のインポートの問題を解決する | filePath (文字列) - ファイルまたはディレクトリへのパス |
find-bottlenecks |
静的コード分析によるパフォーマンスのアンチパターン | code (弦); language (typescript | javascript | jsx | tsx) |
benchmark-compare |
2 つのコード スニペットを比較するベンチマーク テンプレートを生成する | codeA (弦); codeB (弦); iterations (デフォルト: 1000) |
バンドル分析
ツール analyze-bundle JavaScript および TypeScript ファイル (個別のディレクトリまたはディレクトリ全体、ただしディレクトリを除く) を読み取ります。
node_modules e dist) インポートを分析して、既知の重い依存関係を探します。
検出された大きなパケットごとに、サーバーは推定サイズと代替パケットを提供します。
軽い。
重いパケットの認識
| パッケージ | 推定サイズ | 推奨される代替手段 |
|---|---|---|
moment |
ロケールを含む最大 300KB | date-fns (~20KB) または dayjs (~2KB) |
lodash |
~70KB 縮小 | lodash-es 木の揺れとともに |
rxjs |
~50KB+ (完全インポート) | 特定のインポート: rxjs/operators |
aws-sdk |
>100MB | @aws-sdk/client-* v3 モジュラー |
jquery |
~85KB 縮小 | ネイティブ DOM API |
three |
~600KB以上 | インポート元 three/examples/jsm/ |
ボトルネックの特定
ツール find-bottlenecks コードの行ごとの静的分析を実行し、アンチパターンを検出します
重大度が次のように分類されたパフォーマンスの 致命的, 警告 o
情報:
検出されたパフォーマンスのアンチパターン
| タイプ | 重大度 | パターンが検出されました |
|---|---|---|
nested-loop |
致命的 | ループ for/while ネストされた (O(n^2)) |
sync-io |
警告 | readFileSync, writeFileSync, execSync |
linear-search-in-loop |
警告 | .indexOf(), .includes(), .find() ループの中 |
dom-query-in-loop |
致命的 | document.querySelector ループの中 |
sequential-await |
警告 | await ループの中 for/while |
json-in-loop |
警告 | JSON.parse/stringify ループの中 |
missing-pagination |
警告 | .findAll(), SELECT * FROM 制限なし |
string-concat-in-loop |
情報 | 文字列の連結 += ループの中 |
recursion |
情報 | メモ化せずに自分自身を呼び出す関数 |
検出されたボトルネックごとに、出力にはタイプ、重大度、行、および問題の説明が含まれます。 そして修正案:
{
"type": "nested-loop",
"severity": "critical",
"line": 42,
"description": "Nested loop detected - potential O(n^2)...",
"suggestion": "Consider using a Map/Set for lookups...",
"pattern": "for (const item of items) {"
}
ベンチマークの生成
ツール benchmark-compare 完全な Node.js ファイルを生成してパフォーマンスを比較する
2 つのコード スニペットの一部。テンプレートには、ウォームアップ (反復の 10%)、測定の 4 つのフェーズが含まれています。
と performance.now()、統計計算 (平均、中央値、最小、最大、p95、p99、stdDev、ops/秒)
そして、どのスニペットがどのくらい速いかを示す最終的な比較。
// Richiesta
{
"tool": "benchmark-compare",
"arguments": {
"codeA": "const result = arr.filter(x => x > 0).map(x => x * 2);",
"codeB": "const result = []; for (const x of arr) { if (x > 0) result.push(x * 2); }",
"iterations": 5000
}
}
出力は、すぐに実行できる完全な Node.js テンプレートです。 node benchmark.js。
サーバーは生成されたコードを実行しません。セキュリティは設計によって保証されています。
パフォーマンス プロファイラー イベント
サーバーはイベント バス上に 2 つのイベントを発行します。
-
perf:bottleneck-found: 発行者find-bottlenecks重大度のボトルネックのみcritical、ペイロードあり{ location: string, metric: string, value: number, threshold: number } -
perf:profile-completed: 発行者benchmark-compareペイロードあり{ target: string, durationMs: number, results: object }
4 つのサーバー間の対話
この記事で分析した 4 つのサーバーは単独で動作するのではなく、相互に補完し合います。 補完的なワークフローとイベント バスを通じて:
+---------------------+ db:index-suggestion +-------------------+
| db-schema-explorer | ------------------------> | agile-metrics |
| | | standup-notes |
+---------------------+ +-------------------+
^
| (dbPath come input)
|
+---------------------+
| data-mock-generator | genera dati che possono
| | popolare il database
+---------------------+
+-------------------+ test:generated +-------------------+
| test-generator | --------------------------> | standup-notes |
| | test:coverage-report +-------------------+
| | --------------------------> | agile-metrics |
+-------------------+ +-------------------+
+----------------------+ perf:bottleneck-found +-------------------+
| performance-profiler | -----------------------> | standup-notes |
| | perf:profile-completed +-------------------+
| | -----------------------> | agile-metrics |
+----------------------+ +-------------------+
公開されたイベントの概要
| イベント | ソースサーバー | 発行者ツール | 潜在的な購読者 |
|---|---|---|---|
db:index-suggestion |
データベーススキーマエクスプローラー | 提案インデックス | アジャイルメトリクス、スタンドアップノート |
test:generated |
テストジェネレーター | 単体テストの生成 | スタンドアップノート |
test:coverage-report |
テストジェネレーター | 分析カバレッジ | アジャイルメトリクス |
perf:bottleneck-found |
パフォーマンスプロファイラー | ボトルネックの発見 | スタンドアップノート、アジャイルメトリクス |
perf:profile-completed |
パフォーマンスプロファイラー | ベンチマーク比較 | アジャイルメトリクス |
一般的な組み合わせワークフロー
4 台のサーバーをすべて組み合わせた一般的なワークフローは次のようになります。
- スキーマの探索: AI が使用する
explore-schemaデータベースの構造を理解するために - インデックスの提案:
suggest-indexes不足している最適化を特定し、公開しますdb:index-suggestion - データ生成:
generate-mock-data調査されたスキーマに基づいてテスト フィクスチャを作成します - テストの生成:
generate-unit-testsアプリケーションコードのテストスケルトンを作成して公開するtest:generated - エッジケース分析:
find-edge-casesテストでカバーされる境界線のケースを特定する - プロファイリング:
find-bottlenecksアンチパターンのコードを解析して公開するperf:bottleneck-found - ベンチマーク:
benchmark-compare代替実装を比較するためのテンプレートを生成する
結論
この記事で分析した 4 つのサーバーは、MCP がシステムの 2 つの重要なフェーズをどのようにカバーできるかを示しています。
開発サイクル: データ構造を理解する そして 品質保証
コードの。サーバー db-schema-explorer PRAGMA による完全なイントロスペクションを提供します。
インデックスの提案と ERD 図の生成。サーバー data-mock-generator 提供します
JSON および CSV で現実的なデータを作成する 16 個のジェネレーター。サーバー test-generator 自動化する
エッジケースを特定して単体テストを作成する。サーバー performance-profiler
静的分析を実行してボトルネックを特定し、ベンチマークを生成します。
次の記事では、 プロジェクト管理サーバー: scrum-board,
agile-metrics, time-tracking, project-economics e
retrospective-manager、アジャイルなプロジェクト管理を実現する 5 つのサーバー
AI インターフェースで直接。
すべてのサーバーの完全なコードはリポジトリで入手できます GitHub 上の Tech-MCP.







