Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Building MCP Tools: A PDF Processing Server

2025年09月18日に「Dev.to」が公開したITニュース「Building MCP Tools: A PDF Processing Server」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AIと外部ツールを連携するMCP標準を活用し、FastMCPでPDF処理サーバーを構築する開発記事。PDFのテキスト抽出、結合、分割、画像変換など多彩な機能を提供。サービス、ツール、登録の3層に分け、AIがPDF操作を実行できるクリーンなアーキテクチャを初心者向けに解説する。

出典: Building MCP Tools: A PDF Processing Server | Dev.to公開日:

ITニュース解説

AI(人工知能)技術の進化は目覚ましく、大規模言語モデル(LLM)などは人間のような自然な会話や文章生成ができるようになった。しかし、これらのAIモデルには、まだ直接扱えない情報源が多く存在する。例えば、AIはPDFファイルの内容を直接読み込み、そこから特定の情報を抽出したり、内容を操作したりすることが苦手だ。このようなAIの限界を克服し、現実世界の多様なデータやサービスとAIを結びつける画期的な仕組みとして、「Model Context Protocol(MCP)」が登場した。

このMCPという新しい標準は、AIモデルが外部のツールやサービスと連携し、その能力を大幅に拡張するための「橋渡し役」となる。今回のニュース記事では、このMCPを活用して、PDFファイルの様々な処理を可能にするサーバーを構築する具体的な方法が紹介されている。特に「FastMCP」というライブラリを使用し、PDFからのテキスト抽出を例に、サーバーの設計思想、エラー処理、そして実際の運用に耐えうる機能の作り方が詳しく解説されている。

今回構築するPDF処理サーバーは、多岐にわたる機能を提供する。まず「サーバーとファイルユーティリティ」として、サーバーの状態確認、一時ディレクトリ内のファイル一覧表示、ローカルやURLからのファイルアップロード、サーバーからファイルをダウンロードする機能がある。これにより、AIが処理したいPDFファイルをサーバーに送り込んだり、処理結果を受け取ったりすることが可能になる。

次に「テキストとメタデータ」関連の機能では、PDFのページ数やファイルサイズ、暗号化状態の取得、PDF全体のテキスト抽出、特定のページ範囲からのテキスト抽出、そして著者名やタイトル、作成日といったPDFに埋め込まれたメタデータの読み取りができる。AIはこれらのツールを使って、PDFの内容を理解し、必要な情報をピンポイントで取り出すことができる。

さらに「PDF操作」機能として、複数のPDFファイルを一つにまとめたり、一つのPDFをページ範囲で分割して複数のファイルにしたり、特定のページの向きを回転させたりする操作が可能だ。これは、AIがPDF文書を整理・編集する際に役立つだろう。

そして「変換」機能では、PDFの指定ページを画像ファイル(PNG、JPEGなど)に変換したり、複数の画像ファイルから新しいPDFを作成したりできる。これにより、PDFの内容を画像として利用したり、画像資料をPDF形式にまとめたりと、AIの活用範囲が広がる。

この記事では、特に「テキスト抽出(extract_text)」ツールを例に、サーバー開発の具体的なステップが示されている。開発の核となるのは、「Service」「Tool」「Registration」という3つの役割にコードを明確に分離する設計パターンだ。この分離により、コードが整理され、テストしやすく、将来的に機能を追加しやすいという大きなメリットが生まれる。

まず「Service(サービス)」層は、PDF処理の核となる「実際の仕事」を実行する部分だ。ここでは、サーバーやMCPといった仕組みを一切意識せず、ただ純粋に「指定されたPDFファイルからテキストを抽出する」というタスクをこなすPython関数を作成する。記事の例では、「pdfplumber」というライブラリを使ってPDFを開き、各ページからテキストを抽出し、それらを結合して返す。このとき、単にテキストを返すだけでなく、抽出したテキスト、ページ数、文字数といった情報を「TextExtractionResult」という決まった構造のデータとして返すようにしている。これにより、結果が常に一定の形式で提供され、後の処理がしやすくなる。このService層のコードは、FastMCPサーバーとは独立しているため、他のどんなPythonアプリケーションでも再利用できるほど汎用性が高い。

次に「Tool(ツール)」層は、Service層で作成した純粋な処理機能を、AIが呼び出せる「MCPツール」として公開するための「橋渡し役」を果たす。この層は、AIからの柔軟な入力(例えば、ファイルのパス、一時的に保存されたファイル名、あるいはファイルの中身を直接送るBase64形式のデータなど)を受け取り、それをService層が期待する形式(つまり、ファイルの絶対パス)に変換する役割を担う。そして、Service層が処理を終えて返してきた結果を、AIが理解しやすいJSON形式のデータに整形して返す。また、この層は「try...except」構文を使ってエラー処理も担当する。万が一、PDF処理中に問題が発生した場合でも、サーバーが停止することなく、AIに対して適切なエラーメッセージを返すことで、AIは問題の原因を把握しやすくなる。このエラーハンドリングは、堅牢なサーバーを構築する上で非常に重要な要素だ。

最後に「Registration(登録)」層は、サーバーアプリケーション全体の「入り口」となる部分だ。ここでは、FastMCPアプリケーションのインスタンスを初期化し、Service層で定義された様々なTool層のモジュール(テキスト抽出、PDF操作、変換など)をアプリケーションに「登録」する。これにより、アプリケーションは自身がどのような機能(ツール)を提供できるかを認識するようになる。この登録は、各ツールモジュールが持つ「register」という関数を呼び出すことで行われる。このようにモジュールごとに機能を登録する方式は、新しいツールを追加したり、既存のツールを削除したりする際に、メインのファイルを修正する手間を最小限に抑え、管理を容易にする。また、サーバー起動時に古い一時ファイルをクリーンアップするなど、運用に必要な初期タスクもこの層で実行される。

これらの3つの層が連携することで、AIからPDF処理のリクエストがあった際の全体の流れは次のようになる。まず、AI(LLM)が「extract_text」ツールを呼び出す。すると、main.pyで構築されたFastMCPアプリケーションが、そのリクエストをtext_extraction.py内の「extract_text」非同期関数に振り分ける。このツール関数は、まずファイル入力の形式を解決し、Service層の「pdf_processor.extract_text」サービスを呼び出す。サービスは実際にPDFからテキストを抽出し、結果を返す。ツール関数は、その結果にさらに詳細な情報(文字数や処理時間など)を加えてJSON形式に整形し、FastMCPを通じてAIに最終的な応答として送り返す。

実際に構築されたサーバーを利用するには、AIクライアント(例えばClaude Desktopなど)の設定ファイルに、このPDF処理サーバーの実行コマンドと環境変数を追加するだけで良い。これにより、AIはサーバーが提供するツール群を認識し、プロンプトの中でそのツールを使うように指示することで、PDFのテキスト抽出や操作を実行できるようになる。

このPDF処理サーバーは、AIの能力を拡張し、PDFドキュメントの自動処理、情報抽出、整理といった様々なタキュメント関連のタスクを効率化するための強力な基盤となる。この仕組みを理解すれば、単にPDFを処理するだけでなく、他の様々な外部サービスやデータソースとAIを連携させる新たなアプリケーションを構築する道が開けるだろう。

関連コンテンツ

関連IT用語