従来のAIチャットボットには大きな制約がありました。インターネット検索はできても自分のPC内のファイルは読めない、画像生成はできても手元の写真を編集できないなど、できることに限りがあったのです。
そんな制約を打ち破るのが、今回紹介する「MCPサーバー」です。
MCPとは「Model Context Protocol」の略で、AIエージェントが外部のツールやサービスと連携するための重要な仕組みを指します。
今回はMCPサーバーの基本から構築方法、そして実際の活用例までを初心者にもわかりやすく解説します。
MPCサーバーとは

簡単に言えば、MCPサーバーは「AIの手足」となるシステムです。人間にたとえると、脳(AI)が「あのファイルを探して」と思っても、実際に手(MCP)が動かなければファイルは見つかりません。
つまり、MCPサーバーはAIの「思考」を現実の「行動」へと変換する橋渡し役なのです。
AIと外部データをつなぐ「MCP」の役割とは
MCPサーバーは、主に以下の3つの構成要素から成り立っています。
- フロントエンド:AIエージェントとの対話や命令の受け渡しを担当
- バックエンド:外部サービス(クラウド、データベース、アプリなど)との連携処理
- ツールレジストリ:利用可能なツールの一覧と使用方法を管理
上記3つの構造によって、AIエージェントの機能は大幅に拡張され、業務ツールとしての実用性が向上します。
従来のAPIと何が違うのか
これまでもAPIを使えば、AIが外部情報へアクセスすることは可能でした。しかし、従来の方法では開発者が1つ1つ手動でコードを書く必要があり、AI自身が自律的に動くことはできませんでした。
たとえば「天気を調べて」と指示しても、その裏側では人間が事前にAPIの呼び出しコードを書いておく必要があったのです。
一方、MCPサーバーを活用すれば、AIは「どのツールを、いつ、どう使うか」を自分で判断できるようになります。そのため、開発者が都度命令しなくても、AIが状況に応じて自律的に行動できるようになるのです。
MCPが必要とされる背景
近年、単に文章を生成するだけのAIでは、ユーザーのニーズを満たすことが難しくなってきました。たとえば、以下のような実務に即したタスクのニーズが増えているからです。
- 「予定をカレンダーに入れて」
- 「フォルダ内から資料を探して」
- 「今週の売上データをまとめて」
上記業務に対応するには、AIがネットワークや企業内の情報資源にアクセスし、外部ツールと連携して動けることが求められます。MCPはまさにそのための「手足」をAIに与える仕組みであり、AIの進化に欠かせない重要技術として注目されています。
ClaudeやChatGPTもMCP対応の流れ
代表的なAIであるClaude(Anthropic社)やChatGPT(OpenAI)でも、MCP的な機能の導入が進んでいます。
たとえばChatGPTの「ツール機能(GPTs)」やClaudeの「機能拡張モジュール」は、MCPサーバーと同様の思想に基づいており、AIが外部ツール(ブラウザ、コードインタープリター、ファイル閲覧など)を自律的に使えるよう設計されているのが特徴です。
AIは単なる回答生成ツールにとどまらず、実際に「行動するAI」として進化を続けています。MCPのような仕組みは、今後のAI活用における基盤技術となっていくと広く期待されているのです。
MCPサーバーのセキュリティについて

MCPサーバーを作るときに、まず気になるのが「安全に使えるのかどうか」ということではないでしょうか。
外部のサービスと接続するからこそ、守らなければならないルールや注意点を理解し、適切な対策を講じる必要があります。ここでは、安全にMCPサーバーを運用するための工夫や注意点について解説します。
外部サービスと安全に連携できる仕組み
MCPサーバーは、AIと外部インターネットサービスの間に立ち、やり取りを制御する役割を担います。たとえば、天気予報APIやSlackなどの情報をAIが利用する際、MCPが仲介役となり、「必要かつ安全なデータのみ」を中継するよう設計できます。
結果として、意図しない情報漏えいやデータの改ざんといったリスクを低減することが可能になるのです。
認証トークンやアクセス制限の設計例
外部サービスと連携するためには「認証トークン」と呼ばれるパスワードのような情報が必要です。コード内に直接書くのではなく「.envファイル」などの安全な場所に保存するのが基本です。
さらに、特定のIPアドレスのみにアクセスを許可するなど、ネットワークレベルでのアクセス制限も重要な対策です。認証トークンの取り扱いやアクセス制限の方針を設計段階で決めておくことが、安心して使うために重要です。
認証トークンルールを最初から決めておくことが、安心して使うためのポイントなのです。
MCPサーバーが不正アクセスを防げる理由
MCPでは、やり取りする情報の構造を事前に「スキーマ」として定義できます。スキーマに従わないリクエストは受け付けないように設定することで、不正なデータの流入を防げます。
また、MCP上でどのツールが何を実行できるかをあらかじめ制限することで、予期しない挙動や悪意ある操作のリスクを低減可能です。ただし「完全に防げる」のではなく、「設計によってリスクを最小化できる」というのが正確な表現です。
オープンソースだからこそ安全性が高い
MCPで利用するソフトウェアやテンプレートの多くは、オープンソースとして公開されています。一見「公開されている=危険」と思われがちですが、実際には多くの開発者による監査が行われ、脆弱性が早期に発見・修正されるという利点があります。
ただし、すべてのオープンソースソフトが自動的に安全というわけではありません。信頼性のあるプロジェクトかどうか、最新のセキュリティパッチが適用されているかなどを確認する必要があります。
自作MCPでも守るべきセキュリティ対策
自分でMCPサーバーを構築する場合でも、次のような基本的なセキュリティ対策を守る必要があります。
- パスワードやトークンはコードの中に直接書かない
- 通信には「https」を使って安全な方法でやり取りする
- ログ(記録)に大事な情報を残さないようにする
セキュリティ対策は後から追加するのではなく、最初の設計段階から組み込むことが重要です。
MCPサーバーを作る前に必要な準備
MCPサーバーを作るにはいくつかの準備が必要です。開発環境を整えたり、使用する言語の決定や、MCPの仕様やツールに合わせた設定も必要です。ここでは、初期準備をわかりやすく解説します。
MPCサーバーを作るのに必要なもの一覧
MCPサーバーを構築するには、以下のものを準備しておきましょう。
- パソコン(macOSまたはWindows)
- インターネット接続
- コードエディタ(例:Visual Studio Code)
- Node.js(JavaScript/TypeScriptを動かすランタイム)
- MCP関連のライブラリ(あとでnpmなどでインストール)
- コマンドライン(CLI)の操作に慣れておく
CLI(黒い画面)を使うことが多いため、簡単なコマンド操作に慣れておくと安心です。初心者でも一つずつそろえれば問題ありません。
PhthonとTypeScriptのどちらで作るか決める
MCPサーバーは、主に「Python」または「TypeScript」で作ることが多いでしょう。どちらも人気があり、特性が異なります。
- Python:AIやデータ処理に強く、シンプルな構文で初心者にやさしい
- TypeScript:Web開発向けで、型安全性によりミスを防ぎやすい
初心者にはPythonが親しみやすいとされますが、Web開発経験がある方ならTypeScriptの方が効率よく感じられるかもしれません。どちらの言語でも、MCPサーバーは問題なく開発可能です。
Node.jsやCLIを事前インストールするツール
MCP開発にはNode.jsが必要です。特にTypeScriptを使う場合は、Node.jsのランタイム上で動作するパッケージ(npmモジュール)を多用します。Node.jsは公式サイトから簡単にインストール可能です。
CLI(コマンドラインインターフェース)は、パッケージのインストールやサーバーの起動などに使用されます。はじめは難しく感じるかもしれませんが、コマンドをコピー&ペーストするだけでも十分操作可能です。
Claude Desktopなどクライアント側の準備
MCPサーバーを構築しただけでは完結せず、それを呼び出す「クライアント側」の設定も必要です。ここでの「クライアント」とは、ChatGPTのようなAIアシスタントを指します。
たとえばChatGPTでは、[functionsやtoolsなどのAPI拡張機能]を通じてMCPサーバーにアクセスし、外部ツールと連携する仕組みが整備されています。
Claude Desktopでは、現在正式にMCPサーバーとの連携が可能となっています。
開発前に知っておきたいMCPの基本ルール
MCPでは、各ツールの定義をJSON形式で記述します。たとえば「ユーザーが日付を尋ねたら、カレンダー情報を返す」といった仕様もJSONの構文で定義します。
定義の段階でミスがあると、エラーとなって意図どおりに動作しません。最初は難しく感じるかもしれませんが、既存のサンプルコードを参考にしながら進めることで、スムーズに理解できるようになります。
【Python編】MCPサーバー作成の手順
Pythonを使えば、シンプルなコードでMCP風のサーバーを作成できます。ここでは、仮想環境の準備からテストまでの流れをわかりやすく紹介します。
仮想環境とライブラリの準備方法
まず、Python開発の基本として「仮想環境」を作成しましょう。他のプロジェクトとライブラリのバージョンが混ざらないようにするための安全な方法です。
以下のコマンドを順番に実行してください。
・python -m venv env ・source env/bin/activate(Mac/Linux) ・env\Scripts\activate(Windows) ・pip install fastapi fastmcp uvicorn |
以上で開発の準備は完了です。
Pythonファイルの作成と編集手順
次に、APIエンドポイントを定義する Python ファイルを作成します。たとえば main.py という名前にするとわかりやすいでしょう。
from fastapi import FastAPI, Request import uvicorn app = FastAPI() @app.post(“/hello”) async def hello(request: Request): data = await request.json() name = data.get(“name”, “ゲスト”) return {“message”: f”こんにちは、{name}さん!”} if __name__ == “__main__”: uvicorn.run(“main:app”, host=”0.0.0.0″, port=8000) |
上記のコードでは、/hello というAPIを作成し、リクエストで渡された名前に対して挨拶を返します。
FastMCPでツール定義する方法
FastMCPは、PythonでMCPサーバーを作るときに使える便利なツールです。プログラミングに慣れていない人でも、決まったルールで書くだけでAIが使えるツールを簡単に作れます。
- ツールの名前や説明文をコードで設定できる
- ユーザーからどんな情報を受け取るか(入力)を指定できる
- class を使ってツールを定義し、run 関数の中にAIがどう返すかの動きを書く
- 例:「名前を聞いて返す」「今日の曜日を教える」などのシンプルな処理ができる
- 難しい知識がなくても、ルール通りに書くだけで動くので初心者でも安心
FastMCPを使えば誰でもMCPツールを作れるようになるので、まずは1つ試してみるのがおすすめです。
実行・テストとデバッグの流れ
作成した Python ファイルを次のコマンドで起動します。
python main.py |
起動したらClaudeやChatGPTにサーバーのアドレスを教えて、MCPサーバーがきちんと動くか試してください。
うまく動かない場合は、表示されたエラーメッセージやログをもとに問題点を確認する「デバック」の作業をしていきましょう。
はじめはうまくいかなくても心配いりません。ひとつずつ試していけば、着実に動作するサーバーが作れるようになります。
【TypeScript編】MCPサーバー作成の手順

TypeScriptは、JavaScriptを型安全に拡張した言語で、コードの予測性と保守性に優れています。MCPサーバーの構築にも適しており、開発効率と安全性を両立可能です。
ここでは、プロジェクトの作成からサーバー公開、Claudeとの連携までの基本的な流れを紹介します。
プロジェクトの初期構築と設定
まずはプロジェクト用のフォルダを作成して、必要なパッケージをインストールします。
mkdir minimal-mcp-server cd minimal-mcp-server npm init -y npm install @modelcontextprotocol/sdk zod npm install -D typescript @types/node |
- @modelcontextprotocol/sdk:MCP用TypeScript実装
- zod:型安全なスキーマ検証ライブラリ
- typescript:TypeScriptコンパイラ
- @types/node:Node.js型定義
次に、TypeScriptの設定ファイルを生成します。
npx tsc –init |
その後、tsconfig.jsonを以下のように編集します。
{ ”compilerOptions”: { “target”: “ES2022”, “module”: “Node16”, “moduleResolution”: “Node16”, “outDir”: “./build”, “rootDir”: “./src”, “strict”: true, “esModuleInterop”: true, “skipLibCheck”: true, “forceConsistentCasingInFileNames”: true }, “include”: [“./**/*”], “exclude”: [“node_modules”] } |
プロジェクトルートのpackage.jsonに以下を追加して、モジュール形式とビルド・実行のスクリプトを設定します。
“type”: “module”, “scripts”: { “build”: “tsc”, “start”: “node build/index.js” } |
MCPツールの実装と型定義のコツ
次に、MCPサーバーとツールを定義します。src/index.tsを作成し、以下のように記述します。
import { McpServer } from “@modelcontextprotocol/sdk/server/mcp.js “;import { StdioServerTransport } from “@modelcontextprotocol/sdk/server/stdio.js”; import { z } from “zod”; const server = new McpServer({ name: “minimal-mcp-server”, version: “1.0.0”, }); server.tool( “hello”, “名前をもらって挨拶するツール”, { name: z.string().describe(“あなたの名前”), }, async ({ name }) => { return { content: [ { type: “text”, text: `こんにちは、${name}さん!`, }, ], }; } ); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.log(“MCP Server running on stdio”); } main().catch((error) => { console.error(“Fatal error:”, error); process.exit(1); }); |
ここでは、Zodを使って入力スキーマを定義することで、入力値の検証と補完が可能になります。
MCP Inspectorを使ったテスト方法
開発中のツールは、公式のテストツール MCP Inspector を使って確認できます。次のように実行します。
npm run buildnpx @modelcontextprotocol/inspector node build/index.js |
上記により、Inspectorが起動し、GUI上でツールを確認・実行できます。
Claude連携や公開に向けた仕上げ手順
サーバーが完成したら、ClaudeなどのLLMと連携するために、以下の手順で公開・登録します。
Claude Desktopでの設定例(Mac)
~/Library/Application Support/Claude/claude_desktop_config.json に以下を追記します。
{ “mcpServers”: { “minimal-mcp”: { “command”: “node”, “args”: [“/絶対パス/minimal-mcp-server/build/index.js”] } } } |
Cursorでの設定例
Settings → MCPセクション →「Add new MCP server」
- Name: minimal-mcp
- Type: command
- Command: node /絶対パス/minimal-mcp-server/build/index.js
初心者がつまずきやすいポイントと解決策

MCPサーバーを作るとき、最初のうちはうまくいかないことが出てきます。
しかしよくある原因がわかっていれば、自分で直せることも多いでしょう。ここでは、よくある「つまずきポイント」と「直し方」をまとめて解説します。
「パス設定ミス」が原因でMCP CLIが動かなくなる
ツールを使うときに「コマンドが見つかりません」と出たら、多くの場合は「パス(PATH)」という設定が原因です。
パスとは、パソコンがどこにツールを探しに行けばいいかを示す地図のようなものです。たとえば、CLIツールをインストールしても「npm install -g xxx-cli」を使っていなければ、コマンドとして認識されません。
また、パソコンやターミナルの再起動によってPATHが再読み込みされることもあるので、慌てずに確認してみましょう。
「サーバーが起動しない」はポート競合を疑う
「npx mcp dev」のようなコマンドでサーバーが動かない場合、他のアプリが同じポートを使用する「ポート競合」の可能性があります。MCPサーバーは一般的に3000番ポートを使用することが多く、他のプロセスですでに使用されていると起動時にエラーが出ます。
ターミナルに「Port 3000 is already in use」と表示されたら、以下のコマンドで確認してみましょう。
lsof -i :3000 |
もし他のアプリを使っていれば、一度停止してから再実行してみてください。
JSONスキーマの書き方を間違えるとClaudeに表示されない
MCPサーバーでAIにツールを使わせるには、「どのような入力データを受け取るか」をJSONスキーマで定義します。
スキーマの書き方に誤りがあると、AI(たとえばClaudeなど)がツールを認識できなくなるため注意が必要です。よくある間違いには、次のようなものがあります。
- type のスペルミス(例: “sting”など)
- 必須項目(required)の指定漏れ
- プロパティの説明(description)が不足している
スキーマは、AIにとっての「操作マニュアル」のようなものなので、正確に書くことが重要です。
Claudeにツールが出ないときは定義を見直す
Claudeにツールを表示させたいのに「表示されない」「使えない」という場合、ツール定義に問題があるかもしれません。以下の点を確認してみましょう。
- name や description が英語で書かれているか(Claudeは英語が主に対応言語のため、英語推奨)
- ツールが default export されているか
- MCP Inspector などのツールでローカル検証をしているか
ひとつずつ確認していくことで、意外と単純なミスに気づけるかもしれません。
最初のテストが動かないときはログと構文を確認する
コードを書いて「いざ実行!」と思ったときにうまく動かないと焦るものです。まずは落ち着いて、エラーメッセージ(ログ)を確認しましょう。
ログには以下のように「どの部分で失敗したか」が書かれています。
SyntaxError: Unexpected token |
エラーについて表示があれば、カンマや括弧の打ち忘れなどの構文ミスが疑われます。エディタの補完機能や色分け表示を活用して、構文が正しいか確認していくのも有効です。
MCPサーバーでできることと活用例

MCPサーバーを構築できたら、実際にどのように活用できるのでしょうか?ここでは、実践的な活用例をいくつか紹介します。
社内共有サーバーの検索を簡単に
MCPサーバーを使ったときの代表的な使い方のひとつで、社内のフォルダやサーバーにある資料をAIに「探しておいて」とお願いできるようになります。
- AIが社内の資料サーバーを自動で検索してくれる
- たとえば「売上レポート出して」と言うと、該当ファイルの場所を教えてくれる
- フォルダを自分で探す手間がなくなり、作業時間を短縮できる
- 誰かに聞かなくても済むので、スムーズな社内連携にもつながる
特に資料が多い会社や部署にとっては、探し物の時間が大きく減って生産性アップにつながります。
顧客情報管理システムと連携させれば顧客ごとの管理が可能
AIと顧客情報をつなげれば「◯◯さんの注文履歴を教えて」といった会話ができるようになります。
- 顧客の基本情報や過去のやりとりを一括で取得できる
- 一人ひとりに合ったきめ細かい対応がすぐにできる
- 対応時間の短縮やヒューマンエラーの防止にもつながる
MCPがあることで、AIを“顧客対応のアシスタント”として活用できるようになります。
カレンダー内の予定調整もスムーズに
MCPサーバーを通じてGoogleカレンダーなどの予定管理ツールと連携すれば、社内予定の調整もスムーズに行えます。
- 「今週の空いてる時間ある?」と聞けば、カレンダーをAIがチェックしてくれる
- 会議の候補日を自動でピックアップできる
- 登録・変更・削除などの予定管理もツール定義で対応可能
- 手作業よりもミスや抜け漏れが少なくなる
- まるでAIが自分専属のスケジュール秘書のように使える
忙しいビジネスパーソンには手放せないサポートになるはずです。
まとめ

AIがより実用的に進化する中で「MCPサーバー」はAIと外部ツールをつなぎ、自律的な行動を可能にする重要な役割を担います。従来の制約を超え、AIが自分でファイルを探し、予定を調整し、社内データを扱えるようにする仕組みがMCPなのです。
初心者でもPythonやTypeScriptを使って30分程度で構築可能で、セキュリティ対策や活用例も豊富に紹介されています。今後のAI活用に欠かせない技術として注目されているMCPについて、本記事を参考にぜひ理解してください。