mcpField
S
Shield MCP

Shield MCP

ローカル
github.com/modelShieldセキュリティ382 週間前に更新

Shield MCP について

Shield MCP は、開発や監視向けの MCP サーバー用 Python セキュリティミドルウェアです。公式 SDK を変更せず、ツール呼び出しにアクセス制御、出力のサニタイズ、構造化監査ログ、レート制限、標準化されたエラー処理を追加します。

主な機能

  1. 01ホワイトリストによるツールアクセス制御
  2. 02設定可能な出力サニタイズ
  3. 03構造化監査ログ
  4. 04トークンバケット方式のレート制限
  5. 05標準化されたエラー処理
  6. 06MCP Inspector との互換性

活用シーン

  1. 01呼び出し可能なツールの制限
  2. 02ツール結果からの機密データ除去
  3. 03ユーザーやセッション単位での呼び出し監査
  4. 04ツール呼び出し頻度の制限

MCP 対応

公式 SDK を変更せず、MCP サーバーのツール呼び出しにセキュリティと監視のミドルウェアを追加し、MCP Inspector にも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Shield MCP

Python Version License MCP Compatible

Model Context Protocol(MCP)サーバー向けのセキュリティミドルウェアです。公式 SDK を変更することなく、セキュリティ機能と監視機能を強化します。このパッケージは、MCP のドキュメントに記載されたベストプラクティスに従って、MCP ツール呼び出しを保護・監視するためのツールを提供します。MCP の開発に携わる際の抽象化を支援します。

目次

機能

  • ツールアクセス制御:MCP ツールへのホワイトリストベースのアクセス制御
  • 結果のサニタイズ:ツール出力のサニタイズを設定可能
  • 構造化ロギング:structlog を使用した包括的な監査ログ
  • レート制限:レート制限のためのトークンバケットアルゴリズム
  • エラー処理:標準化されたエラー処理とフォーマット
  • MCP Inspector との互換性:MCP Inspector ツールとシームレスに連携

要件

システム要件
  • Python 3.8 以降
  • pip(Python パッケージインストーラー)
  • virtualenv(開発時に推奨)

クイックスタート

from shieldmcp import secure_tool
from shieldmcp.sanitizers import ToolSanitizer
from shieldmcp.rate_limit import RateLimitConfig

# Define allowed tools
ALLOWED_TOOLS = {"search", "read_file", "write_file"}

# Create a text sanitizer
text_sanitizer = ToolSanitizer.createTextSanitizer(
    max_length=1000,
    sensitive_patterns=[
        r"\b\d{16}\b",  # Credit card numbers
        r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"  # Email addresses
    ]
)

# Configure rate limiting
rate_limit = RateLimitConfig(
    requests_per_minute=60,  # 1 request per second
    burst_size=10  # Allow bursts of up to 10 requests
)

# Apply the decorator to your MCP tools
@secure_tool(
    allowed_tools=ALLOWED_TOOLS,
    sanitize_fn=text_sanitizer,
    user_id="user123",
    session_id="session456",
    rate_limit=rate_limit
)
def search(query: str):
    # Your tool implementation
    return results

コンポーネント

デコレーター(decorators.py)

すべてのセキュリティ機能を統括するメインの @secure_tool デコレーター:

@secure_tool(
    allowed_tools={"tool1", "tool2"},  # Set of allowed tool names
    sanitize_fn=your_sanitizer,        # Optional result sanitization function
    user_id="user123",                 # Optional user identifier
    session_id="session456",           # Optional session identifier
    rate_limit=RateLimitConfig(        # Optional rate limit configuration
        requests_per_minute=60,
        burst_size=10
    )
)
def your_tool():
    pass
監査ログ(audit.py)

structlog を使用した構造化ロギング:

from shieldmcp import ToolAudit

audit = ToolAudit()
audit.logToolCallStart(
    tool_name="search",
    args={"query": "test"},
    user_id="user123"
)
アクセス制御(access.py)

ツールのアクセス検証:

from shieldmcp import ToolAccess

access = ToolAccess(allowed_tools={"tool1", "tool2"})
access.validateToolAccess("tool1")  # Raises ValueError if not allowed
サニタイザー(sanitizers.py)

結果のサニタイズユーティリティ:

from shieldmcp import ToolSanitizer

# Create a custom sanitizer
sanitizer = ToolSanitizer.createTextSanitizer(
    max_length=1000,
    sensitive_patterns=[r"\b\d{16}\b"]
)

# Use it directly
clean_text = sanitizer("Your text with sensitive data")
レート制限(rate_limit.py)

トークンバケット方式のレート制限:

from shieldmcp import RateLimitConfig

# Configure rate limits
config = RateLimitConfig(
    requests_per_minute=60,
    burst_size=10
)

ベストプラクティス

ツールアクセス制御
  • 常に許可するツールのホワイトリストを定義してください
  • 可能な限り制限されたツールセットを使用してください
  • ホワイトリストを定期的に確認し、更新してください
結果のサニタイズ
  • すべてのテキスト出力をサニタイズしてください
  • 機密データのパターンを定義してください
  • 適切な長さの上限を設定してください
ロギング
  • 利用可能な場合はユーザー ID とセッション ID を含めてください
  • 成功した操作と失敗した操作の両方を記録してください
  • より適切な分析のために構造化ロギングを使用してください
レート制限
  • ツールの複雑さに応じて適切な制限を設定してください
  • ユーザー体験の向上のためにバーストサイズを検討してください
  • ログでレート制限への到達状況を監視してください

開発

開発環境のセットアップ
# Clone the repository
git clone https://github.com/shieldmcp/shieldmcp.git
cd shieldmcp

# Create virtual environment
python -m venv venv
source venv/bin/activate  # or `venv\Scripts\activate` on Windows

# Install development dependencies
pip install -r requirements.txt
テストの実行
pytest tests/

ロードマップ

今後予定されている機能
  • Clerk MCP と Github MCP のサポート
  • ドキュメントの拡充
  • TypeScript のサポート

謝辞


お気軽にお問い合わせください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。