Skip to content

[Feature Request] ツール単位でMCPサーバー自体を無効化できる仕組み(deny/allowlist)がほしい #567

Description

@pons-llc

Why

現状、kintone-delete-records / kintone-delete-form-fields / kintone-delete-space / kintone-deploy-app のような破壊的操作を含む26個のツールが常に全て有効になっており、危険な操作を防ぐにはMCPクライアント側の権限設定(deny)に頼るしかありません。しかしクライアントごとに設定方法・設定ファイルの場所が異なり、ユーザーが気づかずに設定し忘れるケースが起きやすいです。

kintoneのAPIトークン権限(レコード閲覧/追加/編集/削除、アプリ管理)でツールを絞ろうとしても、レコード削除以外は粒度が粗すぎて実現できませんでした。

  • kintone-delete-form-fields は、kintone-add-form-fields / kintone-update-form-fields / kintone-update-form-layout / kintone-update-general-settings / kintone-deploy-app と同じ「アプリ管理」権限1つに束ねられており、フィールド削除だけを個別に禁止できません。
  • kintone-deploy-app は、プレビュー環境に溜まった変更(フィールド追加・更新・削除、レイアウト変更、一般設定変更)を本番環境へ確定反映する操作で、1回の呼び出しで最大300アプリを一括反映できます。削除操作ではありませんが、他の変更系ツールの効果を不可逆に確定させる操作であり、実質的に削除系ツールと同格かそれ以上に危険です。
  • kintone-delete-space を含むSpace系ツールは、APIトークン認証ではそもそも全て無効になり、パスワード認証でも利用者のスペース内の役割という別体系の権限にしか依存できず、APIトークンの権限設定では制御できません。

つまり、kintone側の権限だけでは「ツール単位で許可/拒否を決める」ことができず、MCPサーバー自身がツール名を基準に有効/無効を切り替えられる仕組みが必要だと考えています。

What

  • ツール名を指定して個別に無効化できる環境変数・CLIオプション(例: KINTONE_MCP_DISABLE_TOOLS、カンマ区切りで複数指定可能)を追加してほしいです。
  • 可能であれば、明示的に許可したツールだけを有効化するallowlist方式(例: KINTONE_MCP_ENABLED_TOOLS)も検討してほしいです。組織によってはdenylistよりも「明示的に許可したものだけ動く」方が安全に運用できます。
  • 存在しないツール名(typoなど)が指定された場合は、黙って無視せず起動時にエラーにしてほしいです。サイレントに無視されると、denyを設定したつもりが実は効いていない、という事故につながります。
  • 実装イメージとして、既存の src/server/tool-filters.ts の shouldEnableTool() は認証方式(APIトークンかどうか)によるツール除外の仕組みをすでに持っているため、ここにユーザー指定のdeny/allowリストによる判定を追加する形で実現できるのではと考えています。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions