urfave-cli-mcp について
urfave-cli-mcpは、urfave/cliアプリのコマンドツリーをツールに変換し、MCPサーバーとして利用できるようにします。クエリ中心のCLIを再利用したいGo開発者や、まずCLIでツールを開発したい開発者向けです。
主な機能
- 01サブコマンドをMCPツールとして公開
- 02説明・フラグ・既定値・必須フラグに対応
- 03現在のプロセスをフォークしてツールを実行
- 04コマンドの標準出力を結果として返却
活用シーン
- 01クエリ専用のurfave/cliアプリをMCPクライアントに公開
- 02CLIコマンドからMCPツールを試作
MCP 対応
urfave/cliのコマンドツリーをMCPツールに変換し、MCPクライアントからコマンドを実行して標準出力を受け取れるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
urfave-cli-mcp
これは、urfave/cli アプリを Model Context Protocol サーバーとして再利用するための簡易実装です。
指定された Command ツリーを走査し、サブコマンドを MCP ツールとして公開します。説明、フラグ、デフォルト値、必須フラグに対応しています。
ツールは現在のプロセスをフォークして呼び出され、標準出力が結果として返されます。
クエリ専用の CLI を、1 行のコードで MCP サーバーとして再利用するために使っています。 MCP クライアントに公開する前に CLI としてツールを試行錯誤できるため、新しい MCP サーバーの作成にも役立つ可能性があります。
例
package main
import (
"context"
"fmt"
"os"
urfaveclimcp "github.com/thepwagner/urfave-cli-mcp"
"github.com/urfave/cli/v3"
)
var App = &cli.Command{
Name: "hello",
Usage: "say hello",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "name",
Usage: "the name to say hello to",
Value: "World",
},
},
Action: func(_ context.Context, c *cli.Command) error {
fmt.Println("Hello,", c.String("name"))
return nil
},
}
func main() {
// Pass the root command you want to expose, then add the "mcp" command to your App
App.Commands = append(App.Commands, urfaveclimcp.NewMCPCommand(App))
App.Run(context.Background(), os.Args)
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。