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

【ITニュース解説】Simple MCP tool using NodeJS

2025年09月17日に「Dev.to」が公開したITニュース「Simple MCP tool using NodeJS」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Node.jsでMCPサーバーを簡単に構築する手順を解説する。外部サービスに依存せず、ローカルで自分だけのMCPサーバーを運用可能だ。JIRAやビルドツール、AIクライアントなどと連携し、独自の機能を追加することもできる。具体的なファイル構成やコード例も提示され、開発初心者にも役立つ。

出典: Simple MCP tool using NodeJS | Dev.to公開日:

ITニュース解説

この記事は、Node.jsというプログラミング環境を使って、MCP (Model Context Protocol) サーバーをシンプルに構築する方法について解説する。MCPサーバーとは、主にAI(人工知能)クライアントと連携し、AIが必要とする特定の機能やデータを提供する役割を担うサーバーのことだ。例えば、AIがユーザーの株式取引口座の情報を取得したり、過去の株価データを参照したりする際に、その情報を提供する窓口となる。これにより、AIは外部のシステムやサービスと連携し、より高度な処理や対話が可能になる。

このアプローチの大きな利点は、外部のMCPサーバーに依存せず、自分自身でサーバーを構築・運用できる点にある。これにより、特定の要件に合わせて機能を自由にカスタマイズしたり、セキュリティポリシーを厳密に管理したりすることが可能となる。JIRAのようなプロジェクト管理ツールや、TeamCity、Jenkinsといったビルドツール、その他多くのシステムと連携する土台を自社で構築できるため、柔軟性が高く、独自のAIソリューションを開発したい場合に非常に有効な手段と言える。

このプロジェクトは、Node.jsとTypeScriptを中心に構成されている。Node.jsは、サーバーサイドでJavaScriptを実行するための環境であり、スケーラブルなネットワークアプリケーションの構築に適している。TypeScriptは、JavaScriptに静的型付けという特性を加えることで、大規模なアプリケーション開発におけるコードの信頼性や保守性を向上させるプログラミング言語だ。

プロジェクトのファイル構成を見ると、いくつかの重要なファイルとフォルダが存在する。 まず、最上位にはmcp-serverというルートフォルダがあり、その中に設定ファイルやソースコードが整理されている。 .vscodeフォルダ内にはmcp.jsonがあり、これはVisual Studio Codeという開発環境でサーバーを起動するための設定ファイルだ。AIクライアントとの連携方法がここで定義される。 srcフォルダには、サーバーの本体となるソースコードが格納されている。その中のlibフォルダには、サーバーが提供する「ツール」の実装が含まれている。 また、.envファイルは環境変数を定義するためのもので、サーバーのホスト名やポート番号、APIキーといった機密情報や設定値を外部から注入する際に用いられる。これはコードに直接設定値を書き込むのを避け、柔軟かつ安全に設定を変更するための一般的なプラクティスだ。 .npmrcファイルは、Node Package Manager (npm) の設定ファイルで、パッケージの取得元レジストリなどを指定する。 package.jsonは、プロジェクトのメタデータ、依存するライブラリ、そして様々なスクリプト(プログラムのビルドや実行など)を定義する、プロジェクトの設計図とも言える重要なファイルだ。 tsconfig.jsonは、TypeScriptのコンパイラに対する指示を記述するファイルで、TypeScriptコードをどのような形式のJavaScriptに変換するか、どのディレクトリに出力するかなどを設定する。

package.jsonの中身を見ると、プロジェクト名やバージョン、説明のほかに、scriptsセクションがある。ここには、build(TypeScriptコードをJavaScriptに変換し、実行可能なファイルにする)、start(変換されたJavaScriptを実行する)、dev(開発中にファイルの変更を監視し、自動でビルドを行う)といったコマンドが定義されている。これらのスクリプトを使うことで、開発者は効率的にコードを書き、テストし、実行できる。また、dependenciesセクションには、このプロジェクトが動作するために必要な外部ライブラリ(@modelcontextprotocol/sdkdotenvnode-fetchなど)が列挙されており、devDependenciesには開発時にのみ必要なライブラリ(typescriptなど)が記載されている。

tsconfig.jsonでは、ターゲットとするECMAScriptのバージョン(ES2022)、モジュールの解決方法(nodenext)、出力ディレクトリ(./build)、ソースコードのルートディレクトリ(./src)などが詳細に設定されている。strict: trueは、より厳密な型チェックを有効にし、コードの品質を高めるための設定だ。

サーバーの主要なロジックはsrc/index.tsに記述されている。このファイルでは、@modelcontextprotocol/sdk/server/mcp.jsからMcpServerクラスをインポートし、サーバーインスタンスを作成している。サーバーには、name(サーバーの名前)、version(バージョン)、capabilities(提供する機能)が設定される。 このサーバーの重要な役割の一つは、AIクライアントが利用できる「ツール」を定義することだ。記事の例では、get-user-margin(ユーザーの利用可能証拠金を取得する)とget-historical-data(株の過去データを取得する)という二つのツールが定義されている。それぞれのツールには、どのような機能を提供するかの説明、必要な入力パラメーター(例:get-historical-dataではexchangesegmenttrading_symbolなど)がzodというライブラリを使って型安全に定義されている。ツールの定義の中には、実際にその処理を実行する非同期関数が書かれており、これはsrc/lib/tools.tsで実装されているToolsクラスのメソッドを呼び出している。 サーバーは最終的にStdioServerTransportを使ってAIクライアントと接続し、標準入出力(stdio)を通じて通信を開始する。

src/lib/tools.tsファイルは、実際にそれぞれのツールが具体的な処理を行う場所だ。ここではToolsクラスが定義されており、そのコンストラクタでAPIキーなどの設定を読み込み、外部のAPIサービス(Apiクラスとして抽象化されている)を初期化し、認証を行っている。 例えば、getAvailableMarginメソッドは、外部APIを呼び出してユーザーの利用可能証拠金を取得し、その結果をToolResponseという形式で整形して返却する。ToolResponseは、AIクライアントに渡すコンテンツの形式を定義しており、この例ではテキスト形式で情報を提供している。同様に、getHistoricalStockDataメソッドは、指定されたパラメーターに基づいて過去の株価データを取得し、整形して返している。これにより、AIはこれらのツールを通じて、現実世界の情報にアクセスし、それに基づいて判断を下したり、ユーザーに情報を提供したりすることが可能になる。

最後に、mcp.jsonは、VS Codeのような統合開発環境でこのMCPサーバーを簡単に起動・デバッグするための設定を提供している。commandにはサーバーを実行するコマンド(node)、argsには実行するスクリプトのパス(./server/build/index.js)、envFileには環境変数を読み込む.envファイルのパスが指定されている。これにより、開発者は複雑なコマンドを手動で入力することなく、IDEから直接サーバーを起動し、開発を進めることができる。

このように、Node.jsとTypeScriptを用いてMCPサーバーを構築することは、AIクライアントに強力な機能セットを提供し、外部システムとの柔軟な連携を可能にする。独自のMCPサーバーを持つことで、開発者はAIアプリケーションの可能性を大きく広げ、特定のビジネス要件に合わせたカスタマイズや、新しいAI駆動型サービスの開発を効率的に進められるようになる。システムエンジニアにとって、このようなサーバーサイドの知識とAI連携の技術は、これからの開発においてますます重要となるだろう。

関連コンテンツ

関連IT用語