この記事でやること
- ナレッジベース用のMCPツールが何を必須にしているかを、curlとjqで確かめる
- Claudeが「記事が見つからない」「出典が付かない」と言うときに、どこを順に見ればいいかを整理する
- 出典付きで答えさせ、あとで古くなった回答を洗い出すためのプロンプトを、そのまま使える形で置いておく
前提・環境
- Claude(claude.aiのカスタムコネクタ、またはClaude Code)にosFoundryのMCPサーバー
https://api.osfoundry.io/api/v1/external-mcpを追加済み - 接続はワークスペース1つに対して承認済み
- 手元に
curlとjqがある - 記事中のナレッジベース名、記事名、IDは表示例
ナレッジベース用ツールの必須引数を確かめる
tools/list は認証なしで叩けます。ナレッジベースに関係するツールと、汎用のイベント取得ツールだけを抜き出します。
curl -s -X POST https://api.osfoundry.io/api/v1/external-mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| jq -r '.result.tools[]
| select(.name | test("knowledge|poll_resource"))
| [.name, (.annotations.readOnlyHint | tostring),
(.annotations.openWorldHint | tostring), (.inputSchema.required | join(","))]
| @tsv'
2026-11-08に叩いた結果です。
search_knowledge_base true false knowledge_base_id,query
read_knowledge_article true false knowledge_base_id,article_id
edit_knowledge_article false true knowledge_base_id,article_id,content,expected_version,idempotency_key
poll_resource_events true false resource_type,resource_id
ここから分かることは4つです。
- 検索の
queryは2〜200文字、limitは1〜20。1文字のキーワードでは検索できません - 編集だけが書き込みで、
expected_versionとidempotency_keyが必須です。expected_versionはread_knowledge_articleが返した版を使います - 編集だけ
openWorldHintがtrueです。保存した記事は、ワークスペースのほかのアシスタントや検索がそのまま根拠にします -
poll_resource_eventsのresource_typeにはknowledge_baseを指定でき、after_sequenceから再開できます。1回に返るのは最大100件です
ナレッジベースが見えるようになるまでのチェックリスト
上から順に確認すると早いです。
1. 接続がプロジェクトに追加されているか
鍵アイコン → Connected で接続を選び、Projects に対象のプロジェクトが並んでいるかを見ます。なければ「Choose a project」で選んで Add to project を押します。作ったばかりの接続は何も見えません。
2. ナレッジベースがそのプロジェクトに入っているか
ナレッジベースを開き、右パネルの「設定」で「プロジェクト」欄を確認します。選んだ時点で保存されます。
3. 記事が公開済みになっているか
記事を選び、右パネルの「公開」タブでステータスを見ます。「下書き」ならClaudeの検索にも読み取りにも出てきません。「記事を公開」を押します。公開済みの記事はワークスペースのAIアシスタントと検索で使われ、ワークスペースの外には表示されません。
4. ツールがオンになっているか
接続の Tools で、search knowledge base、read knowledge article、poll resource events にチェックが入っているかを見ます。対応ツールは最初から全部オンです。
5. 自分にその記事の編集権限があるか(編集させる場合)
Claudeの書き込みは、接続を承認した人の権限で呼び出しごとに確認されます。閲覧しかできないナレッジベースでは、ツールがオンでも edit_knowledge_article は通りません。
そのまま使えるプロンプト
出典付きで答えさせる
osFoundryの「Support」ナレッジベースだけを根拠に答えて。
1. search_knowledge_base で探し、使う記事は read_knowledge_article で必ず本文を読む
2. 各文の後ろに [article_id · updated_at] を付ける
3. 公開記事に書かれていないことは推測せず「記事にない」と書く
4. 最後に、このとき見た最新のイベントのシーケンス番号を poll_resource_events で取得して書いておく
4つ目は省いても構いませんが、入れておくと翌日の確認が1回の呼び出しで済みます。
古くなった回答を洗い出す
この会話で出した回答のうち、出典の記事が更新・非公開化されたものを挙げて。
poll_resource_events を resource_type "knowledge_base"、after_sequence に
前回控えた番号を入れて呼び、出てきた記事のうち引用したものだけを読み直すこと。
引用した記事を全部読み直すより、イベントのログを読むほうが軽く済みます。手元で模擬した1日(記事400本、回答120件、人の保存300回)では、1時間ごとの確認が、全件読み直しで平均56.6回の呼び出しだったのに対し、ポーリングでは1回でした。
記事を直させる
FAQの記事を、返金ポリシーの記事に合わせて直して。
直す直前に read_knowledge_article で読み直し、その version を expected_version に使うこと。
idempotency_key は "faq-refund-30d" にして。
見つからない・出典が付かないときに見るところ
| 症状 | 見るところ |
|---|---|
| ナレッジベース自体が出てこない | 接続のProjects、ナレッジベースの「プロジェクト」欄 |
| ナレッジベースは見えるが記事が出ない | 記事の「公開」タブのステータス |
| 昨日まで出ていた記事が出ない | 非公開に戻されていないか、プロジェクトを移していないか |
| 検索がエラーになる |
query が2文字未満、または200文字を超えていないか |
| 出典に時刻が付かない |
read_knowledge_article を呼ばずに検索結果だけで答えていないか |
| 編集が拒否される | 読んでから時間が経っていないか。読み直してから再度依頼 |
よくある疑問
編集が拒否されたのは失敗ですか
いいえ。Claudeが読んだあとに誰かが記事を保存していると、古い版を名乗った編集は受け付けられません。全文を置き換えるツールなので、サーバー側でマージはしません。読み直して当て直すのが正しい流れです。前の日の出典に入っていた版をそのまま使うと、ほぼ確実にこうなります。
同じ編集が2回保存されることはありますか
同じ idempotency_key で送り直した場合、2回目は最初の結果が返り、記事は二重に書き換わりません。
出典にタイトルだけ付ければ十分ではありませんか
タイトルだけでは、改題や非公開化にしか気づけません。同じタイトルのまま本文が変わった記事は見分けられないので、IDと更新時刻を残しておくほうが確実です。
Claude Codeで毎回許可を求められるのはなぜですか
edit_knowledge_article は readOnlyHint: false、destructiveHint: true として宣言されているので、Claude Codeは許可していない限り実行前に確認します。読み取り系の3つはどれも readOnlyHint: true です。
呼び出しの記録はどこで見られますか
鍵アイコン → Connected で接続を選び、Recent activity を開きます。ツール名、判定、時刻が並びます。
まとめ
- 検索・読み取り・ポーリングは読み取り専用で、書き込みは
edit_knowledge_articleだけ。版と冪等キーが必須 - 見えないときは、接続のプロジェクト、ナレッジベースのプロジェクト、記事の公開状態、Tools、編集権限の順に見る
- 出典にはIDと更新時刻を残させ、古さの確認はイベントのログで行う
ナレッジベースに何を置けて、記事の版がどう管理されるかはナレッジベースのページに、ナレッジベース機能の全体像はナレッジベースの機能ページにあります。