MCPクライアントを作ってみる(実験中)

もくじ
https://tera1707.com/entry/2022/02/06/144447

github copilot 情報源
https://tera1707.com/entry/2025/06/10/223811

やりたいこと

前回、MCPサーバーを作った。

今回はMCPクライアントを作る。

やったこと

公式のクライアントの作成方法のページをそのまんまやってみる。

modelcontextprotocol.io

今回、C#でやりたいので、C#を選ぶ。

必要事項の中に「Anthropic API key (Claude)」というのがある。

なんだかよくわからないが、下のリンクから飛べるところで、ActhropicConsoleなるものにログインする必要があるらしい。

なんかこんな感じの画面に飛ぶので、ログインする。(MCPサーバーを作る実験のほうで、そういえばアカウントを作ってた)

メールアドレスを入力すると、こういうメールが来る。

こういう画面が開く。(これがAuthopicConsoleか)

キーをつくれということだったので「Create Key」を押す

Defaultがなんなのかよくわからないがとりあえず作る

※たぶん、AnthoropicアカウントとかなくてもMCPクライアントは作れるのだと思うのが、最初はどこがどうなってるかわからなくているのかいらないのかきりわけできないので、一旦いうとおりにしとく。

サンプルページに戻って、パッケージを入れる。

APIキーなるものを入れる

その後、サンプルコードがザーッと並んでるので、それを全部Program.csに書き込む。

※そうすると、

こういうエラーが出た。

どうも、(2025/7/10)現在、サンプルサーバーのページがちょっと古いっぽい。

ページの中にあるgithubのサンプルサーバーのリポジトリのコードの方を入れると、うまく動いた。

https://github.com/modelcontextprotocol/csharp-sdk/blob/main/samples/QuickstartClient/Program.cs

VSCodeでクライアントを実行してみる;。

まず実行すると、ここで例外で落ちた。

どうも、サンプル通りに打ち込んだここのコードがだめだったっぽい。

ここは、今作っているMCPクライアントから、接続に行くMCPサーバーの起動のためのコマンドを書いている部分。

サンプルでは"../QuickstartWeatherServer"となってるが、今回自分は"weather.csproj"という名前でC#プロジェクトを作っていたので、ここを

"../weather" としたら、このエラーは起きなくなった。

👆を直して実行すると、デバッグコンソールに下記のような表示が出た。

この状態で、コンソールの部分に「ロスの天気をおしえて」とか打ち込むと、天気を教えてくれる、とサンプルページにはある。のでやってみる。

そうすると、下のような例外で落ちた。

どうも、ActhropicConsoleの課金がたりない、的なことを言われている。

参考文献に上げた「やさしいMCP入門」には、Acthropicに最低金額で課金しましょう、とあった。これがそういうことか。

下記のページから、ActhropicConsoleに5ドル払ってみる。

ここから行く。

5ドルの効力は1年間で、デフォでは自動課金継続はないっぽい。

https://console.anthropic.com/settings/billing

自動課金は、

クレジット残高が一定値を下回ると、指定した金額分のクレジットが自動でアカウントに追加されるサービスです。ユーザーがこのサービスを有効にすると、指定した支払い方法で自動的に課金され、クレジットが補充されます。解除するまで自動で継続されます。

という機能のようで、下のEditを押して、Auto Reload Creditsを押さない限りは自動更新されないっぽい。(5ドル1回くらいならいいか。。。)

で、課金後にもう一度同じ指示をした。

結果、うまく動いた。(こうやってSDKで商売するのか。。)

課金しなくて済むクライアントづくりを早急に調べたいが、一旦動くものはできた。

MCPクライアントサンプルから、MCPクライアント機能を外してただのAIチャットにしてみる

MCPクライアント機能を入れたAIチャットクライアントの👇のサンプルから、MCPクライアント機能を抜いてみた。

https://github.com/modelcontextprotocol/csharp-sdk/blob/main/samples/QuickstartClient/Program.cs

var options = new ChatOptions
{
    MaxOutputTokens = 1000,
    ModelId = "claude-3-5-sonnet-20241022",
    //Tools = [.. tools] ★←ここをコメントアウト
};

そうすると、現在のリアルタイムの天気を取ってくれることは無くなって、ただのAIチャットツールになった。

→AIチャットクライアントに、「MCPサーバーの持っているツールの一覧」を食わせることで、MCPサーバーがなにができるかをAIチャットクライアントが知ることができるっぽい。

なるほど。。。

参考文献