🚀 MCP プロジェクト
MCP(Model Context Protocol)は、AI アプリケーションにおけるコンテキスト情報の流れを管理するための統一インターフェースを提供します。標準化されたデータ形式と通信プロトコルにより、既存システムで見られるコンテキストの不一致や保守性の問題を解決します。
🚀 クイックスタート
依存関係のインストール
npm install mcp-typescript mcp-zod mcp-communication-adapters
サーバーの起動
npm run start:server
✨ 主な機能
- 統一されたコンテキスト管理:すべてのコンポーネントが一貫した方法でコンテキストデータにアクセスし、更新できるようにします。
- 拡張性:複数のデータ形式と通信プロトコルをサポートし、異なるシステムの統合を容易にします。
- 高信頼性:冗長設計とエラー回復メカニズムにより、重要なタスクでの安定性を保証します。
📦 インストール
依存関係のインストール
npm install mcp-typescript mcp-zod mcp-communication-adapters
サーバーの起動
npm run start:server
💻 使用例
基本的な使用法
import { Context } from 'mcp-typescript';
import { validateContext } from './utils/validation';
const context = {
id: '123',
timestamp: new Date(),
data: { user_id: '456' }
};
try {
const validatedContext = validateContext(context);
} catch (error) {
console.error('Validation failed:', error.message);
}
📚 ドキュメント
詳細機能表
カテゴリ |
特性 |
説明 |
所在位置(s) |
コアコンポーネント |
MCP サーバー |
コアサービスロジック、ツールとリソースの登録、トランスポート処理。サンプルエコーツールとリソースを含みます。 |
src/mcp-server/ |
|
MCP クライアント |
mcp-config.json で定義された外部の MCP サーバーに接続するロジック。 |
src/mcp-client/ |
|
設定 |
Zod 検証付きの環境認識設定。 |
src/config/ , src/mcp-client/configLoader.ts |
|
HTTP トランスポート |
SSE、セッション管理、CORS、ポートリトライを備えた Express ベースのサーバー。 |
src/mcp-server/transports/httpTransport.ts |
|
標準入出力トランスポート |
MCP の標準入出力による通信を処理します。 |
src/mcp-server/transports/stdioTransport.ts |
コアユーティリティ |
ロガー |
構造化されたコンテキスト認識ログ記録(ファイルと MCP 通知)。 |
src/utils/internal/logger.ts |
|
エラーハンドラー |
集中的なエラー処理、分類、およびログ記録。 |
src/utils/internal/errorHandler.ts |
|
リクエストコンテキスト |
リクエスト/操作のトラッキングと関連付け。 |
src/utils/internal/requestContext.ts |
メトリクスユーティリティ |
Token カウンター |
tiktoken を使用してトークン数を推定します。 |
src/utils/metrics/tokenCounter.ts |
パースユーティリティ |
日付パーサー |
chrono-node を使用して自然言語の日付文字列を解析します。 |
src/utils/parsing/dateParser.ts |
|
JSON パーサー |
不完全な JSON を解析し、null ブロックを処理します。 |
src/utils/parsing/jsonParser.ts |
セキュリティユーティリティ |
ID ジェネレーター |
一意の ID(接頭辞付きまたは UUID)を生成します。 |
src/utils/security/idGenerator.ts |
|
レートリミッター |
キーベースのリクエストレート制限。 |
src/utils/security/rateLimiter.ts |
|
データサニタイズ |
validator と zod を使用して、さまざまなデータ型をチェックおよび検証します。 |
src/utils/security/sanitization.ts , など。 |
|
HTML サニタイズ |
sanitize-html を使用して注入攻撃を防止します。 |
src/utils/security/sanitization.ts |
|
機密データの脱敏 |
ログ内で自動的にデータを脱敏処理します。 |
src/utils/security/sanitization.ts |
型安全 |
グローバル型 |
プロジェクト内のすべてのコアインターフェースを定義および管理し、コードの一貫性と保守性を確保します。 |
プロジェクト全体の TypeScript コードベース。 |
|
Zod 検証 |
Zod ライブラリを使用して、自動検証可能な構造化データ型を定義し、コンパイル時に強力な型サポートを提供します。 |
src/config/ , src/server/ など。 |
ビルドとランタイム |
TypeScript プロジェクト |
TypeScript を使用して実装され、静的型チェックによりコード品質を確保し、潜在的なエラーを減らします。 |
プロジェクト全体のコードベース。 |
|
コマンドラインツール |
サーバーの起動やその他の管理タスク用のコマンドラインインターフェースを提供します。 |
src/cli/ |
ドキュメントとテスト |
ドキュメント |
開発者に完全な API ドキュメントと使用ガイドを提供し、プロジェクトの理解と保守を容易にします。 |
プロジェクト内の Markdown ファイル。 |
|
テストスイート |
Jest などのツールを使用して、包括的な単体テスト、統合テスト、およびエンドツーエンドテストを実装し、コード品質を保証します。 |
src/tests/ |
MCP プロジェクトの概要
1. プロジェクトの目標
MCP(Model Context Protocol)は、AI アプリケーションにおけるコンテキスト情報の流れを管理するための統一インターフェースを提供することを目的としています。標準化されたデータ形式と通信プロトコルにより、既存システムで見られるコンテキストの不一致や保守性の問題を解決します。
2. コア機能
- 統一されたコンテキスト管理:すべてのコンポーネントが一貫した方法でコンテキストデータにアクセスし、更新できるようにします。
- 拡張性:複数のデータ形式と通信プロトコルをサポートし、異なるシステムの統合を容易にします。
- 高信頼性:冗長設計とエラー回復メカニズムにより、重要なタスクでの安定性を保証します。
3. 技術選択
- TypeScript:静的型チェックを提供し、ランタイムエラーを減らします。
- Zod:データ検証に使用され、データ構造の正確性を保証します。
- Express:効率的な HTTP サーバーを構築します。
- Kafka:高スループットのメッセージングを処理します。
4. コアコンポーネント
(1) コンテキストマネージャー
現在のコンテキスト状態を維持し、他のモジュールが読み書きできるインターフェースを提供します。
(2) データコンバーター
複数のデータ形式の自動変換をサポートし、互換性を確保します。
(3) 通信アダプター
異なるプロトコル(HTTP、WebSocket など)のアダプトを実装し、統合を容易にします。
5. 設計原則
- 疎結合:各コンポーネント間の依存関係を最小限に抑えます。
- 拡張性:新しい機能やモジュールを容易に追加できるように設計されています。
- 高可用性:システムが一部の障害時にも引き続き動作できるようにします。
6. 実装詳細
(1) データモデル
すべてのデータは TypeScript インターフェースとして定義され、Zod を通じて検証され、データの完全性と正確性が確保されます。
import { z } from 'zod';
export interface Context {
id: string;
timestamp: Date;
data: Record<string, any>;
}
const contextSchema = z.object({
id: z.string().min(1),
timestamp: z.date(),
data: z.record(z.any())
});
export const validateContext = (data: unknown): Context => {
try {
return contextSchema.parse(data);
} catch (error) {
throw new Error('Invalid context data');
}
};
(2) 通信プロトコル
複数のトランスポートプロトコルをサポートし、アダプターデザインパターンにより拡張可能です。
export abstract class Adapter {
abstract send(data: unknown): Promise<void>;
abstract receive(): Promise<unknown>;
}
7. インストールと実行
依存関係のインストール
npm install mcp-typescript mcp-zod mcp-communication-adapters
サーバーの起動
npm run start:server
8. サンプル使用法
import { Context } from 'mcp-typescript';
import { validateContext } from './utils/validation';
const context = {
id: '123',
timestamp: new Date(),
data: { user_id: '456' }
};
try {
const validatedContext = validateContext(context);
} catch (error) {
console.error('Validation failed:', error.message);
}
9. ドキュメントとリソース
MCP 技術詳細
1. データモデル設計
すべてのデータは TypeScript インターフェースで定義され、Zod を使用して厳密に検証され、システム内のデータの一貫性が確保されます。
サンプルインターフェース
import { z } from 'zod';
export interface RequestContext {
id: string;
user: User;
metadata: Record<string, unknown>;
}
export interface User {
id: string;
name: string;
email?: string;
}
2. 通信メカニズム
複数のプロトコルをサポートし、プラグイン式の設計により拡張可能です。
HTTP サンプル
import { HttpAdapter } from './adapters/http';
const adapter = new HttpAdapter({
host: 'localhost',
port: 3000
});
async function sendContext(context: unknown) {
await adapter.send(context);
}
async function receiveContext() {
const received = await adapter.receive();
}
3. エラー処理
統一されたエラー処理メカニズムにより、システムが異常時にも安定して動作することが保証されます。
サンプルエラー処理
import { AdapterError } from './errors';
try {
await sendContext(context);
} catch (error) {
if (error instanceof AdapterError) {
console.error('Adapter error:', error.message);
} else {
console.error('Unexpected error:', error);
}
}
4. パフォーマンス最適化
キャッシュと非同期処理によりシステムのパフォーマンスが向上します。
サンプル最適化コード
import { ContextCache } from './caching';
const cache = new ContextCache();
async function processContext(context: unknown) {
try {
const cached = await cache.get(context.id);
if (cached) return cached;
const validated = validateContext(context);
cache.set(context.id, validated);
return validated;
} catch (error) {
console.error('Processing error:', error);
throw error;
}
}
5. 監視とログ
専用の監視とログツールを統合し、システムの保守を容易にします。
サンプルログ記録
import { Logger } from './logging';
const logger = new Logger('ContextProcessor');
async function processContext(context: unknown) {
try {
logger.info('Processing context with id:', context.id);
} catch (error) {
logger.error('Error processing context:', error);
throw error;
}
}
6. セキュリティ対策
認証とデータ暗号化により、システムのセキュリティが確保されます。
サンプル認証
import { Authenticator } from './security';
async function authenticate(user: User) {
return await Authenticator.validate(user.id, user.password);
}
MCP よくある質問
1. MCP を使い始めるにはどうすればいいですか?
依存関係をインストールし、公式ドキュメントのクイックスタートガイドを参照するだけです。
2. どのようなデータ形式がサポートされていますか?
現在は JSON、Protobuf、および Avro がサポートされており、将来的にはさらに多くの形式が追加される予定です。
3. パフォーマンス上の問題はありますか?
非同期処理とキャッシュメカニズムにより、MCP は高性能な要件を考慮して設計されています。
4. MCP を拡張するにはどうすればいいですか?
プラグイン式のアダプターを使用することで、新しい機能やプロトコルのサポートを簡単に追加できます。
5. 料金はかかりますか?
現在、MCP はオープンソースプロジェクトであり、無料で使用できます。商用サポートについては、メンテナンスチームにお問い合わせください。
MCP プロジェクトへの貢献
コミュニティからのコード、ドキュメント、および提案の貢献を歓迎します!
MCP プロジェクトのメンテナー
- Alice Johnson - プロジェクト発起人 & 主要貢献者
- Bob Smith - コア開発メンバー
- Charlie Brown - テストとドキュメント担当者
MCP プロジェクトに対するご関心とご支援に感謝いたします!さらなる支援が必要な場合は、いつでもコミュニティにお問い合わせください。