Hooks MCP
HooksMCPはYAML設定ファイルを通じてコーディングプロキシにMCPアクセス権限を提供するツールで、コードチェック、テスト、フォーマットなどの機能をサポートし、開発プロセスを簡素化し、セキュリティを向上させます。
2.5ポイント
7.0K

インストール

以下のコマンドをクライアントにコピーして設定
注意:あなたのキーは機密情報です。誰とも共有しないでください。

🚀 コーディングエージェントにMCPを介したリンティング、テスト、フォーマットなどの機能を提供する

このプロジェクトは、コーディングエージェントに対して、MCPを介してリンティング、テスト、フォーマットなどの機能へのアクセスを提供します。1つのYAMLファイルで簡単にセットアップできます。

🚀 クイックスタート

  1. uv を使ってインストールします。
uv tool install hooks-mcp
  1. プロジェクトのルートディレクトリに ファイルを作成し、使用するツールを定義します。例えば:
actions:
  - name: "all_tests"
    description: "Run all tests in the project"
    command: "uv run python -m pytest ./tests"
    
  - name: "check_format"
    description: "Check if the source code is formatted correctly"
    command: "uvx ruff format --check ."
    
  - name: "typecheck"
    description: "Typecheck the source code"
    command: "uv run pyright ."

  - name: "test_file"
    description: "Run tests in a specific file or directory"
    command: "python -m pytest $TEST_PATH"
    parameters:
      - name: "TEST_PATH"
        type: "project_file_path"
        description: "Path to test file or directory"
  1. サーバーを起動します。
uvx hooks-mcp

CursorやWindsurfなどでの実行方法を含む、より詳細な実行オプションについては、running HooksMCP を参照してください。

✨ 主な機能

  1. 簡単なセットアップ:1つのYAMLファイルで、コーディングエージェント用のカスタムMCPサーバーを作成できます。package.jsonのスクリプトやGithub Actionsのワークフローに似ていますが、コマンドはMCP関数によってトリガーされます。このYAMLファイルをリポジトリに追加することで、チームメンバーと共有できます。
  2. ツールの自動検出:コーディングエージェントは、利用可能な開発ツールとそれらに必要な正確な引数を認識します。CLI文字列の推測が不要になります。
  3. セキュリティの向上:エージェントが実行できるコマンドを制限します。エージェントが生成する引数を検証します(例えば、ファイルパスがプロジェクト内にあることを確認します)。
  4. MCPが動作する場所ですべて動作:Cursor、Windsurf、Clineなどで動作します。
  5. 高速化:MCPを使用することで並列実行が可能になり、コマンド生成に必要なトークンが減り、反復を必要とするコマンドのエラーが排除されます。
  6. その他の機能:ANSIコード/制御文字の除去、.env ファイルの読み込み、コミットせずに必要なシークレットを定義する機能、終了コード/stdout/stderrのサポートなど。

📦 インストール

  1. uv を使ってインストールします。
uv tool install hooks-mcp

📚 ドキュメント

設定ファイルの仕様

hooks_mcp.yaml ファイルは、MCPサーバーを介して公開されるツールを定義します。

このプロジェクトの hooks_mcp.yaml を例として参照してください。

トップレベルのフィールド

  • server_name(オプション):MCPサーバーの名前(デフォルト:"HooksMCP")
  • server_description(オプション):MCPサーバーの説明(デフォルト:"Project-specific development tools exposed via MCP")
  • actions(必須):アクション定義の配列

アクションのフィールド

actions 配列内の各アクションは、以下のフィールドを持つことができます。

  • name(必須):ツールの一意の識別子
  • description(必須):ツールの機能を説明する人間が読める説明
  • command(必須):実行するCLIコマンド。$TEST_FILE_PATH のような動的パラメータを含むことができます。
  • parameters(オプション):コマンドで使用される各パラメータの定義
  • run_path(オプション):コマンドを実行するプロジェクトルートからの相対パス。モノレポに便利です。
  • timeout(オプション):コマンド実行のタイムアウト時間(秒)(デフォルト:60秒)

パラメータのフィールド

アクションの parameters 配列内の各パラメータは、以下のフィールドを持つことができます。

  • name(必須):コマンドに置き換えるパラメータ名。例えば TEST_FILE_PATH
  • type(必須):以下のパラメータタイプのいずれか
    • project_file_path:プロジェクト内のローカルパス。プロジェクトルートからの相対パス。プロジェクト内にあり、存在することが検証されます。
    • required_env_var:サーバーを起動する前に環境に設定する必要がある環境変数。コーディングモデルによって指定されません。
    • optional_env_var:オプションの環境変数。コーディングモデルによって指定されません。
    • insecure_string:コーディングアシスタントからの任意の文字列。検証されません。注意して使用してください。
  • description(オプション):パラメータの人間が読める説明
  • default(オプション):パラメータのデフォルト値

パラメータタイプの説明

project_file_path

このパラメータタイプは、パスがプロジェクト内にあることを検証することでセキュリティを確保します。

- name: "test_file"
  description: "Run tests in a specific file"
  command: "python -m pytest $TEST_FILE"
  parameters:
    - name: "TEST_FILE"
      type: "project_file_path"
      description: "Path to test file"
      default: "./tests"

サーバーは、TEST_FILE がプロジェクト内にあり、存在することを検証します。

required_env_var

これらのパラメータは、サーバーを起動する前に環境に設定する必要があります。設定されていない場合、サーバーは起動時にエラーを表示し、ユーザーに変数の設定を要求します。

- name: "deploy"
  description: "Deploy the application"
  command: "deploy-tool --key=$DEPLOY_KEY"
  parameters:
    - name: "DEPLOY_KEY"
      type: "required_env_var"
      description: "Deployment key for the service"

HooksMCPは、環境から環境変数を読み込み、作業ディレクトリ内の .env ファイルに設定された変数も読み込みます。

optional_env_var

required_env_var と似ていますが、オプションです。

- name: "build"
  description: "Build the application"
  command: "build-tool"
  parameters:
    - name: "BUILD_FLAGS"
      type: "optional_env_var"
      description: "Additional build flags"

insecure_string

コーディングアシスタントからの任意の文字列入力を検証せずに許可します。注意して使用してください。

- name: "grep_code"
  description: "Search code for pattern"
  command: "grep -r $PATTERN src/"
  parameters:
    - name: "PATTERN"
      type: "insecure_string"
      description: "Pattern to search for"

HooksMCPの実行

uvx でHooksMCPを実行することをおすすめします。

# インストール
uv tool install hooks-mcp
# 実行
uvx hooks-mcp 

オプションのコマンドライン引数には以下があります。

  • --working-directory/-wd:通常はプロジェクトのルートパス。プロジェクトのルートから実行していない場合は設定してください。
  • 最後の引数は、デフォルトの ./hooks_mcp.yaml を使用しない場合の hooks_mcp.yaml ファイルのパスです。

コーディングアシスタントでの実行

Cursor

Install MCP Server

または、このCursorのディープリンク を開いてください。

Windsurf/VSCodeなど

ほとんどの他のIDEは、mcp.json のバリアントを使用します。HooksMCPのエントリを作成してください。

注意:プロジェクトのルートから実行するか、起動時に作業ディレクトリを手動で渡してください。

{
  "HooksMCP": {
    "command": "uvx",
    "args": [
      "hooks-mcp",
      "--working-directory",
      "."
    ]
  }
}

🔧 技術詳細

セキュリティ機能

セキュリティの利点

HooksMCPは、エージェントにターミナルコマンドへのアクセスを提供する際のセキュリティを向上させるために、いくつかのセキュリティ対策を実装しています。

  1. コマンドの許可リスト:エージェントは、hooks_mcp.yaml でアクセスを許可されたコマンドのみを実行でき、任意のターミナルコマンドを実行することはできません。
  2. パスパラメータの検証:すべての project_file_path パラメータは、以下のことが検証されます。
    • プロジェクトディレクトリ内にあること
    • プロジェクト内に実際に存在すること
  3. 環境変数の制御
    • required_env_varoptional_env_var パラメータは、コーディングアシスタントではなく開発者によって管理されます。これにより、コーディングアシスタントが機密変数にアクセスすることを防ぎます。
  4. 安全なコマンド実行
    • Pythonの subprocess.runshell=False で使用して、シェルインジェクションを防ぎます。
    • shlex.split を使用して、コマンド引数を適切に分割します。
    • タイムアウトを実装して、無限に実行されるコマンドを防ぎます。

セキュリティリスク

HooksMCPを使用するにはいくつかのリスクがあります。

  1. エージェントが hooks_mcp.yaml を編集できる場合、それがMCPを介して実行できるコマンドを追加できます。
  2. エージェントがプロジェクトにコードを追加でき、アクションのいずれかが任意のコードを呼び出す場合(テストランナーなど)、エージェントはこのパターンを使用して任意のコードを実行できます。
  3. HooksMCPにはバグやセキュリティ問題が含まれている可能性があります。

これが完全であることを約束するわけではありませんが、エージェントに無制限のターミナルアクセスを与えるよりは良いでしょう。エージェントをコンテナ内で実行することを常におすすめします。

📄 ライセンス

MIT

代替品

M
MCP
Microsoft公式のMCPサーバーで、AIアシスタントに最新のMicrosoft技術ドキュメントの検索と取得機能を提供します。
9.9K
5ポイント
A
Aderyn
アデリンは、Rustで書かれたオープンソースのSolidityスマートコントラクト静的分析ツールで、開発者やセキュリティ研究者がSolidityコードの脆弱性を発見するのを支援します。FoundryとHardhatプロジェクトをサポートし、複数の形式のレポートを生成でき、VSCode拡張機能も提供します。
Rust
5.9K
5ポイント
D
Devtools Debugger MCP
Node.jsデバッガーMCPサーバーは、Chrome DevToolsプロトコルに基づく完全なデバッグ機能を提供します。ブレークポイントの設定、ステップ実行、変数のチェック、式の評価などが含まれます。
TypeScript
5.4K
4ポイント
S
Scrapling
Scraplingは適応型ウェブページのスクレイピングライブラリで、ウェブサイトの変化を自動的に学習し、要素を再配置します。複数のスクレイピング方法とAI統合をサポートし、高性能な解析と開発者に優しい体験を提供します。
Python
8.9K
5ポイント
M
Mcpjungle
MCPJungleは自ホスト型のMCPゲートウェイで、複数のMCPサーバーを集中的に管理および代理し、AIエージェントに統一されたツールアクセスインターフェースを提供します。
Go
0
4.5ポイント
C
Cipher
Cipherは、プログラミングAIエージェント向けに設計されたオープンソースのメモリ層フレームワークです。MCPプロトコルを通じてさまざまなIDEとAIコーディングアシスタントと統合し、自動記憶生成、チーム記憶共有、デュアルシステム記憶管理などの核心機能を提供します。
TypeScript
0
5ポイント
N
Nexus
NexusはAIツール集約ゲートウェイで、複数のMCPサーバーとLLMプロバイダーの接続をサポートし、統一されたエンドポイントを通じてツール検索、実行、およびモデルルーティング機能を提供し、セキュリティ認証とレート制限をサポートします。
Rust
0
4ポイント
S
Shadcn Ui MCP Server
AIワークフローにshadcn/uiコンポーネントの統合を提供するMCPサーバーで、React、Svelte、Vueフレームワークをサポートし、コンポーネントのソースコード、使用例、メタデータへのアクセス機能を備えています。
TypeScript
9.0K
5ポイント
G
Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
12.3K
4.5ポイント
E
Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
16.1K
4.8ポイント
C
Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
43.7K
4.7ポイント
B
Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
23.3K
4.5ポイント
G
Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
12.0K
4.3ポイント
U
Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
14.9K
5ポイント
M
Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
14.5K
5ポイント
S
Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
21.3K
4.5ポイント
AIBase
智啓未来、あなたの人工知能ソリューションシンクタンク
© 2025AIBase