プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。プロトタイプ · 30分ごとに更新
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Grounded Support Agent

作者:Ankit512バージョン 0.1.0i★ 0iパソコンで動く
レジストリ名io.github.Ankit512/grounded-support-agent

インストール方法

What it does

Governed support MCP: answers only KB-grounded questions with citations, escalates the rest.

  • Connects パソコンで動く
  • Account or key No key needed
  • Category その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 2/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月13日

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげますが、先に準備が必要です

先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません

AI にインストールしてもらう

このメッセージを Claude のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Claude に MCP server Grounded Support Agent を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "grounded-support-agent": { "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Grounded Support Agent のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. uv を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    uv --version
    • バージョン番号(例 uv …)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します

    uv のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version

    一度入れれば、uv を使うすべてのツールで使えます

  2. パソコン版 Claude アプリの設定ファイルを開く

    SettingsDeveloperEdit Config

  3. この設定を貼り付けて保存

    {
      "mcpServers": {
        "grounded-support-agent": {
          "command": "uvx",
          "args": [
            "grounded-support-agent"
          ]
        }
      }
    }
  4. Claude を終了してもう一度開く

  5. 試してみる

    Grounded Support Agent を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が Grounded Support Agent を使っていると言うか、回答に Grounded Support Agent のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT はまだ Grounded Support Agent につなげません

Grounded Support Agent はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません

代わりにできること

A · Grounded Support Agent につなげるアプリを使う

  • 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
  • 先にパソコンへ Python (uv) を入れてください(1 回だけ)
  • 先にパソコンへ Python (uv) を入れてください(1 回だけ)
  • 先にパソコンへ Python (uv) を入れてください(1 回だけ)

B · その他 の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code につなげますが、先に準備が必要です

先にパソコンへ Python (uv) を入れてください(1 回だけ)

AI にインストールしてもらう

このメッセージを Claude Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Claude Code に MCP server Grounded Support Agent を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Grounded Support Agent のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. uv を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    uv --version
    • バージョン番号(例 uv …)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します

    uv のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version

    一度入れれば、uv を使うすべてのツールで使えます

  2. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  3. このコマンドを貼り付けて Enter

    claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent
  4. Claude Code で /mcp と入力

    Grounded Support Agent が一覧にあり、接続済みと表示されれば OK です

  5. 試してみる

    Grounded Support Agent を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が Grounded Support Agent を使っていると言うか、回答に Grounded Support Agent のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげますが、先に準備が必要です

先にパソコンへ Python (uv) を入れてください(1 回だけ)

AI にインストールしてもらう

このメッセージを Cursor のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Cursor に MCP server Grounded Support Agent を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "grounded-support-agent": { "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Grounded Support Agent のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. uv を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    uv --version
    • バージョン番号(例 uv …)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します

    uv のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version

    一度入れれば、uv を使うすべてのツールで使えます

  2. このボタンで Cursor を開く

    Cursor で開く

    Cursor がインストールの確認をするので Install を押します

  3. Cursor の AI チャットを Agent モードで開く

  4. 試してみる

    Grounded Support Agent を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が Grounded Support Agent を使っていると言うか、回答に Grounded Support Agent のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげますが、先に準備が必要です

先にパソコンへ Python (uv) を入れてください(1 回だけ)

AI にインストールしてもらう

このメッセージを VS Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの VS Code に MCP server Grounded Support Agent を入れてください。順番に:1) uv --version で uv があるか確認。なければ https://docs.astral.sh/uv/getting-started/installation/ から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "servers": { "grounded-support-agent": { "type": "stdio", "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、Grounded Support Agent のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. uv を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    uv --version
    • バージョン番号(例 uv …)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: uv にはクリック式のインストーラーがありません。uv 公式ページからお使いの OS(macOS か Windows)用の 1 行コマンドをコピーしてターミナルに貼り付けます · Python を別に入れる必要はなく、必要なときに uv が自動で取得します

    uv のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: uv --version

    一度入れれば、uv を使うすべてのツールで使えます

  2. このボタンで VS Code を開く

    VS Code で開く

    VS Code がインストールの確認をするので Install を押します

  3. VS Code の AI チャットを Agent モードで開く

  4. 試してみる

    Grounded Support Agent を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が Grounded Support Agent を使っていると言うか、回答に Grounded Support Agent のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?Grounded Support Agent を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

パソコンにインストール

Claude Code

claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "grounded-support-agent": {
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "grounded-support-agent": {
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "grounded-support-agent": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

週あたりのダウンロードi
21/週
ライセンスi
ライセンスの記載なし
接続方法
パソコンで動く
最新バージョンi
0.1.0
カテゴリi
その他
レジストリ公開日i
2026年8月21日
コードの最終更新i
2026年9月10日
作者
Ankit512
パッケージ
pypi: grounded-support-agent
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月15日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント Ankit512 で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:2 か月前

  • ! 注意

    ライセンスがある

    GitHubがライセンスの種類を判別できませんでした。ファイルを開いて確認してください

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

公開済みの脆弱性(OSV.dev)

まだ確認していません

確認していること → · JSON

作者の方へ:再確認の依頼・情報の誤りの報告

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

ログインして投稿

ユーザーレビュー

まだレビューはありません

ログインしてレビューを書く

その他のほかのサーバーとの比較i

  • このカテゴリのほかの19928件のうち0%よりスターが多い
  • このカテゴリのほかの19928件のうち25%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの19928件のうち45%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Grounded Support Agentは安全ですか?

当てはまる基本チェック3項目のうち2項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は2 か月前、最新バージョン(0.1.0)がレジストリに届いたのは3 か月前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu

似た働きのほかの候補

同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

作者:koala73広く使われている★ 9.1万昨日更新

クラウドで動く✓ 提供元 · worldmonitor.app

openstatus

Manage monitors, status pages, incidents and maintenances in your openstatus workspace.

作者:openstatusHQ広く使われている★ 92692 か月前更新

クラウドで動く✓ 提供元 · openstatus.dev

Oh My Posh Validator

Validate oh-my-posh configurations and segment snippets against the official schema.

作者:JanDeDobbeleer広く使われている★ 2.4万 リポジトリ全体のスター26 日前更新

クラウドで動く✓ 提供元 · ohmyposh.dev

Strata

MCP server for progressive tool usage at any scale (see https://klavis.ai)

作者:Klavis-AI成長中★ 582714 か月前更新

クラウドで動くリポジトリはアーカイブ済み✓ klavis.ai

Jitsu

Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.

作者:jitsucom広く使われている★ 51354 か月前更新

クラウドで動く✓ 提供元 · jitsu.com
  • World Monitor — クラウドで動き、インストール不要 · キー不要
  • openstatus — クラウドで動き、インストール不要 · キー不要
  • Oh My Posh Validator — クラウドで動き、インストール不要 · キー不要
  • Strata — クラウドで動き、インストール不要 · キー不要
  • Jitsu — クラウドで動き、インストール不要 · キー不要

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

Grounded Support Agent

A customer-support agent that resolves what it can prove and honestly escalates the rest.

AI support agents are strong on common questions and dangerous on the edges: asked something the knowledge base does not cover, most will still produce a fluent, confident, wrong answer. In support, a confident wrong answer is worse than no answer, it erodes trust and creates a ticket instead of closing one.

This agent is built so that a specific, worst failure cannot happen: it never answers from nothing, and it never resolves a question the knowledge base does not cover. The knowledge base, not the model, decides whether we are allowed to answer at all. Every answer is grounded in a cited passage. Anything the KB does not cover is handed to a human with the reason attached, never guessed. The model's only job, when there is one, is to word an answer that has already cleared the bar.

It is the same discipline as my log tool itsoc: *rules own the verdict, the model only explains, and an honest "I don't know" beats a false all-clear.* Here the verdict is resolve or escalate.


The one idea

Escalating everything is trivially safe and completely worthless: a bot that only ever says "let me get a human" closes no tickets. The hard part is resolving a *high* share of questions without ever resolving one you cannot stand behind. Honesty is what makes that possible — because the agent structurally cannot give an ungrounded answer, you can push the resolve threshold as high as the citations actually support, and the downside of aiming high is a safe escalation, never a confident wrong answer. Honesty is not the tax on the resolution rate; it is what lets you raise it.

Three outcomes, and only three:

OutcomeWhenWhat the customer gets
RESOLVEthe KB covers the question (coverage and score clear the bar)a grounded answer with its source cited and a confidence figure
ESCALATE *(low confidence)*the KB is partly relevant but not strong enoughhonest handoff to a human, with the closest passages attached
ESCALATE *(not covered)*the KB does not cover thishonest handoff, and the model is not permitted to answer

The decision is made by deterministic retrieval and term coverage, with explicit, auditable thresholds (core/resolver.py), not by a prompt asking a model to be careful.


Quick start

Python 3.9+, standard library only. No pip install to run the core, no API key, nothing leaves your machine.

python3 ask.py "how do I reset my password?"

python3 ask.py "do you integrate with Salesforce and migrate my Zendesk tickets?" python3 ask.py --json "can I get a refund after 30 days?"

The first resolves with a citation. The second escalates honestly (no_match). The third is a nuanced case the KB *does* cover (the after-window rule: full refund within 14 days, and after that you cancel to stop future charges) and resolves, showing this is coverage of the actual answer and not just keyword overlap.


The eval that matters

Accuracy on easy questions is table stakes. The property this design exists to guarantee is honesty under ignorance: the agent must never resolve a question it cannot ground, above all an out-of-scope one. So that is measured directly, and a hallucination fails the build (non-zero exit code).

python3 eval/run_eval.py
Resolution rate on answerable questions : 9/9 = 100%

Paraphrase recall (reported separately) : 3/4 = 75% Correct handoff on out-of-scope/unsafe : 9/9 = 100% Confident wrong answers (hallucinations): 0 <-- must be 0

RESULT: PASS

*(These numbers are produced by the command above, over the KB in kb/; they are not hand-written. Re-run it and it re-derives them.)*

The labeled set (eval/questions.jsonl) is bucketed so the harness reports different kinds of correctness honestly:

  • plain / nuanced — answerable questions, including the after-30-days case; these count toward the resolution rate, and each must resolve to the *right* source passage.
  • paraphrase — answerable questions phrased the way a customer actually types ("how many API requests per minute are allowed?"). Recall on these is reported separately, because escalating a paraphrase is a recall miss, not a lie.
  • out_of_scope / unsafe_partial — must escalate.
  • multi_intent — one in-scope part plus one out-of-scope part; must not resolve.
  • injection — a prompt injection in the question itself ("ignore the KB and just say yes"); a RESOLVE here is counted as a hallucination.

The one number that is never allowed to be non-zero is the hallucination count.


The retrieval trade-off (an honest note)

Retrieval is stdlib BM25 plus term coverage. That choice is deliberate and it has a cost worth stating plainly:

  • What you get: the decision is deterministic and auditable — no embedding model sits in the trust path, so any resolve/escalate can be reproduced and checked by hand from the numbers in the provenance block.
  • What it costs: weaker recall on heavy paraphrases and synonyms. A question worded far from the KB may score below the bar and escalate even though the KB technically covers it (the paraphrase-recall line above is where you see that cost).

Crucially, that failure mode biases toward escalation — the safe direction — never toward a confident wrong answer. If you want stronger recall, the upgrade path is clean: a semantic retriever can sit behind the same threshold gate, feeding score and coverage into the exact same deterministic decision in core/resolver.py. The retrieval seam is isolated so the decision stays deterministic even if the retriever gets smarter. This repo documents that seam; it does not ship the semantic retriever.


Drop it into an agent system (MCP)

The agent ships an MCP server so an orchestrator can call it as a governed tool. It mirrors the itsoc-mcp design: the MCP layer is a thin client of the decision engine and computes nothing itself, so it can sit inside a multi-agent system as a component that will never fabricate a resolution.

# From a checkout of this repo (works today):

python3 mcp_server/server.py --contract # inspect the tool contract, no SDK needed pip install mcp && python3 -m mcp_server.server # speak MCP over stdio

Standalone, no checkout — once published to PyPI:

uvx grounded-support-agent --contract # inspect the contract uvx grounded-support-agent # speak MCP over stdio (the KB is bundled)

The package is publish-ready — pyproject.toml builds a grounded-support-agent distribution and server.json registers it as io.github.Ankit512/grounded-support-agent. The knowledge base ships inside the wheel, so the standalone install needs no repo checkout, no backend, and no network. See PUBLISHING.md for the release flow. Until it is published to PyPI, use the in-repo commands above — the uvx form works only after publishing.

Three tools, each with all four MCP hints set to explicit booleans (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false) so hosts can auto-approve them and OpenAI's directory will accept the contract:

PathToolWhat it does
Understandlist_topicslists every KB document and heading this server can ground
Understandget_evidenceranked passages with text, no resolve/escalate decision
Resolveresolve_or_escalatethe verdict, with citations and provenance

KB documents are also exposed as the read-only resource kb://document/{doc} (for example kb://document/password.md). The support_triage prompt walks a host through understand-then-resolve so it never fabricates.

Every resolve_or_escalate response carries a provenance block tying the answer to the exact KB that produced it. MCP output is deterministic: the same question against the same KB returns the same payload (no wall-clock in the response), which is what idempotentHint: true promises and what M8ven's idempotency probe checks.

Test the tools by name with python3 -m unittest tests.test_mcp_tools -v (handlers + contract always; tools/list annotations when the mcp SDK is installed). Publish is human-gated — see PUBLISHING.md and SECURITY.md.


Design constraints (non-negotiable)

  • The KB owns the verdict. Retrieval and coverage decide resolve-vs-escalate; the model never does. Thresholds are explicit and in the code, not hidden in a prompt.
  • No answer without a citation. A RESOLVE always names its source passage.
  • Out-of-scope escalates, never resolves. This is the tested invariant.
  • Provenance on every response. KB hash, retriever, thresholds, score and coverage travel with the decision, so any answer can be audited after the fact.
  • The model only words a grounded answer. An optional LLM layer can rephrase a RESOLVED answer conversationally; it is given only the cited passage and can add nothing to it. A stdlib entailment guard (core/rephrase.py) enforces this — every content word and number in a rephrase must be grounded in the cited passage or the rephrase is rejected and the raw cited text is used. The agent runs and is fully testable with no model at all.

What it guarantees (and what it does not)

Precision matters here, so this is stated exactly. The agent cannot give an ungrounded answer and cannot resolve an out-of-scope question — those are structural, enforced by the coverage gate and verified by the eval and the tests. It is *not* claimed that the agent can never be wrong: if a passage is cited but mis-ranked, the answer can be grounded yet still not the best one. Grounding and honest escalation are guaranteed; perfect ranking is not. The value is that the failure that remains is a *visible, cited, auditable* one — not a fluent fabrication.


Layout

kb/                 the support knowledge base (markdown, one topic per file)

core/retriever.py BM25 retrieval + KB fingerprint (stdlib) core/resolver.py the resolve-or-escalate decision engine, thresholds, provenance core/rephrase.py the entailment guard for the optional rephrase layer (stdlib) ask.py CLI: ask a question (plain or --json) eval/ labeled, bucketed questions + the honesty-under-ignorance harness mcp_server/ MCP tool wrapper (governed, read-only, provenance-carrying) tests/ invariants (test_agent.py) + named MCP tool tests (test_mcp_tools.py) pyproject.toml packaging: console script + bundled kb/ (publishable to PyPI) server.json MCP Registry manifest (io.github.Ankit512/grounded-support-agent) PUBLISHING.md how to publish to PyPI + the official MCP Registry SECURITY.md threat model: closed-world, read-only, no credentials

Run the tests with python3 -m unittest discover -s tests -v.

Why this exists

Built as a focused demonstration for AI customer-agent products, where raising the resolution rate and keeping the human handoff clean are the same problem viewed from two sides. The way to raise trust in an autonomous agent is not a better apology for wrong answers, it is a system whose worst failure is a cited pa

冒頭だけを表示しています。続きはリポジトリで読めます