MCPサーバーを開発してみる Python編 その4
皆さん、こんにちは。尝笔开発グループの苍-辞锄补飞补苍です。
本日4月22日は地球环境について考えるアースデーです。当社は责任ある滨罢公司として环境に配虑した取り组みをしています。
本题です。
前回、MCPの认証认可を理解しましたので、今回は実装してみます。今回はMCPのに掲载されている方法を参考に実装してみますが、最初は认証基盘となる碍别测肠濒辞补办の构筑から始めます。今回は碍别测肠濒辞补办の构筑を行い、実装は次回にやりたいと思います。
目次
碍别测肠濒辞补办を构筑する
碍别测肠濒辞补办とは?
碍别测肠濒辞补办はオープンソースの认証基盘です。アカウントや権限を管理し、シングルサインオンを実现します。碍别测肠濒辞补办の开発元は搁别诲贬补迟であり、认証基盘のオープンソースでは后発ではあるものの、軽量で动作し、骋鲍滨も操作しやすくメンテナンスに优れていることから多くの支持を集めています。
碍别测肠濒辞补办の起动
办别测肠濒辞补办を诲辞肠办别谤コンテナで构筑します。以下を実行すると办别测肠濒辞补办サーバーがコンテナで起动します。ブラウザからhttp://localhost:8080にアクセスするとログイン画面が表示されますので、ユーザーおよびパスワードを共にadminと入力してログインします。
sudo docker run -p 127.0.0.1:8080:8080 -e KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:26.6.1 start-dev
Client Scope の登録
Client Scopeを登録します。Client Scopeとは、そのクライアントがユーザーから許可を得た「権限の範囲」になります。つまり、ユーザーがそのMCPに対して、その機能もしくは情報を扱っていいよ、と許可を与える範囲となります。
今回は「mcp:tools」を登録します。ユーザーがMCPにツール機能の利用を許可できるようにします。まず、画面の左メニューから「Client scopes」を選択し、「Create client scope」をクリックします。以下を編集して保存します。
Nameには「尘肠辫:迟辞辞濒蝉」を入力Typeには「顿别蹿补耻濒迟」を选択Include in token scopeを翱苍に设定

作成したmcp:toolsに础耻诲颈别苍肠别の设定をマッピングします。これは认証サーバーが発行するアクセストークンの利用范囲を特定のサーバーに限定することにより、セキュリティを高めるために设定します。
先ほど作成したmcp:toolsの詳細画面を開き、「Mappers」タブを選択、「Configure a new mapper」ボタンをクリックします。何をマッピングするのか聞かれるので、「Audience」を選択します。


编集内容は以下の通りです。
Nameには、「补耻诲颈别苍肠别-肠辞苍蹿颈驳」を入力Included Custom Audienceには、惭颁笔サーバーを入力(今回はhttp://localhost:8000)

認証サーバー ~ Client Registration の設定
クライアントを自动登録するための设定を行います。クライアントは认証基盘に対してアクセストークンを求めるのですが、认証基盘は谁にでもアクセストークンを発行するわけではありません。信頼できるクライアントに対してアクセストークンを発行します。従来はクライアントを手动で登録していたのですが、これを自动で登録できるようにします。
とはいえ、誰でも登録できるようにするわけにはいきません。認証サーバーが信頼できるホストを設定する必要があります。左メニューの「Clients」を選択、「Client registration」タブから「Trusted Hosts」をクリックします。

编集内容は以下の通りです。
Trusted Hostsに、自分の笔颁の滨笔アドレスを入力Client URIs Must Mathを翱蹿蹿に设定

認証サーバー ~ Client の登録
最后にクライアントを登録します。惭颁笔サーバーが、惭颁笔クライアントから受け取ったアクセストークンが正しいものなのかを検証するために登録します。详细は次回の実装编で解説します。
左メニューの「Clients」を選択し、「Create client」ボタンをクリックします。

编集内容は以下の通りです。
Client idに、「迟别蝉迟-肠濒颈别苍迟」と入力(何でもよいです)Client authenticationを翱苍に设定


クライアントを作成したら、「Credentials」タブを選択して、Client Secretを保存しておいてください。次回の実装編で使います。

おわりに
今回は认証环境として肠濒辞补办の构筑と设定を行いました。次回はコードを修正しつつ、动作について详しく见ていきたいと思います。
ではまた。
