原文(日本語に翻訳)
サブエージェントの disallowedTools における MCPサーバーレベルの指定(mcp__server、mcp__server__*、mcp__*)が、サイレントに無視される問題を修正しました。
原文(英語)
Fixed MCP server-level specs (mcp__server, mcp__server__*, mcp__*) in subagent disallowedTools being silently ignored
概要
サブエージェントの disallowedTools 設定でMCPサーバーレベルの制限(mcp__server、mcp__server__*、mcp__* 形式)を指定しても、サイレントに無視されてサブエージェントがMCPツールを自由に使用できてしまう問題が修正されました。セキュリティ上重要な修正で、サブエージェントへのMCPアクセス制限が正しく機能するようになります。
基本的な使い方
サブエージェントへのMCPツール制限(Agent SDKでの設定):
javascript
// サブエージェントからMCPツールを制限
const result = await agent("タスクを実行してください", {
disallowedTools: [
"mcp__database", // database MCPサーバー全体をブロック
"mcp__filesystem__*", // filesystem MCPサーバーの全ツールをブロック
"mcp__*" // 全MCPサーバーをブロック
]
});実践例
データベースへのアクセスを制限したサブエージェント
javascript
// 読み取り専用タスクでDBへの書き込みを防止
const analyzeResult = await agent(
"コードベースを分析してレポートを作成してください",
{
disallowedTools: [
"mcp__database__write", // DB書き込みをブロック
"mcp__database__execute", // SQLの実行をブロック
"mcp__filesystem__write" // ファイル書き込みもブロック
]
}
);ファイルシステムへのアクセスを完全に制限
javascript
// サンドボックス化されたサブエージェント
const sandboxResult = await agent(
"このコードスニペットを分析してください: " + code,
{
disallowedTools: [
"mcp__*", // 全MCPツールをブロック(修正前は無視されていた)
"Bash", // シェルコマンドもブロック
"Write" // ファイル書き込みをブロック
]
}
);セキュリティ境界の設定
javascript
// ワークフロー内でのMCPアクセス制御
const results = await parallel([
// 安全な読み取り専用エージェント
() => agent("ドキュメントを生成してください", {
disallowedTools: ["mcp__production_db__*"] // 本番DBへのアクセスをブロック
}),
// 制限された書き込みエージェント
() => agent("テストデータを更新してください", {
disallowedTools: ["mcp__production_db__*"] // 本番DBへの書き込みをブロック
})
]);注意点
- この問題は
disallowedToolsでMCPサーバーレベルの指定(mcp__プレフィックス)を使用した場合にのみ影響しました - 個別のMCPツール名(
mcp__server__tool_name形式)は以前から正しく機能していました - セキュリティ上重要な修正です。MCPツールへのアクセス制御を
disallowedToolsに依存している場合はアップデートを推奨します allowedToolsでの制限は別の仕組みで動作しており、この問題の影響を受けませんでした