従来のAPIがAIシステムでうまく機能しない本当の理由
APIって、もう七十年近くも前からソフトウェア界の接着剤みたいな役割を果たしてきたはず。昔の巨大な一枚岩のシステムも、最近流行りの小さな機能ごとに分かれたサービス(あれ、名前忘れたけど…)でも、とにかくAPIさえあればなんとか他と繋がって動いていた感じかな。みんなAPIについて語る時、「状態持たない」とか「予測できる」とか「取引的」といった特徴を挙げがち。でもね、どうも最近様子がおかしい気がする。
なんとなくAI、とくに言葉を操る大きなモデル(LLMだっけ?)や、ちょっとしたエージェント風のAIが増えてきてから、この昔ながらのAPI設計じゃ上手く回らない場面が増えつつあるようで…。ほら、AIって単なるデータ受け取りマシンじゃなくて、一度聞いたこと覚えてたり、考え方を少しずつ変えてみたりすることもあるんだとか。それに複雑な流れや記憶っぽい仕組みも必要そうだし。
誰かが「伝統的なAPIは今後も残るよ」なんて言っていた気もするけど、本当にそうなのか自信が持てなくなる時代になりつつある。MCPサーバー? いや正式名称はうろ覚えだけど、新しい技術がこの問題解決に向けて出てきているという話もちょこちょこ耳に入ってくる。そろそろ何十年ぶりかで、“知能”向けの土台を見直す局面なのかもしれない。
なんとなくAI、とくに言葉を操る大きなモデル(LLMだっけ?)や、ちょっとしたエージェント風のAIが増えてきてから、この昔ながらのAPI設計じゃ上手く回らない場面が増えつつあるようで…。ほら、AIって単なるデータ受け取りマシンじゃなくて、一度聞いたこと覚えてたり、考え方を少しずつ変えてみたりすることもあるんだとか。それに複雑な流れや記憶っぽい仕組みも必要そうだし。
誰かが「伝統的なAPIは今後も残るよ」なんて言っていた気もするけど、本当にそうなのか自信が持てなくなる時代になりつつある。MCPサーバー? いや正式名称はうろ覚えだけど、新しい技術がこの問題解決に向けて出てきているという話もちょこちょこ耳に入ってくる。そろそろ何十年ぶりかで、“知能”向けの土台を見直す局面なのかもしれない。
MCPがAIエージェント時代に必要な通信プロトコルである理由
伝統的なAPIって、昔からずっと使われてきたけど、どうも最近のAI周り、特に大規模言語モデルとかになると…うまく噛み合わない部分が出てくるらしい。ざっくり言うと、APIはもともとデータのやり取りや簡単なマイクロサービス連携なんかには問題なく機能してた。例えばデータベースから何かを取得したり書き込んだりとか。そういうのにはピッタリ。でも、AIシステム、特にLLM(なんだかちょっと前から急に話題になったもの)を使い始めると、今まで気付かなかった不便さがちらほら目立つ。
まず一つめ。APIって基本的に「状態」を持たない作りになってるはず。でもね、会話AIとか使う時、一度話した内容や流れをある程度覚えておいて欲しくなること、多いんじゃないかな。誰かとのチャットでもそうだけど、「あの時こう言ったよね?」みたいなのが通じないと不自然というか…。エージェント系の応用でも「計画」っぽいものを追跡し続けたり、その途中で学んだことを反映してほしい場合がある。でもAPIだけでは、その辺どうにも繋がらなくて。
それからもうひとつ。LLMの場合、人間でもちょっと予想できないような振る舞い——まあ、「偶発性」とかって言葉を使う人もいるけど——そんなものが頻繁に起こる印象。毎回同じ入力を渡しても結果が微妙に違ったりするし、その理由は多分直前までの文脈とか履歴によるみたい。ただ既存のAPI設計って、こういう「あいまい」「ケースバイケース」な挙動にはあまり向いてない感じ。
あと最後に。一部の開発者はLLMへの連続的な呼び出しや複雑な組み合わせをどう処理するかで結構苦労してるようだ。「LangChain」とか便利ツールも増えてきたけど、それらでワークフローを書いたとしても…パイプライン自体が割と壊れやすかったりメンテナンスもしづらそう。「ちゃんと動くけど…いつ止まるかわからない」くらいの不安定さ? この辺はまだ技術として成熟しきれてない部分なのかもしれない。
その流れで最近、「Model Context Protocol(MCP)」という名前を耳にする場面も増えてきた気がする。それが具体的に何なのか…正直今ひとつ掴みにくいところはあるけど、とりあえず従来型APIだけでは足りなくなる場面では役立つ可能性もありそうだ。
まず一つめ。APIって基本的に「状態」を持たない作りになってるはず。でもね、会話AIとか使う時、一度話した内容や流れをある程度覚えておいて欲しくなること、多いんじゃないかな。誰かとのチャットでもそうだけど、「あの時こう言ったよね?」みたいなのが通じないと不自然というか…。エージェント系の応用でも「計画」っぽいものを追跡し続けたり、その途中で学んだことを反映してほしい場合がある。でもAPIだけでは、その辺どうにも繋がらなくて。
それからもうひとつ。LLMの場合、人間でもちょっと予想できないような振る舞い——まあ、「偶発性」とかって言葉を使う人もいるけど——そんなものが頻繁に起こる印象。毎回同じ入力を渡しても結果が微妙に違ったりするし、その理由は多分直前までの文脈とか履歴によるみたい。ただ既存のAPI設計って、こういう「あいまい」「ケースバイケース」な挙動にはあまり向いてない感じ。
あと最後に。一部の開発者はLLMへの連続的な呼び出しや複雑な組み合わせをどう処理するかで結構苦労してるようだ。「LangChain」とか便利ツールも増えてきたけど、それらでワークフローを書いたとしても…パイプライン自体が割と壊れやすかったりメンテナンスもしづらそう。「ちゃんと動くけど…いつ止まるかわからない」くらいの不安定さ? この辺はまだ技術として成熟しきれてない部分なのかもしれない。
その流れで最近、「Model Context Protocol(MCP)」という名前を耳にする場面も増えてきた気がする。それが具体的に何なのか…正直今ひとつ掴みにくいところはあるけど、とりあえず従来型APIだけでは足りなくなる場面では役立つ可能性もありそうだ。
Comparison Table:
技術 | 従来型API | MCPサーバ |
---|---|---|
特性 | リクエスト-レスポンスの明確な関係 | 意図を解釈し、文脈に応じた動作 |
データ処理方法 | 決まったデータ形式(例: /get_user) | 構造化された記憶と柔軟な情報管理 |
設計アプローチ | エンドポイント中心の設計 | エージェント役割中心の設計 |
利用シナリオ | 単純な操作(例: 注文送信)に適用可能 | 複雑な対話や状況依存の行動が求められる |

状態管理が必要なLLMと無状態APIの根本的なミスマッチ
なんというか、こういった仕組みって、しばらく使ってるとすぐにガチガチになりやすい印象がある。デバッグもしづらくなるし、エラーも出やすくて。例えば、「飛行機の予約したい」みたいな話から実際のAPIで必要なパラメータに落とし込む作業、それが思ったより単純じゃないんだよね。その場その場の文脈にも左右されるし。気付けばあちこちでバラバラなコードが散らばってて、保守も大変だし全体像も掴みにくくなっちゃうこと、多い気がする。
で、新しいプロトコル?MCPとか言われるものだけど……まあ、基本的にはクライアントとサーバーの形を取ってるそうで。ホスト側はClaude DesktopだったりIDEとかAIツールだったり色々あるみたいなんだよね。全部「MCPホスト」って呼ぶこともあるっぽいけど、この辺はまだ細かい使われ方までは定まってない感じもする。何台ものサーバーにつなげたりできる設計らしくて、データへのアクセス方法として考えられている、と聞いたことがある。でも本当にどんな場面でもこの方式が便利なのかは、人によって意見分かれそうだよね。
で、新しいプロトコル?MCPとか言われるものだけど……まあ、基本的にはクライアントとサーバーの形を取ってるそうで。ホスト側はClaude DesktopだったりIDEとかAIツールだったり色々あるみたいなんだよね。全部「MCPホスト」って呼ぶこともあるっぽいけど、この辺はまだ細かい使われ方までは定まってない感じもする。何台ものサーバーにつなげたりできる設計らしくて、データへのアクセス方法として考えられている、と聞いたことがある。でも本当にどんな場面でもこの方式が便利なのかは、人によって意見分かれそうだよね。
確率的な振る舞いをするAIと厳密なAPI契約の相性悪さ
MCPクライアントって、まあ要するにサーバーと一対一で繋がってるプロトコル利用のやつなんですよね。サーバー側はというと、パソコンとかローカルのファイルやらデータベース、それからサービスにもそっと触れたりできる小さいプログラムだったりするんです。ただ、インターネット越しにある外部のシステム——API経由のやつとか——にも繋げることができるみたいで、たぶん数えきれないくらい色々なリモートサービスを見かけます。
モデル・コンテキスト・プロトコル(MCP)について語ろうとすると、「新しい通信の形」だ、とかそういう感じになる気がします。従来みたいに決まったパラメータだけ渡して終わりじゃなくて、大型言語モデルとかエージェントAI向けに作られている、と言われてますね。どうも機械同士が調整したり、状態を保ちながら協力する仕組みに重点を置いているようです。
特徴を並べていくと……まず「意図」の伝達方法が少し変わっています。単なる関数呼び出しじゃなくて、何か構造化されたメタデータとか、その時々の事情まで含めて投げ合う感じでしょうか。それから記憶管理にも工夫があります。短期的なウィンドウっぽいものや長く覚えておくための仕掛け――たぶん共有できるメモリ領域なんかも用意されていることが多いですね。
あと目につくのは、多人数エージェント間で共同作業させられる点。一人ひとり役割分担したり、意思決定をすり合わせたりして、一緒になって何か進める場面も増えてきています。文脈フレームというものもあって、その場その場で「これまでこうだった」「次はああしよう」と考え直す余地があるようです。
まとめ方も難しいですが……RESTやgRPCとはまた違った発想でAI部品同士を結び付けようとしている印象です。「絶対必要!」とまでは言えませんけど、実際使った人からは「場合によって便利だ」と聞いたことがありますし、新しい連携手法として注目され始めているようですね。

LangChainのようなワークアラウンドが抱える根本的課題
MCPという考え方が、どこかでLLMの仕組みを変えることがあるらしい。伝統的なLLM連携パイプラインと比べると、まあ色々違う部分が出てくるって話を耳にしたことがある。たとえば、昔ながらのAPI利用型だと… どうもPythonスクリプト内で「もし〜だったら」みたいな判定を何度もして、モデルへの問い合わせも複数回行う必要があったりする。そういうやり方はちょっと融通が利かない印象もある。
でもMCP使った場合だと、「リサーチャー」「要約係」「計画担当」みたいな役割ごとのエージェント達が、それぞれ自分の持ち場で動く。その上で、なんとなくだけど全員で共通認識っぽいもの(多分メモとかフレーム?)を共有しつつ、次に何やるか協議したりする流れになるとか聞いたことがある。知識もちゃんと整理された形で残すっぽいので、そのあたり昔より扱いやすくなる場面も出てきそう。
実際、「AIリサーチの助手」として使う例だって、以前なら決まった手順書通りにしか動かなかったものの、今は割と柔軟に意見交換しながら進めるケースもちょこちょこ見かけるようになった気がする。ただ、この辺りはまだ状況によって向き不向きがありそうなので、一概には言い切れないところもあると思う。
それから画像資料では、「従来型APIベース」と「MCPベース・エージェントシステム」の対比図みたいなのも描かれてた気がするけど…細部まで覚えている人は案外少ないんじゃないかなぁ、と感じた日もあった。
でもMCP使った場合だと、「リサーチャー」「要約係」「計画担当」みたいな役割ごとのエージェント達が、それぞれ自分の持ち場で動く。その上で、なんとなくだけど全員で共通認識っぽいもの(多分メモとかフレーム?)を共有しつつ、次に何やるか協議したりする流れになるとか聞いたことがある。知識もちゃんと整理された形で残すっぽいので、そのあたり昔より扱いやすくなる場面も出てきそう。
実際、「AIリサーチの助手」として使う例だって、以前なら決まった手順書通りにしか動かなかったものの、今は割と柔軟に意見交換しながら進めるケースもちょこちょこ見かけるようになった気がする。ただ、この辺りはまだ状況によって向き不向きがありそうなので、一概には言い切れないところもあると思う。
それから画像資料では、「従来型APIベース」と「MCPベース・エージェントシステム」の対比図みたいなのも描かれてた気がするけど…細部まで覚えている人は案外少ないんじゃないかなぁ、と感じた日もあった。
MCPサーバーが提供するインテントベースの全く新しい対話方式
RESTやgRPCのAPIサーバって、いわゆる普通のエンドポイントを用意して決まったデータを返すものだと思ってた人も多いかもしれない。ただ最近は、MCPサーバとか呼ばれる新しいやり方が少しずつ出てきていて、どうも雰囲気が違うみたい。昔は関数呼び出し的なノリだったけど、このMCPっていう仕組みでは「プロトコルに直結したランタイム」みたいな感じで動いてるらしい。なんというか、単なるAPIを超えて何かもうちょっと複雑なことを担当してる印象。
何が違うんだろう。例えばね、今までなら「/get_user」とか「/submit_order」みたいなパスにアクセスすると、その機能だけポンと返してくれる。でもこの新しいやり方だと、エージェント自体をサーバー上で動かしてしまうようなイメージになってきていると言われることがある。しかも単純なキーと値の保存じゃなくて、構造化された記憶?みたいなのも持たせたりする場合が増えてきた気がする。まあ全部そうとは限らないけど。
あと面白いところとしては、「意図」を解釈するという説明もあって…つまり昔ながらの決まった道筋じゃなく、その場その場で文脈とか状況に応じて動くロジックを中で調整したりするケースもちょこちょこ聞く。単なる関数呼び出し以上のものになってきた印象。
RESTとgRPCとMCP、この辺比べ始めると細かい話はいくらでもあるんだけど、作者によれば図解なんかもあった(見落としてたらごめんなさい)。
技術チームにとって、この変化は表面的なものよりもう少し根っこの部分で影響があるとか言われたりすることも。単なるツール変更というより、一種の考え方自体にも揺さぶりが入るような局面になることもある。
AI関連のエンジニアには特に、「エンドポイント設計」から「エージェント役割設計」へ頭を切り替える必要性について語られていた気がする。従来型APIでは、決まりきったエンドポイント(さっきの例だとユーザー取得とか注文送信)が主役だったけど、新しい流れでは自律的にふるまうエージェント自体をどう作るか、その枠組みに目線を移すことになる、と聞いた覚えがあるよ。
何が違うんだろう。例えばね、今までなら「/get_user」とか「/submit_order」みたいなパスにアクセスすると、その機能だけポンと返してくれる。でもこの新しいやり方だと、エージェント自体をサーバー上で動かしてしまうようなイメージになってきていると言われることがある。しかも単純なキーと値の保存じゃなくて、構造化された記憶?みたいなのも持たせたりする場合が増えてきた気がする。まあ全部そうとは限らないけど。
あと面白いところとしては、「意図」を解釈するという説明もあって…つまり昔ながらの決まった道筋じゃなく、その場その場で文脈とか状況に応じて動くロジックを中で調整したりするケースもちょこちょこ聞く。単なる関数呼び出し以上のものになってきた印象。
RESTとgRPCとMCP、この辺比べ始めると細かい話はいくらでもあるんだけど、作者によれば図解なんかもあった(見落としてたらごめんなさい)。
技術チームにとって、この変化は表面的なものよりもう少し根っこの部分で影響があるとか言われたりすることも。単なるツール変更というより、一種の考え方自体にも揺さぶりが入るような局面になることもある。
AI関連のエンジニアには特に、「エンドポイント設計」から「エージェント役割設計」へ頭を切り替える必要性について語られていた気がする。従来型APIでは、決まりきったエンドポイント(さっきの例だとユーザー取得とか注文送信)が主役だったけど、新しい流れでは自律的にふるまうエージェント自体をどう作るか、その枠組みに目線を移すことになる、と聞いた覚えがあるよ。

研究者アシスタント事例で見るMCPと従来方式の劇的違い
例えば、「リサーチ担当エージェント」とか「まとめ役のAI」みたいな役割があって、それぞれが目指すゴールを持っていることも珍しくない。人によっては、これらのエージェントが状況に応じて行動を選ぶ…まあ、何というか、単なる関数呼び出しとかじゃなく、もう少し複雑なやりとりになるケースもあるらしい。
従来型APIだと、たいていデータ形式がけっこう決まってるイメージ。たとえば、「ユーザーIDは文字列で」「注文番号は数字」みたいな感じで、細かく枠組み作っていたりする。でも最近話題になってるAIベースの仕組みでは、「何月何日にパリ行きのフライト予約したい」みたいな、おおまかな意図だけ伝えて、その後どう情報を拾うかはシステム側が推論したり会話したりして決めていく風潮が強いようだ。
厳密な数字指定よりも、「七十人くらい」「三割くらい」「数十件中半分弱」みたいに、ざっくりした表現で進むこともある、と聞いた覚えがある。一概には言えないけど、場面ごとに最適な方法を考える必要が出てくることもありそうだね。
従来型APIだと、たいていデータ形式がけっこう決まってるイメージ。たとえば、「ユーザーIDは文字列で」「注文番号は数字」みたいな感じで、細かく枠組み作っていたりする。でも最近話題になってるAIベースの仕組みでは、「何月何日にパリ行きのフライト予約したい」みたいな、おおまかな意図だけ伝えて、その後どう情報を拾うかはシステム側が推論したり会話したりして決めていく風潮が強いようだ。
厳密な数字指定よりも、「七十人くらい」「三割くらい」「数十件中半分弱」みたいに、ざっくりした表現で進むこともある、と聞いた覚えがある。一概には言えないけど、場面ごとに最適な方法を考える必要が出てくることもありそうだね。
REST/gRPCとMCPを比較すると見えてくる設計思想の転換点
例えば、「POST /book_flight {date: '2024-05-20', destination: 'Paris'}」みたいな直接的なAPI呼び出しじゃなくて、どちらかと言えば「{“intent”: “book_travel”, “user_goal”: “来月パリでのカンファレンスに出席したい”}」っていう感じで意図や希望をざっくり伝えて、その後AIが細かい部分を考えたりしてくれるケースもちらほら見られる。
伝統的なAPIだと、一度のやり取りごとに全部リセットされるような感覚が強くて、何か情報を残しておきたければ結局どこかにデータベースとかで保存しないとどうしようもない。でもAIまわり、特にチャットボットだったり研究用のエージェントみたいなのになってくると、この辺りかなり様子が変わってくる気がする。エージェントには何となくだけど短期間だけ覚えていること(会話の流れ)と、数週間とかもっと長めに引き継げそうな記憶(たぶんベクトルDBとか?)を使い分けているケースも見受けられる。会話型AIなんかは直前までのメッセージを一応頭の片隅で覚えている雰囲気があるし、研究目的のシステムだと調べた内容をどこかに蓄積しておいて後から活用する…という運用もちらほら聞こえてくる。
順番通りただ命令を並べるだけじゃなくて、ちょっとした駆け引きや行き来みたいなもの―交渉事っぽいフローというんだろうか―そういう流れ全体として設計する必要性も増えている、と言われることもある。実際どうなるかは状況次第だけど。
伝統的なAPIだと、一度のやり取りごとに全部リセットされるような感覚が強くて、何か情報を残しておきたければ結局どこかにデータベースとかで保存しないとどうしようもない。でもAIまわり、特にチャットボットだったり研究用のエージェントみたいなのになってくると、この辺りかなり様子が変わってくる気がする。エージェントには何となくだけど短期間だけ覚えていること(会話の流れ)と、数週間とかもっと長めに引き継げそうな記憶(たぶんベクトルDBとか?)を使い分けているケースも見受けられる。会話型AIなんかは直前までのメッセージを一応頭の片隅で覚えている雰囲気があるし、研究目的のシステムだと調べた内容をどこかに蓄積しておいて後から活用する…という運用もちらほら聞こえてくる。
順番通りただ命令を並べるだけじゃなくて、ちょっとした駆け引きや行き来みたいなもの―交渉事っぽいフローというんだろうか―そういう流れ全体として設計する必要性も増えている、と言われることもある。実際どうなるかは状況次第だけど。

エンジニアチームがMCP導入で直面する4つのパラダイムシフト
伝統的なAPIと呼ばれるもの、あれってたいてい決まった流れで動くんだよね。例えば、ある処理が終わったら次の手順に進むみたいな感じで、七十多年前から変わっていないと言う人もいる。でもAIのエージェントとなると話は少し違ってくる。何人かで議論したり、一度決めたことをやっぱり戻してみたり、計画を出したら別の誰かが「いや、それちょっと…」なんて突っ込んできたりすることも珍しくないようだ。
組織としては、そのエージェントが今どんな状態なのかとか、どこまで情報を覚えておくべきなのか、それぞれ勝手に動いて良いのかなど、考えることが増えてくる。仕組み自体もちょっと複雑になりがちだし、MCP(マルチエージェント制御基盤)みたいなランタイム環境だったり、大きめの記憶領域、そして状況を観察するための仕掛けも必要になる場合があるらしい。現場では試験や不具合対応、それから自律型AIをどう管理するかについて、新しいノウハウが求められているという話もちらほら聞く。
要するに…最近になってソフトウェアというものが単なる受け身じゃなくなりつつあるようだ、と言う人もいる。昔ながらの道具とは違って、この頃は賢かったり、自分から何か提案してきたり、人間同士みたいに協力し合うケースさえ増えてきた気もする。ただ、それが本当にすべての現場で当てはまるかはまだ分からない部分も多いけれど、一部ではLLMやAIエージェントがシステム内で主役扱いされ始めている、と見る向きもあるようだ。
組織としては、そのエージェントが今どんな状態なのかとか、どこまで情報を覚えておくべきなのか、それぞれ勝手に動いて良いのかなど、考えることが増えてくる。仕組み自体もちょっと複雑になりがちだし、MCP(マルチエージェント制御基盤)みたいなランタイム環境だったり、大きめの記憶領域、そして状況を観察するための仕掛けも必要になる場合があるらしい。現場では試験や不具合対応、それから自律型AIをどう管理するかについて、新しいノウハウが求められているという話もちらほら聞く。
要するに…最近になってソフトウェアというものが単なる受け身じゃなくなりつつあるようだ、と言う人もいる。昔ながらの道具とは違って、この頃は賢かったり、自分から何か提案してきたり、人間同士みたいに協力し合うケースさえ増えてきた気もする。ただ、それが本当にすべての現場で当てはまるかはまだ分からない部分も多いけれど、一部ではLLMやAIエージェントがシステム内で主役扱いされ始めている、と見る向きもあるようだ。
次世代AIシステムには全く新しい基盤が必要だと気づいた話
どうも、最近よく耳にする話だけど、昔ながらのAPIって、なんだか「リクエストしたらレスポンスが返る」っていう世界で作られてきたみたい。でも、このやり方だと柔軟じゃない仕組みに縛られがちで、気づかないうちに壁にぶつかったり…という人も少なくないのかもしれない。そういえば、MCPって呼ばれるサーバーは、ずっと前からあるAPIとは違った発想で設計されているようだ。細かな数字は分からないけど、何十人もの開発者がAIネイティブなシステム――例えば自動化されたワークフローとか、それっぽいコーディング支援ツールみたいなもの――を考える時には、「新しい選択肢」というより土台そのものとして検討する場面も増えていると聞いたことがある。
まあ、「推論」とか「関係性」を扱うのが得意なのは確かな気がするし、一部では従来型の方法より相性良いという声もちらほら。ただ、すべての場合に当てはまるわけでもなさそうだけどね。
あぁ、それともしこの記事を読んで興味を持ったなら、関連している内容として——「MCPはAPIの上位概念(でも置き換えじゃない)」とか、「HTTPとかWebsocketsについてざっくり整理した記事」、「マイクロサービス設計ガイド」なんかもちょっと目を通してみてもいいかもしれない。気になったら、時間のあるときに探してみるのも悪くない。
まあ、「推論」とか「関係性」を扱うのが得意なのは確かな気がするし、一部では従来型の方法より相性良いという声もちらほら。ただ、すべての場合に当てはまるわけでもなさそうだけどね。
あぁ、それともしこの記事を読んで興味を持ったなら、関連している内容として——「MCPはAPIの上位概念(でも置き換えじゃない)」とか、「HTTPとかWebsocketsについてざっくり整理した記事」、「マイクロサービス設計ガイド」なんかもちょっと目を通してみてもいいかもしれない。気になったら、時間のあるときに探してみるのも悪くない。