NoveLandMCPと「AI機能利用設定」の関係について

作品の設定画面でAI機能の利用範囲を設定できますが、ここでの設定はMCPの利用にも影響するのでしょうか?

また、MCP経由で行った操作も利用状況として記録されているのでしょうか?

影響します!
補助利用までの場合、本文を生成する機能だけ制限されます。全てオフの場合、MCPにAIがアクセスすることはできません。

どのデータに対してどんな種類の操作をしたのかだけ保存されます。唯一本文だけ生成した内容と手動で編集した差分の確認などのために、AIの生成内容を保存させていただいています。
データの取り扱いとして、アカウント削除時にこれらの記録もちゃんと消される仕様となっています。

「いいね!」 1

ありがとうございます。

少し話が逸れるのですが、私自身は作品によってAIの利用度合いが異なっており、全くAIを使用しない作品もあれば、本文生成までやらせている作品もあります。

AI機能利用設定はアカウント全体に適用される仕様のようなので、この場合はいったん「すべて許可」としておいて接続させているAI側で制御する、というのが良いのでしょうか?(Claude Codeのsettings.local.jsonでupdate_episodeをdenyしておくとか)

「いいね!」 1

そうですね、現状だとそうしていただく形になります :folded_hands:

AIの利用制限機能についてはユーザー単位か作品単位かとても迷ったのですが、やっぱり作品単位の方が良いかもですね
仕様変更も視野に入れてちょっと検討してみます :thinking:

「いいね!」 1

@Umineko4cat
コメントした後に考えてみたのですが、create_episodeでも本文を書き込めるのとupdate_episodeをdenyしちゃうとタイトルだけ変えたい時などに困るので難しいことに気づきました。
claude codeでしたら以下のhooksという設定でcontentだけ編集できないようにして本文変更判定に引っかからないようにできるので、これを使うのがおすすめです。

この僕のコメントへのリンクをそのままclaude codeに渡せばいい感じに解釈して設定してくれるはずです

※ noveland-author の部分はお手元の設定次第で変わる可能性があります。

1. ~/.claude/hooks/protect-noveland-episode-content.sh

#!/bin/bash
# NoveLand MCP の create_episode / update_episode で content パラメータ指定をブロックするフック

INPUT=$(cat)
TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name')

case "$TOOL_NAME" in
  mcp__noveland-author__noveland_create_episode | mcp__noveland-author__noveland_update_episode)
    if echo "$INPUT" | jq -e '.tool_input | type=="object" and has("content")' >/dev/null 2>&1; then
      echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny","permissionDecisionReason":"create_episode / update_episode の content
パラメータは禁止されています。本文の意図せぬ上書きと text_generate_support
扱いを避けるためのフックです。本文の変更が必要な場合はエディタUIから操作するか、フックを一時的に外してください。"}}'
      exit 0
    fi
    ;;
esac

exit 0

作成後に実行権限を付与:

chmod +x ~/.claude/hooks/protect-noveland-episode-content.sh

2. ~/.claude/settings.jsonhooks.PreToolUse 配列に追加

{
  "matcher": "mcp__noveland-author__noveland_create_episode|mcp__noveland-author__noveland_update_episode",
  "hooks": [
    {
      "type": "command",
      "command": "bash ~/.claude/hooks/protect-noveland-episode-content.sh"
    }
  ]
}

~/.claude/settings.json がまだ無い場合は以下をそのまま保存:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "mcp__noveland-author__noveland_create_episode|mcp__noveland-author__noveland_update_episode",
        "hooks": [
          {
            "type": "command",
            "command": "bash ~/.claude/hooks/protect-noveland-episode-content.sh"
          }
        ]
      }
    ]
  }
}

3. Claude Code を再起動(または /hooks で設定リロード)

動作確認

Claude Code に「update_episode で content を指定して」と依頼 → 以下のメッセージで拒否されれば成功:

create_episode / update_episode の content パラメータは禁止されています。本文の意図せぬ上書きと text_generate_support
扱いを避けるためのフックです。本文の変更が必要な場合はエディタUIから操作するか、フックを一時的に外してください。

「いいね!」 1

詳細にありがとうございます!

ただ、ClaudeCodeなら上記で良さそうですが、ブラウザ版Claudeだったり他のツールでやっている場合も同様にうまくやれそうかは少し気になってはいます。

MCP使っている全員が全員、各ツールの設定に精通しているわけではないかなと思いますし(まぁMCP使っている時点である程度の知識はあると考えてしまっても良いかもしれないですが…)

そうなんですよね、それもあって設定は作品単位の方が良さそうだなと思い始めてます :thinking:
対応時期は未定ですがやるとしたらユーザー数が少ないうちにサッとやると思います