メインコンテンツへスキップ

PDFCheck MCPサーバー

リモートHTTPサーバーまたはローカルMCPブリッジに対応したアシスタントから、PDFメタデータの確認や分析履歴へのアクセスができます。

APIトークンを管理

HTTPで接続する

Add this URL to a client that supports remote HTTP MCP servers. For account access, configure a bearer Authorization header.

Use the MCP endpoint
https://pdfcheck.online/api/mcp

コピーできませんでした。コードを選択して手動でコピーしてください。

Anonymous metadata analysis: 10 checks per day per IP. Free account: 100 checks per day. Individual tools can have different limits.

トークンなし(1日10回の無料チェック)

To analyze a PDF, your assistant needs a file-reading tool that can send its base64 contents. Connecting MCP alone does not provide access to your files.

.cursor/mcp.json
{
    "mcpServers": {
        "pdfcheck": {
            "url": "https://pdfcheck.online/api/mcp"
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

クライアント設定

Connect your app

クライアント設定のYOUR_API_TOKENを置き換えてください。匿名でアクセスする場合はAuthorizationヘッダーを削除してください。

Cursor
.cursor/mcp.json
{
    "mcpServers": {
        "pdfcheck": {
            "url": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

Official setup docs
VS Code
.vscode/mcp.json
{
    "servers": {
        "pdfcheck": {
            "type": "http",
            "url": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

VS Code uses a servers object and an explicit HTTP transport. Store your token through your client’s supported secret settings.

Official setup docs
Windsurf / Cascade
~/.codeium/windsurf/mcp_config.json
{
    "mcpServers": {
        "pdfcheck": {
            "serverUrl": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

These steps apply to the legacy Cascade client, now documented under Devin Desktop. Devin Local uses a different configuration; follow its current client documentation.

Official setup docs

接続を確認する

まずアシスタントにcheck_usageを呼び出すよう依頼してください。次に、ファイルを読み取ってbase64にエンコードできるクライアントでPDFを分析します。リモートHTTPではローカルファイルのパスだけでは使えません。

リクエスト例
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "check_usage",
        "arguments": {}
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

利用可能なMCPツール

これらのMCPツールは、メタデータ分析とアカウント履歴に対応しています。圧縮、構造の検証、署名などのブラウザ向けツールは、これらのメソッドでは提供されていません。

ツール パラメータ アクセス
analyze_pdf file_base64, filename トークン不要
get_analysis token 公開結果またはアカウントのトークン
list_analyses {} アカウントのトークン
check_usage {} トークン不要

analyze_pdf

メタデータ、日付、ソフトウェアのフィールド、ページ数を確認します。リモートツールはfile_base64とfilenameを、ローカルブリッジはfilePathを受け取ります。メタデータは真正性やAIによる作成を証明するものではありません。

get_analysis

返されたdata.idをtokenとして使い、アカウントの分析結果または公開結果を取得します。リモートサーバーでは公開結果を匿名で取得できますが、ローカルブリッジではトークンが必要です。新しい匿名の分析は非公開で、後から取得することはできません。

list_analyses

APIトークンが必要です。リモートサーバーはアカウントの最新の分析を最大50件、ローカルブリッジはRESTの最初のページを返します。各項目にはファイル名、日付、分析IDが含まれます。

check_usage

1日のメタデータ分析の残り回数を確認します。リモートHTTPは匿名での利用に対応していますが、アカウント情報の取得とローカルブリッジにはAPIトークンが必要です。

Send the PDF contents

The analyze_pdf tool accepts file_base64 and filename. Your client must read the PDF and encode it as base64; a local file path alone will not work.

Example tools/call payload
{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "analyze_pdf",
        "arguments": {
            "file_base64": "BASE64_PDF_CONTENT",
            "filename": "document.pdf"
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

レスポンスを読む

ツールの結果では、result.content[0].textにJSONテキストが含まれます。このテキストを解析してsuccess、data、remaining_checksを読み取ります。失敗時にはisErrorも返される場合があります。

レスポンスを読む
if (response.error) throw new Error(response.error.message);
const payload = JSON.parse(response.result.content[0].text);
if (response.result.isError || payload.success === false) {
  throw new Error(payload.message || payload.error);
}
console.log(payload.data, payload.remaining_checks);

コピーできませんでした。コードを選択して手動でコピーしてください。

ローカルブリッジを使う

以下のファイルをpdfcheck-mcp-server.mjsとしてマシン上の任意の場所に保存してください。この軽量スクリプトがAIツールとPDFCheck APIを接続します。

オプションのローカルスクリプトにはNode.js 18以降が必要です。リモートHTTP接続では、Node.jsもスクリプトのダウンロードも不要です。

専用ディレクトリにスクリプトを保存し、そこで依存パッケージをインストールしてください。クライアント設定にはスクリプトのフルパスを指定します。

初回セットアップ:
mkdir pdfcheck-mcp
cd pdfcheck-mcp
npm init -y
npm install @modelcontextprotocol/sdk@1 zod

コピーできませんでした。コードを選択して手動でコピーしてください。

MCPサーバースクリプト
pdfcheck-mcp-server.mjs
#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { readFileSync } from "node:fs";
import { basename } from "node:path";

const API_BASE = "https://pdfcheck.online/api/v1";
const TOKEN = process.env.PDFCHECK_API_TOKEN || null;
const headers = TOKEN
  ? { Authorization: `Bearer ${TOKEN}`, Accept: "application/json" }
  : { Accept: "application/json" };

const server = new McpServer({ name: "pdfcheck", version: "1.0.0" });
const result = (data) => ({
  content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
});

server.tool(
  "analyze_pdf",
  "Inspect PDF metadata, dates, software fields, and page count.",
  { filePath: z.string().describe("Absolute path to the PDF file") },
  async ({ filePath }) => {
    const file = new Blob([readFileSync(filePath)], { type: "application/pdf" });
    const body = new FormData();
    body.append("file", file, basename(filePath));
    const response = await fetch(`${API_BASE}/pdf/analyze`, {
      method: "POST", headers, body,
    });
    return result(await response.json());
  }
);

server.tool(
  "get_analysis",
  "Retrieve an accessible analysis by its share token.",
  { token: z.string().describe("Analysis share token") },
  async ({ token }) => {
    const response = await fetch(`${API_BASE}/pdf/${encodeURIComponent(token)}`, { headers });
    return result(await response.json());
  }
);

server.tool("list_analyses", "List your account analyses.", {}, async () => {
  const response = await fetch(`${API_BASE}/pdf`, { headers });
  return result(await response.json());
});

server.tool("check_usage", "Check your account allowance.", {}, async () => {
  const response = await fetch(`${API_BASE}/user`, { headers });
  return result(await response.json());
});

await server.connect(new StdioServerTransport());

コピーできませんでした。コードを選択して手動でコピーしてください。

Claude / Cursor

スクリプトのパスを絶対パスに置き換えてください。PDFCHECK_API_TOKENにアカウントのトークンを設定するか、匿名分析ではenvを省略してください。

claude_desktop_config.json / .cursor/mcp.json
{
    "mcpServers": {
        "pdfcheck": {
            "command": "node",
            "args": [
                "/absolute/path/pdfcheck-mcp-server.mjs"
            ],
            "env": {
                "PDFCHECK_API_TOKEN": "YOUR_API_TOKEN"
            }
        }
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

接続後は、指定したファイルを読み取れるクライアントで次のようなプロンプトを使ってください。リモートのanalyze_pdfにはfile_base64とfilenameが必要で、ローカルパスだけでは動作しません。ローカルブリッジはfilePathを受け付けます。

PDFを分析
{
    "name": "analyze_pdf",
    "arguments": {
        "filePath": "/absolute/path/document.pdf"
    }
}

コピーできませんでした。コードを選択して手動でコピーしてください。

使用例

接続後は、指定したファイルを読み取れるクライアントで次のようなプロンプトを使ってください。リモートのanalyze_pdfにはfile_base64とfilenameが必要で、ローカルパスだけでは動作しません。ローカルブリッジはfilePathを受け付けます。

PDFを分析
/Users/me/Documents/contract.pdfファイルを分析して、いつ作成されたか、どのソフトウェアが使用されたかを教えてください。
ソフトウェアの兆候を確認
/Users/me/Downloads/report.pdf のCreatorとProducerのフィールドを確認してください。ソフトウェアの兆候を、AIによる作成の証拠としては扱わずに説明してください。
複数ファイルの分析
ダウンロードフォルダから選んだPDFを1つずつ分析してください。記録されている作成日と更新日を比較し、欠落しているメタデータや矛盾するメタデータについて説明してください。
残り回数を確認
PDFCheckで今日あと何回PDFをチェックできますか?

使用量と上限

Anonymous metadata analysis: 10 checks per day per IP. Free account: 100 checks per day. Individual tools can have different limits.

メタデータ分析の場合、アカウントなしとFreeプランは50 MBまで、ProとAIプランは100 MBまでアップロードできます。

APIのメタデータ分析では、処理を制限した軽量モードを使います。フォント、画像、色の詳細な分析は省略され、metadata.basic.partial_analysisはtrueになります。

メタデータやソフトウェアの指標は、著作者、真正性、規格への適合を証明するものではありません。

APIトークンを生成 オプション

トークンは秘密情報として扱ってください。環境変数を使い、不要なトークンはアカウントから失効させてください。

匿名アクセスでは、IPアドレスごとに1日10回のメタデータ分析を利用できます。APIトークン付きの無料アカウントでは1日100回のチェックが可能です。後でアカウントから結果を取得したい場合は、分析時にトークンを使用してください。

Model Context Protocolとは?

Model Context Protocol(MCP)は、AIアシスタントが外部ツールやデータソースに接続できるオープンスタンダードです。チャットウィンドウから直接PDFCheckのようなサービスとAIアシスタントを接続するユニバーサルプラグと考えてください。

リモートHTTPサーバーは、クライアントからBase64エンコードされたPDFの内容を受け取ります。オプションのローカルブリッジは、お使いのマシンからPDFを読み込み、REST APIにアップロードします。どちらもメタデータ分析の結果をcontent[0].text内のJSONとして返します。

接続方式を選択

Bearerヘッダー付きのリモートHTTP MCPに対応したクライアント、またはローカルのstdioブリッジを実行できるクライアントを使用してください。OAuthのみの接続には、このセットアップでは対応していません。

PDFはHTTPS経由でPDFCheckに送信されます。MCPクライアントやAIプロバイダーも、その仕組みによってはファイルやツールの引数を扱う場合があります。機密文書を送信する前に、各サービスのデータポリシーとPDFCheckのプライバシーポリシーをご確認ください。

プライバシーポリシー

よくある質問

APIトークンは必要ですか?

匿名アクセスでは、IPアドレスごとに1日10回のメタデータ分析を利用できます。APIトークン付きの無料アカウントでは1日100回のチェックが可能です。後でアカウントから結果を取得したい場合は、分析時にトークンを使用してください。

PDFファイルはサーバーに保存されますか?

APIはリクエスト後に元のアップロードを保持しません。抽出メタデータと結果は、アカウント状態およびプライバシーポリシーに従って保持されます。

MCPサーバーはファイルを第三者に送信しますか?

PDFはHTTPS経由でPDFCheckに送信されます。MCPクライアントやAIプロバイダーも、その仕組みによってはファイルやツールの引数を扱う場合があります。機密文書を送信する前に、各サービスのデータポリシーとPDFCheckのプライバシーポリシーをご確認ください。

使っているAIツールがここに載っていない場合は?

お使いのクライアントが、Bearerヘッダー付きのリモートHTTP MCPに対応しているか、commandとargsでローカルのstdioサーバーを実行できるかを確認してください。設定形式はクライアントによって異なります。OAuthのみのリモート接続には、このセットアップでは対応していません。

自分でホストしたPDFCheckインスタンスで使用できますか?

はい。サーバースクリプト内のAPI_BASE定数を自分のインスタンスURLに変更してください。