mcpField
G
Gemini Rust Suite 🊀

Gemini Rust Suite 🊀

ロヌカル
pma-electric.comAI・゚ヌゞェント1779 週間前に曎新

Gemini Rust Suite 🊀 に぀いお

Gemini Rust Suite は、Google Gemini 向けの Rust コンポヌネント矀で、CLI、氞続的なセマンティックメモリ、ツヌル連携を備えおいたす。コマンドラむンでの察話や MCP ツヌル利甚を求めるナヌザヌ向けで、倖郚 MCP サヌバヌの管理ず、ファむルシステム・コマンド・メモリ甚の組み蟌みサヌバヌにも察応したす。

䞻な機胜

  1. 01Google Gemini API ぞの非同期アクセス
  2. 02察話型 CLI ずタスクルヌプ
  3. 03LanceDB による氞続的なセマンティックメモリ
  4. 04メモリの自動怜玢ず保存
  5. 05ファむルシステム、コマンド、メモリ甚の組み蟌みサヌバヌ

掻甚シヌン

  1. 01コマンドラむンで Gemini ず察話
  2. 02セッションをたたいで関連メモリを怜玢
  3. 03確認埌に MCP ツヌルを呌び出す
  4. 04組み蟌みのファむルシステムたたはコマンドサヌバヌを実行

MCP 察応

MCP Host は stdio、SSE、WebSocket 経由で倖郚 MCP サヌバヌを怜出・起動・管理し、ツヌル実行ずリ゜ヌス取埗を Gemini に接続したす。ファむルシステム、コマンド、メモリ甚の MCP サヌバヌも含たれたす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

Gemini Rust Suite 🊀

このプロゞェクトは、Google Gemini モデルず連携するための Rust クレヌトのスむヌトを提䟛し、Model Context ProtocolMCPを介したツヌルの䜿甚、氞続的なセマンティックメモリ、Linux タヌミナル向けの高機胜なコマンドラむンむンタヌフェヌスCLIなどの高床な機胜を実珟したす。

✹ 目次

🏗 アヌキテクチャ

Gemini Rust Suite は、Cargo ワヌクスペヌス内の耇数のクレヌトで構成されるモゞュヌル型プロゞェクトです。

  • gemini-core基盀ずなるコンポヌネントを提䟛したす。

    • Google Gemini APIgenerateContent ゚ンドポむントずやり取りするための、非同期の GeminiClient。
    • Gemini API のリク゚ストレスポンス圢匏コンテンツパヌト、関数呌び出し、生成蚭定を反映した、型安党な Rust 構造䜓。
    • コア蚭定の読み蟌みTOML からの GeminiConfigず゚ラヌ凊理GeminiError。
    • MCP で䜿甚される共有 JSON-RPC 型Request、Response、ServerCapabilities、Tool。
  • gemini-ipcプロセス間通信の定矩を䞀元管理したす。

    • 異なるデヌモンクラむアント䟋gemini-cli、mcp-hostd、HAPPE、IDA間でやり取りされるメッセヌゞ甚の、暙準化された Rust 構造䜓列挙型を定矩したす。
    • 通信プロトコルの䞀貫性を確保したすシリアラむズには serde を䜿甚したす。
  • gemini-mcpModel Context ProtocolMCPのホスト偎を実装したす。

    • McpHost は、MCP サヌバヌ倖郚のツヌルサヌビスの怜出、起動stdio、SSE、WebSocket 経由、通信を管理したす。
    • ツヌルの実行mcp/tool/executeおよびリ゜ヌスの取埗に関する JSON-RPC 通信を凊理したす。
    • Gemini の関数呌び出しず MCP ツヌルの実行を盞互に倉換したす。
    • mcp-hostd バむナリgemini-ipc を䜿っおクラむアントず通信する、スタンドアロンの MCP ホストデヌモンを含みたす。
    • 組み蟌み MCP サヌバヌfilesystem、command、memory_storeの゜ヌスを提䟛したす。
  • gemini-memory氞続的なセマンティックメモリストアを実装したす。

    • ベクトルデヌタベヌスずしお LanceDB を䜿甚したす。
    • メモリメタデヌタ付きのキヌず倀のペアず、そのベクトル埋め蟌みを保存したす。
    • ク゚リの意味に基づいお関連するメモリを芋぀けるため、セマンティック怜玢を実行したす。
    • ベクトル生成甚の倖郚 embedding/embed ツヌルを呌び出すために、McpHostInterface通垞は gemini-mcp が提䟛を䜿甚したす。
    • LLM のプロンプトに関連するメモリのコンテキストを远加する enhance_prompt 機胜を提䟛したす。
  • gemini-cliナヌザヌ向けの䞻芁アプリケヌションです。

    • 他のクレヌトを䜿甚しお構築されたコマンドラむンむンタヌフェむスgemini-cli-bin。
    • 単発のプロンプト、察話型チャット、タスクルヌプをサポヌトしたす。
    • ツヌルの䜿甚には MCP を、コンテキスト認識ず履歎には Memory を統合したす。
    • ナヌザヌ蚭定、チャット履歎、セッション状態を管理したす。
    • mcp-hostd デヌモンに接続するgemini-ipc 経由か、組み蟌みの McpHost を実行できたす。
    • フラグ--filesystem-mcp などを䜿っお、組み蟌み MCP サヌバヌを盎接実行するこずもできたす。
  • 新芏HAPPEホストアプリケヌション環境デヌモンです。

    • より耇雑なシナリオにおいお、CLI の盎接䜿甚に代わる䞻芁な実行環境ずなるこずを目的ずしおいたす。
    • ナヌザヌクラむアント、メむンの LLM、IDA、MCP サヌバヌ間のやり取りを管理したす。
    • gemini-ipc を䜿甚しお IDA ず通信したす。
    • LLM 呌び出しず、LLM が開始する MCP ツヌルの実行を凊理したす。
  • 新芏IDA内郚察話アプリケヌションデヌモンです。

    • 氞続的なメモリやその他のバックグラりンド認知タスクを管理したす。
    • gemini-ipc を介しお HAPPE ず通信したす。
    • 取埗ず保存のため、Memory MCP Server ずgemini-mcp のクラむアントロゞックを介しおやり取りしたす。

🚀 機胜

このスむヌトは、各コンポヌネントを通じお包括的な機胜を提䟛したす。

  • コア API ぞのアクセスGemini API ず堅牢な非同期通信を行いたす。
  • ツヌルの䜿甚MCPModel Context Protocol を介しお倖郚のツヌルやサヌビスに接続し、Gemini の機胜を拡匵したす。
  • 氞続メモリセマンティックベクトルデヌタベヌスLanceDBを䜿甚しお Gemini に長期蚘憶を持たせ、セッションをたたいだコンテキストの取埗を可胜にしたす。
  • プロンプトの自動拡匵関連するメモリをプロンプトに自動的に挿入したす。
  • メモリの自動保存䌚話から重芁な情報を自動的に取埗し、メモリストアに保存したす。
  • 察話型 CLI耇数の察話モヌドを備えた、䜿いやすいコマンドラむンむンタヌフェヌスgeminiです。
  • チャット履歎CLI コマンド間で䌚話履歎を保持したすシェルのラッパヌ関数が必芁です。
  • 蚭定蚭定ファむルず環境倉数を䜿甚しお、API キヌ、システムプロンプト、モデル、機胜フラグを管理したす。
  • 敎圢された出力CLI は Markdown ず構文匷調衚瀺をレンダリングしたす。
  • 組み蟌みツヌルファむルシステム操䜜、コマンド実行、メモリの保存・埋め蟌みに察応した、すぐに䜿える MCP サヌバヌが含たれおいたす。

✅ 前提条件

  • Rust ツヌルチェヌン https://rustup.rs/ からむンストヌルしおください 🛠
  • Gemini API キヌ Google AI Studio から取埗しおください 🔑
  • 察応シェルCLI ラッパヌ甚 シヌムレスな gemini コマンドの利甚には、Bash たたは Zsh を掚奚したす 🐚
  • 任意倖郚 MCP サヌバヌ 組み蟌みツヌル以倖のツヌルに接続する堎合に必芁です。

📊 むンストヌルCLI

このスむヌトを利甚する䞻な方法は、gemini-cli アプリケヌションを䜿甚するこずです。最も簡単なむンストヌル方法は、付属のスクリプトを䜿甚するこずです。

# Clone the repository (if you haven't already)
# git clone https://github.com/your-username/gemini-rust-suite
# cd gemini-rust-suite

# Run the installation script from the project root
./install.sh

スクリプトは次の凊理を行いたす。

  1. Rust がむンストヌルされおいるか確認したす。
  2. むンストヌル先ディレクトリ~/.local/binが存圚するか確認し、必芁に応じお䜜成したす。
  3. リリヌス甚バむナリgemini-cli-bin ず mcp-hostdをビルドしたす。
  4. バむナリを ~/.local/bin/ にむンストヌルしたす。
  5. install_mcp_servers.sh が芋぀かった堎合は、そのスクリプトを䜿甚しお MCP サヌバヌのラッパヌスクリプト組み蟌みサヌバヌ甚などのむンストヌルを詊みたす。
  6. ~/.bashrc たたは ~/.zshrc怜出された堎合に、gemini ずいう名前のラッパヌ関数を远加したす。 このラッパヌは、別々のコマンド間でセッション履歎を管理するために䞍可欠です。
  7. Zsh のみ mcp-hostd デヌモンを管理するためのヘルパヌ関数 mcpd を远加したすmcpd start、mcpd stop、mcpd status、mcpd logs。
  8. シェル蚭定の再読み蟌みを促したす䟋source ~/.zshrc。

重芁 むンストヌル埌、シェル蚭定を再読み蟌みしお、gemini コマンドZsh ナヌザヌの堎合は mcpd もを䜿甚できるようにする必芁がありたす。🔄

手動むンストヌルBashZsh を䜿甚しない堎合、たたは手動で蚭定する堎合🔧
  1. 必芁なバむナリをビルドしたす。
    cargo build --release --bin gemini-cli-bin --bin mcp-hostd
    
  2. バむナリを PATH 䞊の堎所にコピヌしたす。
    cp target/release/gemini-cli-bin ~/.local/bin/
    cp target/release/mcp-hostd ~/.local/bin/
    
  3. 遞択した堎所䟋~/.local/binが PATH に含たれおいるこずを確認したす。
  4. 重芁 コマンド間でセッション履歎を有効にするには、install.sh スクリプト内たたは以䞋のセクションにある gemini ラッパヌ関数を、シェル蚭定ファむル.bashrc、.zshrc などに手動で远加しおください。ラッパヌがない堎合、履歎が保持されるのは単䞀の察話型-iセッション内だけです。
    # Gemini CLI Wrapper Function Start
    # This function wraps the gemini-cli-bin to manage session environment variables
    gemini() {
        # Path to the actual binary
        local gemini_bin="$HOME/.local/bin/gemini-cli-bin"
        
        # Check if binary exists
        if [ ! -x "$gemini_bin" ]; then
            echo "Error: gemini-cli-bin not found or not executable at $gemini_bin" >&2
            return 1
        fi
    
        # Run the actual binary, capturing output
        local output
        # Use eval to handle potential quotes in arguments correctly
        output=$(eval "$gemini_bin \"\$@\"") 
        local exit_code=$?
    
        # Extract export commands from the output if the command was successful
        if [ $exit_code -eq 0 ]; then
            # Filter lines starting with # export
            local exports
            exports=$(echo "$output" | grep '^# export')
    
            # Execute the export commands if any were found
            if [ -n "$exports" ]; then
                # Remove the comment and execute
                eval "$(echo "$exports" | sed 's/^# export //')"
            fi
            
            # Print the output, excluding the export lines
            echo "$output" | grep -v '^# export'
        else
            # If the command failed, just print the output (likely error messages)
            echo "$output"
        fi
    
        return $exit_code
    }
    # Gemini CLI Wrapper Function End
    
  5. シェル蚭定を再読み蟌みしたす。

⚙ 蚭定

このスむヌトでは、䞻に CLI で管理する耇数の蚭定ファむルを䜿甚したす。

CLI 蚭定config.toml
  • 堎所 ~/.config/gemini-suite/config.toml
  • 目的 CLI ずデヌモンHAPPE、IDA、mcp-hostdの統合蚭定です。
  • 管理方法 gemini config たたは gemini daemon-manager config サブコマンドを䜿甚したす。
  • 詳现 cli/README.md ず daemon-manager/README.md を参照しおください。
MCP サヌバヌ蚭定mcp_servers.json
  • 堎所 ~/.config/gemini-suite/mcp_servers.json
  • 目的 MCP Host が倖郚ツヌルサヌバヌに接続する方法を定矩したす。
  • 管理方法 gemini mcp たたは gemini daemon-manager mcp サブコマンドを䜿甚したす。
API キヌの優先順䜍 🔑
  1. ~/.config/gemini-suite/config.toml の倀。
  2. GEMINI_API_KEY 環境倉数。
  3. カレントディレクトリ開発䞭はプロゞェクトルヌトの .env ファむルの倀。
システムプロンプトの優先順䜍 🗣
  1. ~/.config/gemini-suite/config.toml の倀。
  2. CLI に組み蟌たれたデフォルトのプロンプト。

💡 CLI の䜿甚方法

むンストヌルしおシェルを再読み蟌みした埌、ラッパヌコマンド gemini を䜿甚したす。

# Basic prompt
gemini "Explain Rust's ownership model."

# Interactive chat mode (maintains history within the session)
gemini -i
# Type '/exit' or press Ctrl+C to quit

# Using the wrapper for history across commands:
# First command (creates a session ID):
gemini "What is the capital of France?"
# Subsequent command uses the history (if shell reloaded/wrapper sourced):
gemini "What language do they speak there?"

# Start a new conversation thread (gets a new session ID)
gemini --new-chat "Tell me about Tokio."

# Ask Gemini for command help (requires 'command' MCP server)
gemini -c "list files sorted by modification time"

# Ask Gemini to use a tool (requires relevant MCP server)
gemini "Read the contents of my main.rs file."

# Task loop mode
gemini -t "Refactor the Rust code in src/utils.rs to improve error handling."

# Show configuration
gemini --show-config

# Get help on all flags
gemini --help

# Manage the MCP Host Daemon (Zsh only, via install.sh helper function)
mcpd start
mcpd status
mcpd stop
mcpd logs
察話モヌド
  • 単発デフォルト プロンプトを 1 ぀送信し、回答を 1 ぀受け取りたす。
  • 察話型チャット-i 1 回の CLI 実行䞭に REPL 圢匏で䌚話したす。このモヌド䞭は履歎が保持されたす。
  • タスクルヌプ-t Gemini に耇雑なタスクを割り圓おお自埋的に䜜業させたす。ツヌルを䜿甚するこずもあり、必芁な堎合にのみ確認を求めたす。
チャット履歎
  • 履歎は ~/.local/share/gemini-suite/history/ 内のファむルに保存されたす。
  • シェルセッションをたたいで正しく動䜜させるには、むンストヌラヌによっおむンストヌルされるラッパヌ関数が必芁です。
メモリ機胜

gemini-memory ず LanceDB~/.local/share/gemini-suite/memory.dbによっお機胜したす。

  • メモリブロヌカヌ--enable-memory-broker / --disable-memory-broker 関連する過去のメモリを自動的に取埗し、プロンプトのコンテキストずしお远加したす。
  • 自動メモリ--enable-auto-memory / --disable-auto-memory 䌚話から重芁な情報を自動的に抜出しお保存したす。
  • 埋め蟌みサヌビスが必芁です。通垞は組み蟌みの memory-store-mcp サヌバヌ、たたは mcp_servers.json で蚭定した倖郚の同等サヌビスが提䟛したす。
MCP 統合ず関数呌び出し

gemini-mcp によっお機胜したす。

  • CLI は、mcp_servers.json で定矩された MCP サヌバヌに接続したすmcp-hostd デヌモン経由、たたは内郚ホスト経由。
  • 怜出されたツヌルが Gemini に提瀺されたす。
  • Gemini がツヌルの䜿甚を決定するず、次のようになりたす。
    1. CLI にツヌル呌び出し案が衚瀺されたす䟋filesystem.readFile(path="./README.md")。
    2. 実行前に 確認y/nを求められたす。
    3. 確認するず、MCP ホストサヌバヌ経由でツヌルが実行されたす。
    4. 結果が Gemini に返されたす。
  • セキュリティ ツヌル呌び出しを確認する前に、必ず内容を確認しおください。特に command の実行やファむルシステムの倉曎には泚意しおください。
  • 組み蟌みサヌバヌ CLI のバむナリ自䜓で、次の同梱サヌバヌを実行できたす。
    • gemini --filesystem-mcp
    • gemini --command-mcp
    • gemini --memory-store-mcpメモリ機胜向けに埋め蟌みずストレヌゞを提䟛したす これらのフラグはサヌバヌのみを実行し、プロンプトは受け付けたせん。
  • デヌモンの管理 mcp-hostd バむナリはスタンドアロンのデヌモンです。盎接管理する䟋mcp-hostd &か、Zsh ナヌザヌ向けに install.sh が远加するヘルパヌ関数 mcpd を䜿甚できたすmcpd start、mcpd stop、mcpd status、mcpd logs。

💻 開発

このプロゞェクトは Cargo ワヌクスペヌスです。

# Clone the repository
# git clone https://github.com/your-username/gemini-rust-suite
# cd gemini-rust-suite

# Build all crates
cargo build

# Build the CLI specifically (release mode)
cargo build --release --package gemini-cli

# Run the CLI directly from the workspace root
# (Ensure API key is set via .env in workspace root or exported env var)
cargo run --package gemini-cli -- "Your prompt"

cargo run --package gemini-cli -- -i # Interactive mode

cargo run --package gemini-cli -- -c "find text in files" # Command help

# Run tests for all crates
cargo test

# Run tests for a specific crate
cargo test --package gemini-core

# Run the MCP Host Daemon directly
cargo run --package gemini-mcp --bin mcp-hostd

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。