【ITニュース解説】Expose Next.js functions as MCP tools with Dendra
2026年10月20日に「Dev.to」が公開したITニュース「Expose Next.js functions as MCP tools with Dendra」について初心者にもわかりやすく解説しています。
ITニュース概要
Dendraは、Next.jsアプリの機能をAIアシスタントが利用できるツールとして簡単に公開するオープンソースフレームワークだ。一度定義した処理は、Web APIとAIツールの両方で共通の入力検証とハンドラを使い再利用でき、効率的な開発を支援する。
ITニュース解説
AIアシスタントの進化は目覚ましく、私たちの日常生活や業務に深く浸透し始めている。このような時代において、既存のアプリケーションが持つ多様な機能をAIアシスタントに連携させ、より高度な自動化やインタラクションを実現する技術が求められている。Dendraは、Next.jsで構築されたアプリケーションの操作を、AIアシスタントが利用できる「ツール」として効率的に定義し、公開するためのTypeScript製のオープンソースフレームワークである。
Dendraの主要な目的は、アプリケーション内部に存在する「レコードを検索する」「計算結果を出す」「タスクを作成する」といった具体的な操作を、AIアシスタントが理解し、実行できる形式に変換することにある。AIアシスタントがこれらの機能を利用するには、操作に適切なツール名、必要な入力の形式(入力スキーマ)、そして実行方法を明確に定義する必要があるが、Dendraはこの定義を一元的に管理し、開発者が一度定義すれば様々なインターフェースから利用できるようにする。
このフレームワークの中核にあるのは「プロシージャ」という概念である。プロシージャは、特定の操作に必要な入力の契約(型定義)と、その操作を実行する処理ロジック(ハンドラー)をひとまとめにしたものである。Dendraは、このプロシージャを基に、複数の「アダプター」を介して異なるインターフェースに接続する。本記事で取り上げられているのは、Next.jsのAPIルートとしてHTTP経由で公開するアダプターと、AIモデルが外部ツールと通信するための標準プロトコルであるModel Context Protocol(MCP)のツールとして公開するアダプターである。
開発者はDendraを使うことで、例えば数値を足し合わせる「add」という操作を一度だけ定義する。この定義には、入力が二つの数値(aとb)であることの厳密なスキーマと、実際にaとbを足し算する処理ロジックが含まれる。この一度定義された操作は、Next.jsのアプリケーションにおける従来のHTTP APIエンドポイントとして /rpc/add のようなURLで公開され、同時にMCPプロトコルを通じてAIアシスタントが呼び出せる「add」ツールとしても利用可能になる。これにより、入力検証ロジックや実際の処理ロジックを両方のインターフェースで共有できるため、コードの重複が排除され、開発の効率性はもちろん、アプリケーション全体の堅牢性と保守性が大幅に向上する。例えば、HTTPリクエストで数値以外の文字列が入力された場合や、AIアシスタントから不正な引数が渡された場合でも、同じ入力検証ロジックによって適切に拒否され、エラーが返される。
DendraにおけるAIツールの公開は、意図的かつ明示的に行われる。プロシージャ定義時に.ai()メソッドを呼び出すことで、その操作がMCPツールとして公開されることを宣言する。この明示的な制御により、アプリケーション内の全ての操作がAIアシスタントに自動的に公開されることを防ぎ、開発者が公開したい特定の機能だけを選択して提供できる。これは、セキュリティと意図しない機能公開を防ぐ上で極めて重要な仕組みである。
システム構成としては、主に三つの部分で成り立っている。一つ目は「ルーター」で、ここではアプリケーションの様々な操作と、それぞれの入力スキーマが定義される。二つ目は「Next.jsアダプター」で、このルーターを基にHTTP経由でWeb APIエンドポイントとして公開する役割を担う。三つ目は「MCPサーバー」で、ルーターの中からAIツールとして公開が許可された操作を抽出し、Model Context Protocol SDKを使用して、AIクライアントと標準入出力(stdio)を介して通信する。このMCPサーバーはNext.jsアプリケーションとは独立したプロセスとして動作するため、それぞれのプロセスがデータベースなどの共有データソースに適切に接続し、同期された状態を保つための設計が重要になる。
記事ではシンプルな足し算の例を用いてこの仕組みを解説しているが、実際の業務アプリケーションにおいては、ユーザーのプライベート情報にアクセスしたり、ビジネスロジックに基づいて重要なデータを更新したりする操作をツールとして公開する場面が想定される。このような場合、ツールを呼び出す主体(ユーザーやAIアシスタント)が誰であるかを認証し、その主体が特定の操作を実行する正当な権限を持っているかを認可する仕組みが不可欠である。Dendraは、ミドルウェアや実行コンテキストを通じてこれらのセキュリティポリシーを実装する手段を提供するが、実際の認証・認可ロジックの実装はアプリケーション開発者の責任である。例に示された空のコンテキストを、機密性の高い操作にそのまま適用することは避け、常に厳格なアクセス制御を考慮した設計を行う必要がある。
このようにDendraは、Next.jsアプリケーションの機能をAIアシスタントが利用可能なツールとして、シンプルかつ安全に公開するための一貫したフレームワークを提供する。これにより、現代のソフトウェア開発において不可欠となったAI連携の障壁を下げ、開発者が既存の技術スタックと資産を最大限に活用し、AIを活用した革新的なアプリケーションを構築する道筋を開くものと言える。