プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

quotecheck

作者:feenmileバージョン 0.1.1i★ –iパソコンで動く
レジストリ名io.github.feenmile/quotecheck

インストール

概要

作者による説明(英語の原文)

Check that a quoted passage appears word for word in its cited source (URL, DOI or PubMed ID).

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: クリニック・健康

インストール

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

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "quotecheck": {
      "command": "uvx",
      "args": [
        "quotecheck-mcp"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add quotecheck -- uvx quotecheck-mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "quotecheck": {
      "command": "uvx",
      "args": [
        "quotecheck-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "quotecheck": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "quotecheck-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

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

できること

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

基本チェックi

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

  • ✓ 合格

    作者とリポジトリが一致

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

  • … 未チェック

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

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

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

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

  • – 対象外

    OAuthでサインイン

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

  • … 未チェック

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

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

クリニック・健康のほかのサーバーとの比較i

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

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

よくある質問

quotecheckは安全ですか?

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

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

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

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

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

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

GitHubリポジトリの最終更新は–、最新バージョン(0.1.1)がレジストリに届いたのは8 日前です。

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

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

代わりに使えるものは?

同じカテゴリには:Mirobody, FHIR MCP Server, Google Health MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

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

Mirobody

作者:thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

パソコンで動く★ 1,408Apache-2.0今日更新
インストール

FHIR MCP Server

作者:wso2

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

パソコンで動く★ 137Apache-2.09 日前更新
インストール

Google Health MCP

作者:davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

パソコンで動く★ 79MIT4 か月前更新
インストール

作者のREADME

READMEを開く

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

quotecheck

Does the quoted passage actually appear in the source?

AI agents (and people) often cite real sources but misstate what those sources say: real references, wrong claims. quotecheck fetches the cited source and checks that the quoted text is really there, word for word, and tells you where.

$ quotecheck "Mulberry trees" "https://en.wikipedia.org/wiki/Morus_(plant)"

{ "status": "EXACT", "char_start": 9271, "char_end": 9285, "similarity": 1.0, "snippet": "Mulberry trees", "source_final_url": "https://en.wikipedia.org/wiki/Morus_(plant)", "reason": null }

Built by Feenmile.

Verdicts

statusmeaning
EXACTThe quote appears in the source text after normalizing whitespace, curly quotes and dash styles. Matching is case-sensitive.
NEARNo exact match, but a passage with similarity >= 0.90 exists (difflib SequenceMatcher ratio). snippet holds the source's actual wording.
NOT_FOUNDNothing in the retrievable text is close enough. similarity shows the best score found.
SOURCE_UNAVAILABLEThe source could not be fetched or read; reason says why.

char_start / char_end are Python string indices (end exclusive) into the plain text quotecheck extracted from the source, which you can get with quotecheck.fetch_source(source).text.

Read NEAR carefully. A NEAR result means the wording differs. A changed number ("43,548" vs "43,549") or a dropped "not" can still score above 0.90. Use the returned snippet as the quotation, or rephrase as a paraphrase.

Sources

  • https://... or http://... URLs
  • doi:10.xxxx/... (resolved through https://doi.org, following the publisher redirect)
  • pmid:12345 (the PubMed abstract, via NCBI E-utilities efetch, plain text)

Install

The PyPI distribution is named quotecheck-mcp; the import package and the command are still quotecheck.

pip install quotecheck-mcp            # library + CLI, no dependencies

pip install "quotecheck-mcp[mcp]" # also the MCP server (needs the official mcp SDK)

Python 3.10 or newer.

Quick start: CLI

quotecheck "<quote>" <source>

quotecheck "the exact words" doi:10.1371/journal.pone.0000308 quotecheck --strict "the exact words" pmid:33301246 # exit 1 unless EXACT echo "a long passage" | quotecheck - https://example.org/article python -m quotecheck --help

Output is always JSON on stdout. Exit status is 0 when a verdict was printed (1 with --strict unless EXACT) and 2 for usage errors such as an empty quote.

Quick start: library

import quotecheck

result = quotecheck.check("pmid:33301246", "A total of 43,548 participants underwent randomization") print(result.status, result.char_start, result.char_end, result.similarity) print(result.to_dict())

Already have the text? Skip the fetch.

quotecheck.check_text(text, quote, near_threshold=0.90)

The core library uses only the Python standard library.

Quick start: MCP server

The server speaks MCP over stdio and exposes one tool, check_quote(quote, source).

{

"mcpServers": { "quotecheck": { "command": "quotecheck-mcp" } } }

If the script is not on your PATH, use "command": "python", "args": ["-m", "quotecheck.mcp_server"].

The tool description tells the agent to call it before presenting text as a direct quotation, and how to act on each verdict.

Safe fetching

quotecheck fetches URLs that came from model output, so it treats them as untrusted:

  • only http and https; URLs with embedded credentials are refused;
  • the host is resolved and every resolved address must be public: private, loopback, link-local, multicast, reserved and unspecified addresses (including IPv4-mapped IPv6 forms) are refused; the connection then goes to the checked address, so a second DNS answer cannot swap in an internal one;
  • the same checks run again on every redirect, with at most 5 redirects;
  • one 15 second deadline covers the whole fetch, and the body is capped at 5 MB (declared, streamed and after decompression);
  • requests identify as quotecheck/0.1 (+https://feenmile.com);
  • proxy environment variables are not used.

Limits (v0.1)

  • EXACT means the text appears, not that the claim is true. quotecheck does not judge context, meaning, or whether the source is reliable. A quote can be verbatim and still be used to support something the source does not say.
  • No PDFs. PDF responses return SOURCE_UNAVAILABLE with the reason pdf not supported in v0.1. Many DOIs resolve to a landing page whose abstract is HTML; the full text may only be in a PDF.
  • No JavaScript rendering. Pages that build their text in the browser come back empty (SOURCE_UNAVAILABLE) or incomplete (NOT_FOUND).
  • Paywalls, logins, cookie walls and bot blocks. quotecheck sees what an anonymous client sees. Text behind them reads as NOT_FOUND or SOURCE_UNAVAILABLE, which does not mean the quote is wrong.
  • PubMed is abstract-only. pmid: checks the abstract text, not the full paper.
  • Ellipses are literal. A quote that skips words with "..." will not match exactly; check each fragment separately.
  • HTML extraction is simple. Text is taken from the standard-library HTML parser with script, style and template removed. Navigation, footers and hidden elements are included; text split across unusual markup may not join the way it reads on screen.
  • Unicode. Characters are NFKC-normalized one at a time; the same accented letter written in composed and decomposed forms will not match exactly.
  • Fuzzy search is anchored on words shared with the quote. Quotes longer than 20,000 characters are checked for exact matches only.
  • Pages larger than 5 MB are refused rather than truncated.

Development

python -m unittest discover -s tests -t .

python scripts/mutation_check.py

The tests are offline. They run a local http.server fixture. Because the SSRF guard blocks loopback, tests exempt specific fixture (ip, port) pairs with quotecheck._testing.allow_loopback_endpoints, a test-only switch that is off unless a test turns it on. A second fixture server is never exempted, so the tests can prove that a redirect into loopback is refused.

scripts/mutation_check.py copies the project to a temporary directory, disables the address check, and confirms the suite fails.

License

MIT. See LICENSE.

PopNxに聞く