
gakonst/clap-mcp
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
コマンド・ライン・アプリケーションをモデル・コンテキスト・プロトコル(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,
}
インストール
This server does not publish a one-line install command.
Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →