GC

gakonst/clap-mcp

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

31 stars 6 forks 品質 43 トレンド 11MIT

コマンド・ライン・アプリケーションをモデル・コンテキスト・プロトコル(MCP)で橋渡しするRustフレームワーク

概要

任意のClap CLIをMCPサーバーに簡単に導きます。 CLI と MCP サーバーの両方で動作する完全な計算機例は次のとおりです。 キャスト(Foundry's CLI)をMCPサーバーとして動作させる方法は次のとおりです。 #[derive(McpMode)] マクロ: - 実行 mcp server() メソッドを CLI に追加します。各サブコマンドを MCP ツールに変換します。マップ CLI は、適切なタイプのツールパラメータに引数を割り当てます。既存の CLI 機能をすべて保存します

概要(AI 翻訳)

任意のClap CLIをMCPサーバーに簡単に導きます。

インストール

クイックスタート

CLI と MCP サーバーの両方で動作する完全な計算機例は次のとおりです。

CLI はどちらの方法でも動作します。

実例: キャスト

キャスト(Foundry’s CLI)をMCPサーバーとして動作させる方法は次のとおりです。

使い方

#[derive(McpMode)] マクロ:

  • run_mcp_server()メソッドをCLIに追加する
  • 各サブコマンドをMCPツールに変換
  • 適切な型でツールパラメータにCLI引数をマップ
  • 既存のCLI機能をすべて保存する

ライセンス

MIT または Apache-2.0

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。

README

以下は原文 README の抜粋です。原文を見る。

clap-mcp

Turn any Clap CLI into an MCP server with a simple derive macro.

Installation

[dependencies]
clap-mcp = "0.1"

Quick Start

Here’s a complete calculator example that works as both a CLI and MCP server:

use clap::{Parser, Subcommand};
use clap_mcp::McpMode;

#[derive(Parser, McpMode)]
#[command(name = "calculator")]
#[command(about = "A simple calculator CLI that can also run as an MCP server")]
struct Cli {
    #[command(subcommand)]
    command: Option,
    
    /// Run as MCP server instead of CLI
    #[arg(long)]
    #[mcp(mode_flag)]
    mcp: bool,
    
    /// Port to run MCP HTTP server on (if not specified, uses stdio)
    #[arg(long, value_name = "PORT")]
    mcp_port: Option,
}

#[derive(Subcommand, Clone)]
enum Commands {
    /// Add two numbers
    Add {
        #[arg(short, long)]
        a: f64,
        #[arg(short, long)]
        b: f64,
    },
    
    /// Multiply two numbers
    Multiply {
        #[arg(long)]
        value1: f64,
        #[arg(long)]
        value2: f64,
    },
}

fn execute_command(cmd: Commands) -> Result {
    match cmd {
        Commands::Add { a, b } => {
            Ok(format!("{} + {} = {}", a, b, a + b))
        }
        Commands::Multiply { value1, value2 } => {
            Ok(format!("{} * {} = {}", value1, value2, value1 * value2))
        }
    }
}

fn main() -> Result> {
    let cli = Cli::parse();
    
    if cli.mcp {
        // Run as MCP server - automatically exposes all commands as tools
        if let Some(port) = cli.mcp_port {
            // HTTP server mode on specified port
            let addr = format!("127.0.0.1:{}", port).parse()?;
            cli.run_mcp_server_http_with_handler(addr, execute_command)?;
        } else {
            // stdio mode (default)
            cli.run_mcp_server_with_handler(execute_command)?;
        }
    } else {
        // Run as normal CLI
        match execute_command(cli.command.expect("Subcommand required")) {
            Ok(output) => println!("{}", output),
            Err(e) => eprintln!("Error: {}", e),
        }
    }
    
    Ok(())
}

Now your CLI works both ways:

# Traditional CLI mode
$ calculator add -a 10 -b 32
10 + 32 = 42

$ calculator multiply --value1 7 --value2 6
7 * 6 = 42

# MCP server mode (stdio)
$ calculator --mcp
# Server is now running, ready for MCP clients to connect

# MCP server mode (HTTP on specific port)
$ calculator --mcp --mcp-port 8080
# Server running on http://127.0.0.1:8080, ready for HTTP-based MCP clients

Real Example: Cast

Here’s how you’d make Cast (Foundry’s CLI) work as an MCP server:

#[derive(Parser, McpMode)]
struct Cast {
    #[command(subcommand)]
    cmd: CastCommand,
    
    #[arg(long)]
    #[mcp(mode_flag)]
    mcp: bool,
}
GitHub で README 全文を見る

インストール

This server does not publish a one-line install command.

Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →