mcpField
S
Shieldmcp

Shieldmcp

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

Shieldmcp について

Shieldmcpは、開発中のMCPサーバー向けセキュリティミドルウェアです。開発者がツール呼び出しを制御・監視でき、公式SDKを変更せずにアクセス制御、出力のサニタイズ、監査ログ、レート制限を追加します。

主な機能

  1. 01許可リストによるツール制御
  2. 02ツール出力のサニタイズ
  3. 03構造化監査ログの記録
  4. 04トークンバケット方式の制限
  5. 05エラー処理の標準化

活用シーン

  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 つのサーバーを複数のクライアントで再利用できます。