MCPサーバを作った2025-02-04
from 日記2025-02-03
MCPサーバを作った2025-02-04
2/3
o3と「こんなことがしたいけど将来的な拡張も考えた時にどう設計するのがいいかな」的な会話をしてたらなるほどとなった
1: コマンドラインPythonスクリプトで自分が必要な機能を実装し、ホットキーで呼び出せるようにしていく
2: それらのツールを呼び出せるHTTPサーバを建てる
なるほどなー。
MCPを使うかどうかはさておき、方向性は同じというわけか
やはり(将来的にもMCPかはさておき)MCPサーバのアーキテクチャは触っておいた方がいいな
2/4
顧客(僕)が日常的に行なっている不定形なプロセスを観察して
その中で繰り返されている共通のステップを見つけて、
それをツール化して手軽に呼び出せるようにし(ここで入出力の標準化とドキュメント化が行われる)
それからそれを呼び出すAPIサーバを作る(ここでサービスディスカバリー的なことができるようになる)
AIエージェントはどのようなツールが使用可能かをディスカバリーして使う
Pythonスクリプトを実行するMCPサーバができて、
Roo CodeからもClaude Desktopからも呼べたので、
理論上なんでもやりたい放題になった
my-tools
このMCPサーバを汎用の「他の人も使うもの」として公開してメンテナンスするより
自分専用のものにして「自分はDropboxのここに論文を入れてる」とかの知識をコードとして言語化していった方が
「僕+AIエージェント」としての生産性は高くなると思う
汎用のツールを使う人は結局その汎用のツールを自分の状況に合わせてカスタマイズするという「抽象度の高いシステム記述」をやることになる
自分専用のMCPサーバを作るの、Roo Codeに「作りたい」って言ったらシュッと作ってくれるものだし、
「そのサーバにこんな機能をつけたい」ってのも自然言語で指示したら作ってくれるわけなので
なんというか「グルーコード」というものの存在が変わってきてる感じがある
2025-02-04
Debugging - Model Context Protocol
Inspector - Model Context Protocol
GPT.icon
Claude Desktop は、設定ファイル(claude_desktop_config.json)に記述された各 MCP サーバーの起動コマンド(例:"node" や "npx" など)をもとに、アプリ起動時に自動的に子プロセスとしてサーバーを立ち上げます。
つまり、ユーザーが個別にサーバーを手動で起動する必要はなく、Claude Desktop 自体が設定情報を読み込み、標準入出力(STDIO)などを通じて MCP プロトコルでサーバーと通信することで接続を確立・管理しています。
cosense-mcp-server
yosider/cosense-mcp-server: A MCP Server for Cosense
をいじり始めた
リソースの一覧を取得する命令ListResourcesと、リソースを取得する命令ReadResourceがある
同様にListToolsとCallToolがある
Devinにwrite_cosenseを参考にして書き込み機能をつけさせたが
https://github.com/nishio/cosense-mcp-server/pull/1
MCPサーバに先日作ったCosenseへの書き込みスクリプトを参考にして書き込み機能をつけようとしたが、そもそもMCPサーバのデバッグが厄介なのでAIがバグらせてどうしようもなくなったw
結局自分で小さい単位で実験をした
概念がすごく難しいわけではないが、エラーログを出さずに死んだり
トースターでエラーを出すけどしっかり読む前に消えるとか、そういう酷さがある
writeに関しては
これらのツールをまずはコマンドラインで呼び出せるようにする
readに関しては
トップ100件を取得
projectを指定してキーワード検索
projectを指定せずキーワード検索
特定ページからリンクを辿って読む
concatPagesでやったやつ