/// BANGBOO BLOG ///

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31


April 2025 List
AIエージェント MCPサーバ on Apr 16, 2025 7:57 PM

April 16, 2025

AIエージェント MCPサーバ
■MCPサーバによる連携
Model Context Protocol(MCP)の基礎に関して、社内勉強会で使用したスライド資料を公開します! | DevelopersIO
roo-logger: Cline Memory Bankとは違うAIの記憶システムを(MCPで)作った理由
MCPサーバー自作入門
MCP入門
MCPを活用した検索システムの作り方/How to implement search systems with MCP #catalks - Speaker Deck
リモートMCPサーバーカタログ #AWS - Qiita
プログラマー必見!FastAPI-MCPでAI時代のAPI開発を加速する方法(初心者向けコード付き) #Python - Qiita
MySQLのスキーマ情報を圧縮して提供するMCPサーバーを作った - $shibayu36->blog;
MCPを理解する - Speaker Deck
ローカルRAGを手軽に構築できるMCPサーバーを作りました
[B! MCP] MCPサーバーを使って請求書作成から送付まで自動化してみた話

MCPアーキテクチャパターン - Carpe Diem
ClineとDDDと私 - コドモン Product Team Blog
Gemini CLI の簡単チュートリアル

[B! AI] Cline利用におけるデータの取り扱いについて - サーバーワークスエンジニアブログ
Cline駄目そう?一般的な規約という声もある
 Clineのデータの持ち方
 一応通信はないらしい
Cline - AI Autonomous Coding Agent for VS Code
WE CLAIM NO OWNERSHIP RIGHTS OVER YOUR USER CONTENT. とはあるが再利用に使わないという意味ではないらしい
Privacy. By using the Service, you acknowledge that we may collect, use, and disclose your personal information and aggregated and/or anonymized data as set forth in our Privacy Notice.とあるのでな

■構成
MCPホスト:Cline等のAIエージェント
MCPクライアント:Json設定のProxy (これ以降が狭義MCPサーバ? あるいは全体でMCPサーバ)
┣→ここでコマンドを打つように設定すればそのままローカルがEPになる 
↓ (uvはPythonパッケージ管理/仮想環境ツール) uv run python src とか
API EP

■外部APIに通信かローカルか2種類と考えていい
stdio ローカルのサーバと通信
remote リモートのサーバと通信(SSE→Streamable http)
メッセージはJSON-RPC2.0

例)github-mcp-server GitHub - github/github-mcp-server: GitHub's official MCP Server
 ローカルにおきDockerを動かす形

機能は3つ
 Resources:事前に情報をファイルで読み込ませる感じ
 Prompts:プロンプトのテンプレ設定しておく感じ
 Tools:使うツールを設定しておく感じ
(MCPクライアントは2つ:無意識でいい)
 Sampling:MCPを使うよ~
 Roots:MCPを使うファイルシステム確認~

これで人間が操作していた内容をMCPで実施するようにする
LLM→人間→Github/Slack/GCP etc.
LLM→MCP→Github/Slack/GCP etc.

■MPCサーバとは何者?
Model Context Protocol (MCP)は、特にLLMを活用するアプリケーションにおいて、モデルとのやりとりを標準化するためのプロトコル
API EPやローカルプロセスをMCPサーバと言っているケースもあるが、MCPの文脈からするとMCPサーバは仲介。なぜか?
従来のクライアントサーバモデルとは逆方向に見えるから分かりにくいから、MCPクライアントは広義のMCPサーバに含まれている

MCPにおける構成
[ユーザー] -> [LLM (MCPサーバ)] --> [MCPクライアント] -> [API/CLI/ローカルプロセス】

伝統的な通常のクライアント・サーバ構成
[Client] -> [Server]

■github-mcp-server設定
GitHub - github/github-mcp-server: GitHub's official MCP Server
Github トークン発行はココで→ https://github.com/settings/personal-access-tokens
 クラシックトークンのrepo全体でも良さそう

MCP Marketplace>Remote server>Edit configuration>下記コードをコピペする
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_xxxxxxx"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

上手く行かないので、Cline自身にMCPサーバの調整をしてもらうと下記となった (Docker、DockerGroup、Proxy等) 
{
  "mcpServers": {
    "github": {
      "command": "sg",
      "args": [
        "docker",
        "-c",
        "docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN -e http_proxy -e https_proxy ghcr.io/github/github-mcp-server stdio"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_xxxxx",
        "http_proxy": "http://proxy:3128",
        "https_proxy": "http://proxy:3128"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

■ローカルサーバ
//// UV
curl -Ls https://astral.sh/uv/install.sh | sh
cd /mnt/c/Users/unco/Desktop/local_test/MCP/kuso-app
uv venv 該当ディレクトリに仮想環境を設定
source .venv/bin/activate アクティベート
uv pip install google-cloud-asset
uv pip freeze > requirements.txt
python3 main.py
deactivate 停止
gcloud auth application-default login --no-launch-browser
gcloud auth login --no-launch-browser
消したければ、venvを削除するだけ

上記はpip+requirementsだが下記の方がいいかも、add+tomlで管理
uv init myproject (myprojectディレクトリ、tomlファイルが作成される)
uv add numpy
uv remove numpy
nv sync
uv lock
uv tree
uv python install 3.10 3.11
uv python list
uv python pin 3.11
uv tool install ruff
uv tool list
uvx pytest 一時的に仮装環境を汚さず実行
uv exports --format-requirements.txt

権限確認API(analyzeIamPolicy)
Method: analyzeIamPolicy  |  Cloud Asset Inventory Documentation  |  Google Cloud
Try this method を使えばリクエストやURLが分かる (展開ボタンを押す:□の形)

curl \
'https://cloudasset.googleapis.com/v1/projects/prj-xxxxx:analyzeIamPolicy?analysisQuery.accessSelector.roles roles%2 Fbigquery.dataowner&analysisQuery.identitySelector.identity=user%3Axxxxx%40xxxxx.com&key=[YOUR_API_KEY]'\
--header "Authorization: Bearer $(gcloud auth print-access-token)"\
--header Accept: application/json' \
--compressed
※APIキー不要だた、HTTPやJSの方法も出る

parentでエラーがでてもscopeという意味> organizations/123, folders/123, projects/my-project-id, projects/12345
400 Missing parent field in request. [field_violations {
field: "parent"
description: "Missing parent field in request." }


■2023-04-24
Dialog flow ES - Chatbotの作り方
対話式アプリの有効性>何か対策をしときたい

Dialogflow:FAQのチャットボットを作りたい
 intentをFAQの数だけ作る
  intentグループがあれば纏められるが、、
 色は赤や青で分ける必要がある? entitityは色だが単語で分ける
  entitiy: colors、単語:赤、類語:Red、朱色等
          単語:白、類語:ホワイト等

entitity 個別項目(色、サイズ、キーワード)トレーニングフェーズで使う用語を設定しておく
intent 意図(選択、買う、確認、支払)チャットで引きあたる項目で、数多く作ることになる
 上の2つを結びつきを強くするcontext
  input context 該当のインテントの変遷の一つ前の別名を指定
  output context(コンテキスト用エイリアス名) 該当のインテントの別名を設定する
 Training phrases(想定するユーザの入力文)
 Responses(答えへの反応

料金 無料の範囲である程度賄える
項目を500から選ぶとしても大丈夫 外部のデータソースを使う(できそう)
 色を10個を選択するとしても大丈夫
結果を外部に連携することもできそう

AI型は入力された質問に対して、FAQから適切な回答を表示(正誤で学習し判定上がる)
シナリオ型は入力値から分岐を判定して進む、あみだくじタイプの定型処理に持っていく

■Dialog flow ES
下記の辺りを設定すれば、チャットボットが回答するようになる
ESとしては、ユーザ入力を構造化データにする処理を行いパラメータへ検索を掛ける挙動となっている
 ユーザ行動の履歴から検索ヒットの改善を学習するタイプのAI

インテント分類(ユーザの意図のパターンを設定)
┣トレーニングフレーズ(質問の例文を指定)
┣アクション (何を実行するか指定)
┣パラメータ/エンティティ(質問から抽出すると型を指定)
┗レスポンス (何を返答するか指定)

コンテキスト: input (一つ前のインテント〉 と output (当インデントの別名)
イベント:エンドユーザーの発言からではなく、発生したイベントに基づいてインテントを呼び出す
アクション: デフォルトfallbackにはinput-unknown がついている
パラメータ:下記くらいの考慮で良さそう
@sys.any キーワードを設定してしまう?
@sys.url
@sys.person ロールや役職を設定してしまう?
@sys.email

■Agent 設定
Agent > ML setting > Train でトレーニングさせる。
megaでなく普通のエージェントの方が分かり易い?
Agent > environment > publish パブリッシュし公開?

■ intent
テキストレスポンスにタグが使えずリンクにならない。
ユーザエクスプレッションの単語をドラッグ反転させ techinical_terms 等で検索するとEntityを反映することができる。
(Entity登録済みなら熟語でもOKだが、未登録なら単語で設定したような)

■Entitiy 設定
業務で使用している重要用語は @technical_termsとして作り、揺らぎを全て入力したい
BigQuery: BQ、ビッグクエリ、、、
個人情報: パーソナルインフォメーション, PII、、、

■Integration設定
WebDemoを有効化
DialogMessangerを有効化(こっちのがCoolでは

■FAQを簡単に構築するコツ
検索を網羅するように質問を重要単語を全て入れた形で複数設定する
代表的な質問をレスポンスに入れてしまうとFAQとして分かり易い
 参考になりそうなの一例を回答します。
 Q「ああああ」
 A「いいい」

■思うような結果にならない場合のチューニング
トレーニングフレーズを追加するのが基本
できるだけキーワードをEintity化することもよい方法
Trainingに過去キーワードがあり正誤判定することができる
Validationにトレーニングフレーズの追加等の問題提起が出ているので対処
-トレーニングフレーズ不足なら、ダミー検索を掛け、Trainingでキーワードとintentを割り当てれば一時しのぎはできる

■セキュリティ
WebDemoは誰でも見れてしまう
Dialogflow Messangerをどこかのドメインで使う必要がある(CORS対応のデフォルトドメインが要る)し、誰でも見れてしまう
Cloud run等でWebインターフェイスを作りバックエンドでDialog APIを使う必要がある
クイックスタート: API の操作  |  Dialogflow ES  |  Google Cloud
Python client library  |  Google Cloud

Posted by funa : 07:57 PM | Web | Comment (0) | Trackback (0)


PhotoGallery


TWITTER
Search

Mobile
QR for cellphone  QR for smart phone
For mobile click here
For smart phone click here
Popular Page
#1Web
#2Hiace 200
#3Gadget
#4The beginning of CSSレイアウト
#5Column
#6Web font test
#7Ora Ora Ora Ora Ora
#8Wifi cam
#9みたらし団子
#10Arcade Controller
#11G Suite
#12PC SPEC 2012.8
#13Javascript
#14REMIX DTM DAW - Acid
#15RSS Radio
#16Optimost
#17通話SIM
#18Attachment
#19Summer time blues
#20Enigma
#21Git
#22Warning!! Page Expired.
#23Speaker
#24Darwinian Theory Of Evolution
#25AV首相
#26htaccess mod_rewite
#27/// BANGBOO BLOG /// From 2016-01-01 To 2016-01-31
#28竹書房
#29F☆ck CSS
#30Automobile Inspection
#31No ID
#32Win7 / Win10 Insco
#33Speaker
#34Arcade Controller
#35Agile
#36G Suite
#37Personal Information Privacy Act
#38Europe
#39Warning!! Page Expired.
#40GoogleMap Moblile
#41CSS Selectors
#42MySQL DB Database
#43Ant
#44☆od damnit
#45Teeth Teeth
#46Itinerary with a eurail pass
#47PHP Developer
#48Affiliate
#49/// BANGBOO BLOG /// From 2019-01-01 To 2019-01-31
#50/// BANGBOO BLOG /// From 2019-09-01 To 2019-09-30
#51/// BANGBOO BLOG /// On 2020-03-01
#52/// BANGBOO BLOG /// On 2020-04-01
#53Windows env tips
#54恐慌からの脱出方法
#55MARUTAI
#56A Rainbow Between Clouds‏
#57ER
#58PDF in cellphone with microSD
#59DJ
#60ICOCA
#61Departures
#62Update your home page
#63CSS Grid
#64恐慌からの脱出方法
#65ハチロクカフェ
#66/// BANGBOO BLOG /// On 2016-03-31
#67/// BANGBOO BLOG /// From 2017-02-01 To 2017-02-28
#68/// BANGBOO BLOG /// From 2019-07-01 To 2019-07-31
#69/// BANGBOO BLOG /// From 2019-10-01 To 2019-10-31
#70/// BANGBOO BLOG /// On 2020-01-21
#71Bike
#72Where Hiphop lives!!
#73The team that always wins
#74Tora Tora Tora
#75Blog Ping
#76無料ストレージ
#77jQuery - write less, do more.
#78Adobe Premire6.0 (Guru R.I.P.)
#79PC SPEC 2007.7
#80Google Sitemap
#81Information privacy & antispam law
#82Wifi security camera with solar panel & small battery
#83Hope get back to normal
#84Vice versa
#85ハイエースのメンテ
#86Camoufla
#87α7Ⅱ
#88Jack up Hiace
#89Fucking tire
#90Big D
#914 Pole Plug
#925-year-old shit
#93Emancipation Proclamation
#94Windows env tips
#95Meritocracy
#96Focus zone
#97Raspberry Pi
#98Mind Control
#99Interview
#100Branding Excellent
Category
Recent Entry
Trackback
Comment
Archive
<     April 2025     >
Sun Mon Tue Wed Thi Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Link