mcpField
M
MCPHost 🤖

MCPHost 🤖

github.com/mark3labsフレームワーク・SDK1.6k28 週間前に更新

MCPHost 🤖 について

MCPHost は、Claude、OpenAI、Google Gemini、Ollama などの LLM が外部の MCP ツールを呼び出せるようにするコマンドライン向けホストアプリケーションです。現在は積極的な開発が停止されアーカイブされており、後継の Kit への移行が推奨されています。Go SDK と複数の組み込みサーバーも提供されています。

主な機能

  1. 01複数のモデルプロバイダーと複数の MCP サーバーの同時接続に対応
  2. 02非対話モードと YAML ベースのスクリプトモード
  3. 03サーバーごとの allowedTools と excludedTools によるツールフィルタリング
  4. 04組み込みの fs、bash、todo、http サーバー
  5. 05プロセスを起動せずに利用できる Go SDK

活用シーン

  1. 01コマンドラインでモデルと対話しながらローカルツールを呼び出す
  2. 02スクリプトモードで定型作業を自動化する
  3. 03Go プログラムに MCP ホスト機能を組み込む

MCP 対応

MCPHost は MCP クライアント(ホスト)として動作し、stdio、SSE、Streamable HTTP を通じてローカルおよびリモートの MCP サーバーに接続し、そのツールを LLM に提供します。

詳細

⚠️ MCPHost はアクティブにメンテナンスされなくなりました

MCPHost の開発は停止しました。 このプロジェクトは Kit に引き継がれました。Kit は MCPHost の基盤を活用し、より強力で拡張性の高いアーキテクチャを備えています。

👉 すべてのユーザーに、Kit への移行をおすすめします。

このリポジトリはアーカイブされており、今後アップデートやバグ修正は行われません。


MCPHost 🤖

LLM が Model Context Protocol(MCP)を通じて外部ツールとやり取りできるようにする、コマンドラインのホストアプリケーションです。現在、Claude、OpenAI、Google Gemini、Ollama のモデルをサポートしています。

Discord でプロジェクトについて話し合いましょう。

目次

概要 🌟

MCPHost は MCP のクライアント/サーバーアーキテクチャにおけるホストとして機能します。

  • ホスト(MCPHost など)は、接続とやり取りを管理する LLM アプリケーションです
  • クライアントは MCP サーバーと 1 対 1 の接続を維持します
  • サーバーは LLM にコンテキスト、ツール、機能を提供します

このアーキテクチャにより、言語モデルは次のことが可能になります。

  • 外部ツールやデータソースにアクセスする 🛠️
  • やり取りを通じて一貫したコンテキストを維持する 🔄
  • コマンドを安全に実行し、情報を取得する 🔒

現在、次のモデルをサポートしています。

  • Anthropic Claude モデル(Claude 3.5 Sonnet、Claude 3.5 Haiku など)
  • OpenAI モデル(GPT-4、GPT-4 Turbo、GPT-3.5 など)
  • Google Gemini モデル(Gemini 2.0 Flash、Gemini 1.5 Pro など)
  • 関数呼び出しに対応する、Ollama 互換のすべてのモデル
  • OpenAI 互換のすべての API エンドポイント

機能 ✨

  • 複数の AI モデルとのインタラクティブな会話
  • スクリプト作成や自動化に対応する非インタラクティブモード
  • 実行可能な YAML ベースの自動化スクリプトに対応するスクリプトモード
  • 複数の MCP サーバーの同時利用をサポート
  • サーバーごとの allowedTools と excludedTools によるツールのフィルタリング
  • ツールの動的な検出と統合
  • サポート対象のすべてのモデルでツール呼び出しが可能
  • MCP サーバーの場所と引数を設定可能
  • モデルの種類を問わず一貫したコマンドインターフェース
  • コンテキスト管理用のメッセージ履歴ウィンドウを設定可能
  • Anthropic 向けのOAuth 認証をサポート(API キーの代替)
  • カスタム統合やセキュリティポリシーに対応するフックシステム
  • 設定ファイルとスクリプト内の環境変数の置換
  • 一般的な機能向けの組み込みサーバー(filesystem、bash、todo、http)

要件 📋

  • Go 1.23 以降
  • OpenAI/Anthropic の場合:各プロバイダーの API キー
  • Ollama の場合:使用するモデルをインストールしたローカルの Ollama
  • Google/Gemini の場合:Google API キー(https://aistudio.google.com/app/apikey を参照)
  • MCP 互換のツールサーバーを 1 つ以上

環境のセットアップ 🔧

  1. API キー:
# For all providers (use --provider-api-key flag or these environment variables)
export OPENAI_API_KEY='your-openai-key'        # For OpenAI
export ANTHROPIC_API_KEY='your-anthropic-key'  # For Anthropic
export GOOGLE_API_KEY='your-google-key'        # For Google/Gemini
  1. Ollama のセットアップ:
  • https://ollama.ai から Ollama をインストールします
  • 使用するモデルを取得します:
ollama pull mistral
  • Ollama が実行中であることを確認します:
ollama serve

また、Ollama クライアントは、Ollama のベース URL を指定する OLLAMA_HOST などの標準環境変数を使用して設定することもできます。

  1. Google API キー(Gemini 用):
export GOOGLE_API_KEY='your-api-key'
  1. OpenAI 互換のセットアップ:
  • API サーバーのベース URL、API キー、モデル名を取得します
  • --provider-url と --provider-api-key フラグを使用するか、環境変数を設定します
  1. 自己署名証明書(TLS): プロバイダーが自己署名証明書を使用している場合(HTTPS を使用するローカルの Ollama など)、証明書の検証をスキップできます:
mcphost --provider-url https://192.168.1.100:443 --tls-skip-verify

⚠️ 警告:--tls-skip-verify は、開発時、または自己署名証明書を使用する信頼できるサーバーへの接続時にのみ使用してください。TLS 証明書の検証が無効になるため、本番環境での使用は安全ではありません。

インストール 📦

go install github.com/mark3labs/mcphost@latest

SDK の使い方 🛠️

MCPHost には、OS プロセスを起動せずにプログラムからアクセスできる Go SDK も用意されています。この SDK は、設定の読み込み、環境変数、デフォルト値など、CLI と同じ動作を維持します。

クイック例
package main

import (
    "context"
    "fmt"
    "github.com/mark3labs/mcphost/sdk"
)

func main() {
    ctx := context.Background()
    
    // Create MCPHost instance with default configuration
    host, err := sdk.New(ctx, nil)
    if err != nil {
        panic(err)
    }
    defer host.Close()
    
    // Send a prompt and get response
    response, err := host.Prompt(ctx, "What is 2+2?")
    if err != nil {
        panic(err)
    }
    
    fmt.Println(response)
}
SDK の機能
  • ✅ プロセスを起動せずにプログラムからアクセス
  • ✅ CLI と同じ設定動作
  • ✅ セッション管理(保存/読み込み/クリア)
  • ✅ 監視用のツール実行コールバック
  • ✅ ストリーミングに対応
  • ✅ すべてのプロバイダーおよび MCP サーバーとの完全な互換性

SDK の詳細なドキュメント、例、API リファレンスについては、SDK の README をご覧ください。

設定 ⚙️

MCP サーバー

MCPHost は、ホームディレクトリに設定ファイルが存在しない場合、自動的に作成します。設定ファイルは次の順番で検索されます:

  • .mcphost.yml または .mcphost.json(優先)
  • .mcp.yml または .mcp.json(後方互換性)

OS 別の設定ファイルの場所:

  • Linux/macOS:~/.mcphost.yml、~/.mcphost.json、~/.mcp.yml、~/.mcp.json
  • Windows:%USERPROFILE%\.mcphost.yml、%USERPROFILE%\.mcphost.json、%USERPROFILE%\.mcp.yml、%USERPROFILE%\.mcp.json

--config フラグを使用して、任意の場所を指定することもできます。

環境変数の置換

MCPHost は、設定ファイルとスクリプトのフロントマターの両方で、次の構文による環境変数の置換に対応しています:

  • ${env://VAR} - 必須の環境変数(設定されていない場合はエラーになります)
  • ${env://VAR:-default} - デフォルト値を持つ任意の環境変数

これにより、柔軟な設定を維持しながら、API キーなどの機密情報を環境変数に保存できます。

例:

mcpServers:
  github:
    type: local
    command: ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"]
    environment:
      DEBUG: "${env://DEBUG:-false}"
      LOG_LEVEL: "${env://LOG_LEVEL:-info}"

model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
provider-api-key: "${env://OPENAI_API_KEY}"  # Required - will fail if not set

使用方法:

# Set required environment variables
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"

# Optionally override defaults
export DEBUG="true"
export MODEL="openai/gpt-4"

# Run mcphost
mcphost
簡略化された設定スキーマ

MCPHost は、3 種類のサーバータイプからなる簡略化された設定スキーマに対応しました:

ローカルサーバー

マシン上でコマンドを実行するローカル MCP サーバーの場合:

{
  "mcpServers": {
    "filesystem": {
      "type": "local",
      "command": ["npx", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"],
      "environment": {
        "DEBUG": "${env://DEBUG:-false}",
        "LOG_LEVEL": "${env://LOG_LEVEL:-info}",
        "API_TOKEN": "${env://FS_API_TOKEN}"
      },
      "allowedTools": ["read_file", "write_file"],
      "excludedTools": ["delete_file"]
    },
    "github": {
      "type": "local",
      "command": ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"],
      "environment": {
        "DEBUG": "${env://DEBUG:-false}"
      }
    },
    "sqlite": {
      "type": "local",
      "command": ["uvx", "mcp-server-sqlite", "--db-path", "${env://DB_PATH:-/tmp/foo.db}"],
      "environment": {
        "SQLITE_DEBUG": "${env://DEBUG:-0}",
        "DATABASE_URL": "${env://DATABASE_URL:-sqlite:///tmp/foo.db}"
      }
    }
  }
}

各ローカルサーバーのエントリーには、次の項目が必要です:

  • type:"local" に設定する必要があります
  • command:コマンドとすべての引数を含む配列
  • environment:(任意)環境変数をキーと値のペアで指定するオブジェクト
  • allowedTools:(任意)含めるツール名の配列(許可リスト)
  • excludedTools:(任意)除外するツール名の配列(拒否リスト)
リモートサーバー

HTTP 経由でアクセスできるリモート MCP サーバーの場合:

{
  "mcpServers": {
    "websearch": {
      "type": "remote",
      "url": "${env://WEBSEARCH_URL:-https://api.example.com/mcp}",
      "headers": ["Authorization: Bearer ${env://WEBSEARCH_TOKEN}"]
    },
    "weather": {
      "type": "remote", 
      "url": "${env://WEATHER_URL:-https://weather-mcp.example.com}"
    }
  }
}

各リモートサーバーのエントリーには、次の項目が必要です:

  • type:"remote" に設定する必要があります
  • url:MCP サーバーにアクセスするための URL
  • headers:(任意)認証やカスタムヘッダー用の HTTP ヘッダーの配列

リモートサーバーでは、最適なパフォーマンスを得るために StreamableHTTP トランスポートが自動的に使用されます。

組み込みサーバー

最適なパフォーマンスを実現するためにインプロセスで実行される組み込み MCP サーバーの場合:

{
  "mcpServers": {
    "filesystem": {
      "type": "builtin",
      "name": "fs",
      "options": {
        "allowed_directories": ["${env://WORK_DIR:-/tmp}", "${env://HOME}/documents"]
      },
      "allowedTools": ["read_file", "write_file", "list_directory"]
    },
    "filesystem-cwd": {
      "type": "builtin",
      "name": "fs"
    }
  }
}

組み込みサーバーの各エントリーには、次の項目が必要です:

  • type:"builtin" に設定する必要があります
  • name:組み込みサーバーの内部名(例:ファイルシステムの場合は "fs")
  • options:組み込みサーバー固有の設定オプション

利用可能な組み込みサーバー:

  • fs(ファイルシステム):許可するディレクトリを設定できる、安全なファイルシステムアクセス
    • allowed_directories:サーバーがアクセスできるディレクトリパスの配列(指定しない場合、現在の作業ディレクトリがデフォルトになります)
  • bash:セキュリティ制限とタイムアウト制御を適用して bash コマンドを実行します
    • 設定オプションは不要です
  • todo:セッション中のタスク追跡に使用する、一時的な todo リストを管理します
    • 設定オプションは不要です(todo はメモリに保存され、再起動時にリセットされます)
  • http:ウェブコンテンツを取得し、テキスト、マークダウン、または HTML 形式に変換します
    • ツール:fetch(ウェブコンテンツを取得して変換)、fetch_summarize(AI を使ってウェブコンテンツを取得して要約)、fetch_extract(AI を使ってウェブコンテンツを取得して特定のデータを抽出)、fetch_filtered_json(JSON を取得し、gjson パス構文を使ってフィルタリング)
    • 設定オプションは不要です
組み込みサーバーの例
{
  "mcpServers": {
    "filesystem": {
      "type": "builtin",
      "name": "fs",
      "options": {
        "allowed_directories": ["/tmp", "/home/user/documents"]
      }
    },
    "bash-commands": {
      "type": "builtin", 
      "name": "bash"
    },
    "task-manager": {
      "type": "builtin",
      "name": "todo"
    },
    "web-fetcher": {
      "type": "builtin",
      "name": "http"
    }
  }
}
ツールのフィルタリング

すべての MCP サーバータイプでツールのフィルタリングがサポートされており、利用可能なツールを制限できます:

  • allowedTools:許可リスト。サーバーからは指定したツールのみ利用できます
  • excludedTools:拒否リスト。指定したツールを除くすべてのツールを利用できます
{
  "mcpServers": {
    "filesystem-readonly": {
      "type": "builtin",
      "name": "fs",
      "allowedTools": ["read_file", "list_directory"]
    },
    "filesystem-safe": {
      "type": "local", 
      "command": ["npx", "@modelcontextprotocol/server-filesystem", "/tmp"],
      "excludedTools": ["delete_file"]
    }
  }
}

注記:allowedTools と excludedTools は相互に排他的です。サーバーごとにどちらか一方のみ使用できます。

レガシー設定のサポート

MCPHost は、以前の設定形式との完全な後方互換性を維持しています。注記:最近のバグ修正により、外部 MCP サーバー(Docker、NPX など)でのレガシー stdio トランスポートの信頼性が向上しました。

レガシー STDIO 形式
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/tmp/foo.db"],
      "env": {
        "DEBUG": "true"
      }
    }
  }
}
レガシー SSE 形式
{
  "mcpServers": {
    "server_name": {
      "url": "http://some_host:8000/sse",
      "headers": ["Authorization: Bearer my-token"]
    }
  }
}
レガシー Docker/コンテナー形式
{
  "mcpServers": {
    "phalcon": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mark3labs/phalcon-mcp:latest",
        "serve"
      ]
    }
  }
}
レガシー Streamable HTTP 形式
{
  "mcpServers": {
    "websearch": {
      "transport": "streamable",
      "url": "https://api.example.com/mcp",
      "headers": ["Authorization: Bearer your-api-token"]
    }
  }
}
トランスポートの種類

MCPHost は、次の 4 種類のトランスポートをサポートしています:

  • stdio:ローカルプロセスを起動し、stdin/stdout を介して通信します("local" サーバーで使用)
  • sse:Server-Sent Events を使ってサーバーに接続します(レガシー形式)
  • streamable:Streamable HTTP プロトコルを使ってサーバーに接続します("remote" サーバーで使用)
  • inprocess:最適なパフォーマンスを実現するため、組み込みサーバーをインプロセスで実行します("builtin" サーバーで使用)

簡略化されたスキーマでは、次のように自動でマッピングされます:

  • "local" タイプ → stdio トランスポート
  • "remote" タイプ → streamable トランスポート
  • "builtin" タイプ → inprocess トランスポート
システムプロンプト

--system-prompt フラグを使って、カスタムのシステムプロンプトを指定できます。指定方法は次のとおりです:

  1. プロンプトをテキストとして直接渡す:

    mcphost --system-prompt "You are a helpful assistant that responds in a friendly tone."
    
  2. プロンプトを含むテキストファイルのパスを渡す:

    mcphost --system-prompt ./prompts/assistant.md
    

    assistant.md ファイルの例:

    You are a helpful coding assistant. 
    
    Please:
    - Write clean, readable code
    - Include helpful comments
    - Follow best practices
    - Explain your reasoning
    

使用方法 🚀

MCPHost は、統一されたインターフェースを通じてさまざまな AI モデルとやり取りできる CLI ツールです。MCP サーバーを通じてさまざまなツールをサポートし、インタラクティブモードと非インタラクティブモードの両方で実行できます。

インタラクティブモード(デフォルト)

インタラクティブな会話セッションを開始します:

mcphost
スクリプトモード

変数置換に対応した、実行可能な YAML ベースの自動化スクリプトを実行します:

# Using the script subcommand
mcphost script myscript.sh

# With variables
mcphost script myscript.sh --args:directory /tmp --args:name "John"

# Direct execution (if executable and has shebang)
./myscript.sh
スクリプト形式

スクリプトでは、YAML 設定とプロンプトを単一の実行可能ファイルにまとめます。設定はフロントマターの区切り文字(---)で囲む必要があります。プロンプトは YAML 設定に含めるか、閉じ側のフロントマター区切り文字の後に記述できます:

#!/usr/bin/env -S mcphost script
---
# This script uses the container-use MCP server from https://github.com/dagger/container-use
mcpServers:
  container-use:
    type: "local"
    command: ["cu", "stdio"]
prompt: |
  Create 2 variations of a simple hello world app using Flask and FastAPI. 
  Each in their own environment. Give me the URL of each app
---

または、prompt: フィールドを省略して、フロントマターの後にプロンプトを記述することもできます:

#!/usr/bin/env -S mcphost script
---
# This script uses the container-use MCP server from https://github.com/dagger/container-use
mcpServers:
  container-use:
    type: "local"
    command: ["cu", "stdio"]
---
Create 2 variations of a simple hello world app using Flask and FastAPI. 
Each in their own environment. Give me the URL of each app
変数の置換

スクリプトでは、環境変数の置換とスクリプト引数の置換の両方がサポートされています。

  1. 環境変数:${env://VAR} および ${env://VAR:-default} — 最初に処理されます
  2. スクリプト引数:${variable} および ${variable:-default} — 環境変数の処理後に処理されます

コマンドライン引数で変数を指定できます。

# Script with variables
mcphost script myscript.sh --args:directory /tmp --args:name "John"
変数の構文

MCPHost では、次の変数構文がサポートされています。

  1. 必須の環境変数:${env://VAR} — 環境変数に設定されている必要があります
  2. 任意の環境変数:${env://VAR:-default} — 設定されていない場合はデフォルト値が使用されます
  3. 必須のスクリプト引数:${variable} — --args:variable value で指定する必要があります
  4. 任意のスクリプト引数:${variable:-default} — 指定されていない場合はデフォルト値が使用されます

環境変数とスクリプト引数を組み合わせたスクリプトの例:

#!/usr/bin/env -S mcphost script
---
mcpServers:
  github:
    type: "local"
    command: ["gh", "api"]
    environment:
      GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
      DEBUG: "${env://DEBUG:-false}"
  
  filesystem:
    type: "local"
    command: ["npx", "-y", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"]

model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
---
Hello ${name:-World}! Please list ${repo_type:-public} repositories for user ${username}.
Working directory is ${env://WORK_DIR:-/tmp}.
Use the ${command:-gh} command to fetch ${count:-10} repositories.
使用例
# Set environment variables first
export GITHUB_TOKEN="ghp_your_token_here"
export DEBUG="true"
export WORK_DIR="/home/user/projects"

# Uses env vars and defaults: name="World", repo_type="public", command="gh", count="10"
mcphost script myscript.sh

# Override specific script arguments
mcphost script myscript.sh --args:name "John" --args:username "alice"

# Override multiple script arguments  
mcphost script myscript.sh --args:name "John" --args:username "alice" --args:repo_type "private"

# Mix of env vars, provided args, and default values
mcphost script myscript.sh --args:name "Alice" --args:command "gh api" --args:count "5"
デフォルト値の機能
  • 空のデフォルト値:${var:-} — 指定されていない場合は空の文字列を使用します
  • 複雑なデフォルト値:${path:-/tmp/default/path} — パスや URL などをサポートします
  • デフォルト値内のスペース:${msg:-Hello World} — デフォルト値内のスペースをサポートします
  • 後方互換性:既存の ${variable} 構文は変更なく引き続き使用できます

重要:

  • デフォルト値のない環境変数(例:${env://GITHUB_TOKEN})は必須で、環境変数に設定する必要があります
  • デフォルト値のないスクリプト引数(例:${username})は必須で、--args:variable value 構文で指定する必要があります
  • デフォルト値のある変数は任意で、指定されていない場合はデフォルト値が使用されます
  • 環境変数が最初に処理され、その後スクリプト引数が処理されます
スクリプトの機能
  • 実行可能:shebang 行を使用して直接実行します(#!/usr/bin/env -S mcphost script)
  • YAML 設定:MCP サーバーをスクリプト内に直接定義します
  • プロンプトの埋め込み:YAML 内にプロンプトを含めます
  • 変数の置換:--args:variable value とともに ${variable} および ${variable:-default} 構文を使用します
  • 変数の検証:必須変数が不足している場合、わかりやすいエラーを表示してスクリプトを終了します
  • インタラクティブモード:プロンプトが空の場合、インタラクティブモードに切り替わります(セットアップスクリプトに便利です)
  • 設定のフォールバック:mcpServers が定義されていない場合、デフォルトの設定を使用します
  • ツールのフィルタリング:サーバーごとに allowedTools/excludedTools をサポートします
  • 正常な終了:完了後に自動的に終了します

注:shebang 行では、複数の語からなるコマンド mcphost script を処理するために env -S が必要です。これは最新の Unix 系システムのほとんどでサポートされています。

スクリプトの例

サンプルスクリプトについては、examples/scripts/ を参照してください。

  • example-script.sh — カスタム MCP サーバーを使用するスクリプト
  • simple-script.sh — デフォルト設定へのフォールバックを使用するスクリプト
フックシステム

MCPHost では、実行中の特定のタイミングでカスタムコマンドを実行できる強力なフックシステムがサポートされています。これにより、セキュリティポリシー、ログ記録、カスタム連携、自動化されたワークフローを実現できます。

クイックスタート
  1. フック設定を初期化します。

    mcphost hooks init
    
  2. 有効なフックを表示します。

    mcphost hooks list
    
  3. 設定を検証します。

    mcphost hooks validate
    
設定

フックは YAML ファイルで設定され、次の優先順位(高い順)で適用されます。

  • .mcphost/hooks.yml(プロジェクト固有のフック)
  • $XDG_CONFIG_HOME/mcphost/hooks.yml(ユーザーのグローバルフック。デフォルトは ~/.config/mcphost/hooks.yml)

設定例:

hooks:
  PreToolUse:
    - matcher: "bash"
      hooks:
        - type: command
          command: "/usr/local/bin/validate-bash.py"
          timeout: 5
  
  UserPromptSubmit:
    - hooks:
        - type: command
          command: "~/.mcphost/hooks/log-prompt.sh"
利用可能なフックイベント
  • PreToolUse:ツール(bash、fetch、todo、MCP ツール)の実行前
  • PostToolUse:ツールの実行完了後
  • UserPromptSubmit:ユーザーがプロンプトを送信したとき
  • Stop:エージェントが応答を終えたとき
  • SubagentStop:サブエージェント(Task ツール)が終了したとき
  • Notification:MCPHost が通知を送信したとき
セキュリティ

⚠️ 警告:フックは、システム上で任意のコマンドを実行します。信頼できるソースのフックのみを使用し、有効にする前に必ずフックのコマンドを確認してください。

すべてのフックを一時的に無効にするには、--no-hooks フラグを使用します。

mcphost --no-hooks

examples/hooks/ にあるフックスクリプトの例を参照してください。

  • bash-validator.py - 危険な bash コマンドを検証してブロックします
  • prompt-logger.sh - すべてのユーザープロンプトをタイムスタンプ付きで記録します
  • mcp-monitor.py - MCP ツールの使用状況を監視し、ポリシーを適用します
非対話モード

1 つのプロンプトを実行して終了します。スクリプトや自動化に最適です。

# Basic non-interactive usage
mcphost -p "What is the weather like today?"

# Quiet mode - only output the AI response (no UI elements)
mcphost -p "What is 2+2?" --quiet

# Use with different models
mcphost -m ollama/qwen2.5:3b -p "Explain quantum computing" --quiet
モデル生成パラメーター

MCPHost は、さまざまなパラメーターを通じてモデルの動作を微調整できます。

# Control response length
mcphost -p "Explain AI" --max-tokens 1000

# Adjust creativity (0.0 = focused, 1.0 = creative)
mcphost -p "Write a story" --temperature 0.9

# Control diversity with nucleus sampling
mcphost -p "Generate ideas" --top-p 0.8

# Limit token choices for more focused responses
mcphost -p "Answer precisely" --top-k 20

# Set custom stop sequences
mcphost -p "Generate code" --stop-sequences "```","END"

これらのパラメーターは、基盤となるモデルが対応している場合、サポートされているすべてのプロバイダー(OpenAI、Anthropic、Google、Ollama)で機能します。

利用可能なモデル

モデルは --model(-m)フラグを使用して指定できます。

  • Anthropic Claude(デフォルト):anthropic/claude-sonnet-4-5-20250929、anthropic/claude-3-5-sonnet-latest、anthropic/claude-3-5-haiku-latest
  • OpenAI:openai/gpt-4、openai/gpt-4-turbo、openai/gpt-3.5-turbo
  • Google Gemini:google/gemini-2.0-flash、google/gemini-1.5-pro
  • Ollama モデル:ollama/llama3.2、ollama/qwen2.5:3b、ollama/mistral
  • OpenAI 互換:--provider-url を指定したカスタムエンドポイント経由で、任意のモデルを使用できます
例
対話モード
# Use Ollama with Qwen model
mcphost -m ollama/qwen2.5:3b

# Use OpenAI's GPT-4
mcphost -m openai/gpt-4

# Use OpenAI-compatible model with custom URL and API key
mcphost --model openai/<your-model-name> \
--provider-url <your-base-url> \
--provider-api-key <your-api-key>
非対話モード
# Single prompt with full UI
mcphost -p "List files in the current directory"

# Compact mode for cleaner output without fancy styling
mcphost -p "List files in the current directory" --compact

# Quiet mode for scripting (only AI response output, no UI elements)
mcphost -p "What is the capital of France?" --quiet

# Use in shell scripts
RESULT=$(mcphost -p "Calculate 15 * 23" --quiet)
echo "The answer is: $RESULT"

# Pipe to other commands
mcphost -p "Generate a random UUID" --quiet | tr '[:lower:]' '[:upper:]'
フラグ
  • --provider-url string:プロバイダー API のベース URL(OpenAI、Anthropic、Ollama、Google に適用)
  • --provider-api-key string:プロバイダーの API キー(OpenAI、Anthropic、Google に適用)
  • --tls-skip-verify:TLS 証明書の検証をスキップします(警告:安全ではありません。自己署名証明書を使用する場合のみ指定してください)
  • --config string:設定ファイルの場所(デフォルトは $HOME/.mcphost.yml)
  • --system-prompt string:system-prompt ファイルの場所
  • --debug:デバッグログを有効にします
  • --max-steps int:エージェントの最大ステップ数(0 は無制限、デフォルト:0)
  • -m, --model string:使用するモデル(形式:provider/model)(デフォルト "anthropic/claude-sonnet-4-5-20250929")
  • -p, --prompt string:指定したプロンプトで非対話モードを実行します
  • --quiet:AI の応答以外のすべての出力を抑制します(--prompt と併用する場合のみ機能)
  • --compact:装飾のないコンパクトな出力モードを有効にします(スクリプトや自動化に最適)
  • --stream:ストリーミング応答を有効にします(デフォルト:true、無効にするには --stream=false を使用)
認証サブコマンド
  • mcphost auth login anthropic:OAuth を使用して Anthropic に認証します(API キーの代替手段)
  • mcphost auth logout anthropic:保存済みの OAuth 認証情報を削除します
  • mcphost auth status:認証状態を表示します

注:OAuth 認証情報が存在する場合、環境変数および --provider-api-key フラグの API キーより優先されます。

モデル生成パラメーター
  • --max-tokens int:応答の最大トークン数(デフォルト:4096)
  • --temperature float32:応答のランダム性を制御します(0.0~1.0、デフォルト:0.7)
  • --top-p float32:nucleus sampling によって多様性を制御します(0.0~1.0、デフォルト:0.95)
  • --top-k int32:サンプリング対象となる上位 K 個のトークンを制限して多様性を制御します(デフォルト:40)
  • --stop-sequences strings:カスタムの停止シーケンス(カンマ区切り)
設定ファイルのサポート

すべてのコマンドラインフラグは、設定ファイルから設定できます。MCPHost は次の順序で設定を検索します。

  1. ~/.mcphost.yml または ~/.mcphost.json(優先)
  2. ~/.mcp.yml または ~/.mcp.json(後方互換性のため)

設定ファイルの例(~/.mcphost.yml):

# MCP Servers - New Simplified Format
mcpServers:
  filesystem-local:
    type: "local"
    command: ["npx", "@modelcontextprotocol/server-filesystem", "/path/to/files"]
    environment:
      DEBUG: "true"
  filesystem-builtin:
    type: "builtin"
    name: "fs"
    options:
      allowed_directories: ["/tmp", "/home/user/documents"]
  websearch:
    type: "remote"
    url: "https://api.example.com/mcp"

# Application settings
model: "anthropic/claude-sonnet-4-5-20250929"
max-steps: 20
debug: false
system-prompt: "/path/to/system-prompt.txt"

# Model generation parameters
max-tokens: 4096
temperature: 0.7
top-p: 0.95
top-k: 40
stop-sequences: ["Human:", "Assistant:"]

# Streaming configuration
stream: false  # Disable streaming (default: true)

# API Configuration
provider-api-key: "your-api-key"      # For OpenAI, Anthropic, or Google
provider-url: "https://api.openai.com/v1"  # Custom base URL
tls-skip-verify: false  # Skip TLS certificate verification (default: false)

注:コマンドラインフラグは、設定ファイルの値より優先されます。

対話コマンド

チャット中は、次のコマンドを使用できます。

  • /help:利用可能なコマンドを表示します
  • /tools:利用可能なすべてのツールを一覧表示します
  • /servers:設定済みの MCP サーバーを一覧表示します
  • /history:会話履歴を表示します
  • /quit:アプリケーションを終了します
  • Ctrl+C:いつでも終了できます
認証コマンド

Anthropic のオプションの OAuth 認証(API キーの代替):

  • mcphost auth login anthropic:OAuth を使用して認証します
  • mcphost auth logout anthropic:保存済みの OAuth 認証情報を削除します
  • mcphost auth status:認証状態を表示します
グローバルフラグ
  • --config:カスタム設定ファイルの場所を指定します

自動化とスクリプト 🤖

MCPHost の非対話モードは、自動化、スクリプト作成、他のツールとの統合に最適です。

使用例
シェルスクリプト
#!/bin/bash
# Get weather and save to file
mcphost -p "What's the weather in New York?" --quiet > weather.txt

# Process files with AI
for file in *.txt; do
    summary=$(mcphost -p "Summarize this file: $(cat $file)" --quiet)
    echo "$file: $summary" >> summaries.txt
done
CI/CD 統合
# Code review automation
DIFF=$(git diff HEAD~1)
mcphost -p "Review this code diff and suggest improvements: $DIFF" --quiet

# Generate release notes
COMMITS=$(git log --oneline HEAD~10..HEAD)
mcphost -p "Generate release notes from these commits: $COMMITS" --quiet
データ処理
# Process CSV data
mcphost -p "Analyze this CSV data and provide insights: $(cat data.csv)" --quiet

# Generate reports
mcphost -p "Create a summary report from this JSON: $(cat metrics.json)" --quiet
API 統合
# Use as a microservice
curl -X POST http://localhost:8080/process \
  -d "$(mcphost -p 'Generate a UUID' --quiet)"
スクリプト作成のヒント
  • 解析に適したクリーンな出力(AI の応答のみで、UI は含まれません)を得るには、--quiet フラグを使用します
  • 洗練されたスタイルを使わない簡潔な出力を得るには、--compact フラグを使用します(UI 要素を表示したい場合)
  • 注:--compact と --quiet は併用できません。--quiet と一緒に使用した場合、--compact は効果がありません
  • API キーなどの機密データは、ハードコードせずに環境変数を使用します
  • 設定ファイルやスクリプトで環境変数を置換するには、${env://VAR} 構文を使用します
  • 標準的な Unix ツール(grep、awk、sed など)と組み合わせます
  • 長時間実行される処理には適切なタイムアウトを設定します
  • スクリプトで適切にエラーを処理します
  • 本番環境では API キーに環境変数を使用します
環境変数のベストプラクティス
# Set sensitive variables in environment
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"
export DATABASE_URL="postgresql://user:pass@localhost/db"

# Use in config files
mcpServers:
  github:
    environment:
      GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
      DEBUG: "${env://DEBUG:-false}"

# Use in scripts
mcphost script my-script.sh --args:username alice

MCP サーバーとの互換性 🔌

MCPHost は、MCP に準拠するあらゆるサーバーと連携できます。例やリファレンス実装については、MCP サーバーリポジトリをご覧ください。

貢献 🤝

貢献を歓迎します!お気軽に以下をお寄せください。

  • Issue からバグ報告や機能リクエストを送信する
  • 改善のためのプルリクエストを作成する
  • 独自の MCP サーバーを共有する
  • ドキュメントを改善する

コーディングの適切な慣行に従い、適切なテストを含めて貢献してください。

ライセンス 📄

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

謝辞 🙏

  • Claude と MCP 仕様を提供してくださった Anthropic チームに感謝します
  • ローカル LLM ランタイムを提供してくださった Ollama チームに感謝します
  • このツールの改善に協力してくださったすべての貢献者に感謝します

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。