本文へ移動
cccskills
無料GitHub で公開日本語紹介

hamilton-mcp

HamiltonのMCPツールを使い、データ処理のひな形作成からDAGの検証・可視化・実行までを会話の中で進め、構造上の誤りを直しながらパイプラインを組み立てます。

原文原文の説明を見る

Interactive Hamilton DAG development via MCP tools. Validate, visualize, scaffold, and execute Hamilton pipelines without leaving the conversation. Use when building or debugging Hamilton dataflows interactively.

apache/hamiltonスター 2,621(GitHub 2,621 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 新しいHamiltonパイプラインを作りたいとき
  • 実行前にDAGの依存関係を確認したいとき
  • 処理構造を図で把握したいとき
  • 対話しながらエラーを修正したいとき

日本語での紹介

できること

HamiltonのMCPサーバーが提供するツールを使い、データ処理パイプラインを会話の中で組み立て、検証し、実行する手順を扱います。利用するデータライブラリを確認してから、用途に合ったコードのひな形を作成します。実行前にはDAG(処理の依存関係を表す有向グラフ)を検証し、構文エラー、依存先の不足、型注釈、循環参照などを確認します。必要に応じて構造を図にし、各ノードの入出力や依存関係を調べてから実行できます。エラーが出た場合の修正手順や、MCPサーバーが使えない場合のCLIによる代替方法も説明します。

こんなときに便利

Hamiltonを使い始める際に、パイプラインの初期コードを用意したい人に向いています。コードの構造を実行前に確かめたい場合や、依存関係を見ながら対話形式でエラーを直したい場合にも役立ちます。

使い方の例

  • 「このデータ処理用のHamilton DAGを作って、実行前に検証して」
  • 「このパイプラインの依存関係を図にして」
  • 「検証エラーを確認して、原因を直してから実行して」

注意点

Hamilton MCPサーバーとapache-hamilton[mcp]が必要です。利用するデータライブラリに応じた追加インストールが必要な場合があります。実行ツールはPythonコードを実行するため、実行前の検証が必要です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(1)

  • SKILL.md7.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

<!-- SPDX-License-Identifier: Apache-2.0 -->

Hamilton MCP Server -- Interactive DAG Development

The Hamilton MCP server exposes Hamilton's DAG compilation, validation, and execution as interactive tools. It enables a tight feedback loop: write functions, validate the DAG, visualize dependencies, fix errors, and execute -- all without leaving the conversation.

Setup

Run via uvx (recommended). Add --with for whichever libraries your code uses:

uvx --from "apache-hamilton[mcp]" hamilton-mcp                              # minimal
uvx --from "apache-hamilton[mcp]" --with pandas --with numpy hamilton-mcp   # pandas/numpy project
uvx --from "apache-hamilton[mcp]" --with polars hamilton-mcp                # polars project

Or install and run directly:

pip install "apache-hamilton[mcp]"
hamilton-mcp

Or use programmatically:

from hamilton.plugins.h_mcp import get_mcp_server

mcp = get_mcp_server()
mcp.run()

Workflow: The Golden Path

Always follow this sequence when building Hamilton DAGs interactively:

ask user -> capabilities -> scaffold -> validate -> visualize -> correct -> execute

Step 1: Ask the User Which Libraries They Use

Before calling any tool, ask the user which data libraries they use (pandas, numpy, polars, etc.). Then pass their answer as preferred_libraries to hamilton_capabilities and hamilton_scaffold. This ensures scaffolds match the user's project, not the server's environment.

// Example: user says "I use pandas"
// Tool call: hamilton_capabilities(preferred_libraries=["pandas"])
{
  "libraries": {
    "pandas": true,
    "numpy": true,
    "polars": false,
    "graphviz": true
  },
  "available_scaffolds": [
    "basic", "basic_pure_python", "config_based",
    "data_pipeline", "parameterized"
  ]
}

Decision rules:

  • If user says pandas: use pandas-based scaffolds and DataFrame/Series types
  • If user has no preference or only uses built-in types: use basic_pure_python scaffold and int/float/str/dict types
  • If graphviz is available: use hamilton_visualize to show the DAG structure
  • Never generate code that imports libraries the user hasn't stated they use

Step 2: Scaffold a Starting Point

Use hamilton_scaffold with a pattern name from the capabilities response:

PatternLibraries RequiredUse Case
basic_pure_pythonNoneSimple pipelines with built-in types
basicpandasDataFrame cleaning & counting
parameterizedpandasMultiple nodes from one function
config_basedpandasEnvironment-conditional logic
data_pipelinepandasETL: ingest, clean, transform, aggregate
ml_pipelinepandas, numpyFeature engineering & train/test split
data_qualitypandas, numpyValidation with @check_output

Step 3: Validate Before Executing

Always validate before executing. hamilton_validate_dag compiles the DAG without running it, catching:

  • Syntax errors
  • Missing dependencies (parameter names that don't match any function)
  • Type annotation issues
  • Circular references
// Success response
{
  "valid": true,
  "node_count": 5,
  "nodes": ["cleaned", "feature_a", "feature_b", "raw_data", "result"],
  "inputs": ["data_path"],
  "errors": []
}
// Failure response
{
  "valid": false,
  "node_count": 0,
  "nodes": [],
  "inputs": [],
  "errors": [{"type": "SyntaxError", "message": "...", "detail": "line 5"}]
}

Self-correction loop: If validation fails, read the error, fix the code, and validate again. Do not proceed to execution until validation passes.

Step 4: Visualize the DAG (if graphviz available)

hamilton_visualize returns DOT graph source. Use this to:

  • Confirm dependency structure matches intent
  • Identify unexpected connections
  • Explain the pipeline to the user

Step 5: Explore Node Details

hamilton_list_nodes returns structured info for every node:

  • Name, output type, documentation
  • Whether it's an external input (must be provided at runtime)
  • Required and optional dependencies

Use this to understand what inputs the DAG needs before execution.

Step 6: Execute

hamilton_execute runs the DAG with provided inputs and returns results. Key parameters:

  • code: The full Python source
  • final_vars: List of node names to compute (only these and their dependencies run)
  • inputs: Dict of external input values
  • timeout_seconds: Safety limit (default 30s)

WARNING: This executes arbitrary Python code. Always validate first.

Error Handling & Self-Correction

Common Errors and Fixes

"No module named 'X'" The code imports a library that isn't installed. Call hamilton_capabilities to check availability, then rewrite without the missing library.

"Missing dependencies: ['node_name']" A function parameter doesn't match any function name or external input. Either:

  1. Add a function with that name, or
  2. Include it in inputs when executing

"Execution timed out after Ns" The code takes too long. Reduce data size, simplify computation, or increase timeout_seconds.

Validation passes but execution fails Validation checks structure, not runtime behavior. Common causes:

  • Missing input values at execution time
  • Runtime exceptions in function bodies (division by zero, key errors)
  • Library-specific errors (e.g., column not found in DataFrame)

Retry Strategy

  1. If a tool returns an error, fix the issue in code and retry once
  2. If the same error recurs, explain the issue to the user and ask for guidance
  3. Never retry more than twice on the same error

Tool Reference

ToolPurposeWhen to Use
hamilton_capabilitiesEnvironment discoveryAlways first
hamilton_scaffoldGenerate starter codeStarting a new pipeline
hamilton_validate_dagCompile-time validationBefore every execution
hamilton_list_nodesInspect DAG structureUnderstanding dependencies
hamilton_visualizeDOT graph generationExplaining structure (requires graphviz)
hamilton_executeRun the DAGAfter successful validation
hamilton_get_docsHamilton documentationLearning decorators, patterns

Environment Fallbacks

If the MCP server is not running: Fall back to CLI:

# Validate a module
python -c "from hamilton import driver; import my_module; dr = driver.Builder().with_modules(my_module).build(); print('Valid!')"

If Hamilton is not installed: Provide the user with installation instructions:

uvx --from "apache-hamilton[mcp]" hamilton-mcp   # Run via uvx (add --with <lib> as needed)
pip install "apache-hamilton[mcp]"              # Or install directly

Success Criteria

A successful MCP interaction produces:

  1. Code that passes hamilton_validate_dag with zero errors
  2. All external inputs identified via hamilton_list_nodes
  3. Execution results returned from hamilton_execute
  4. The user understands the DAG structure (via visualization or node listing)

Additional Resources

  • For core Hamilton patterns: use /hamilton-core
  • For scaling with async/Spark: use /hamilton-scale
  • For LLM workflow patterns: use /hamilton-llm
  • For observability: use /hamilton-observability
  • Hamilton documentation: hamilton_get_docs("overview")

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

hamilton-core

無料概要あり

PythonのHamiltonでデータ処理のDAGを組み立て、実行・テスト・デバッグするためのスキルです。関数やデコレーターで処理の依存関係を表し、既存コードの分割や可視化も進められます。

  • データ加工処理をDAGに整理したいとき
  • 既存スクリプトを関数に分割したいとき
  • Hamiltonの関数をテストしたいとき
apache/hamilton2,6212026年10月28日 更新

hamilton-dev-workflow

無料概要あり

Hamiltonの新しいデータフローを、DOT図の設計から構造検証、ノード単位のテスト駆動実装まで順序立てて作る手順を案内します。

  • 新しいHamiltonの処理フローを設計したいとき
  • 実装前にDAGの依存関係を検証したいとき
  • 処理をノードごとにテストしたいとき
apache/hamilton2,6212026年10月28日 更新

hamilton-integrations

無料概要あり

Hamiltonのデータ処理フローをAirflowやFastAPIなどに組み込み、定期実行、予測API、ダッシュボード、ノートブックで活用する方法を扱います。

  • Airflowで処理を定期実行したいとき
  • Hamiltonを予測APIに組み込みたいとき
  • Streamlitで分析結果を表示したいとき
apache/hamilton2,6212026年10月28日 更新

hamilton-llm

無料概要あり

HamiltonでRAGや埋め込み、ベクトルデータベース、プロンプトを組み合わせたLLMワークフローを設計し、並列実行やキャッシュ、構造化出力を使う実装パターンを学べます。

  • 文書検索型のAI回答を作りたいとき
  • プロンプトを部品ごとに管理したいとき
  • 複数のLLM処理を並行したいとき
apache/hamilton2,6212026年10月28日 更新

hamilton-observability

無料概要あり

Hamiltonのデータフロー実行をUIとSDKで記録し、処理履歴や依存関係、失敗箇所、実行時間を確認して、開発時のデバッグや本番監視に役立てます。

  • 失敗した実行の原因を調べたいとき
  • 開発と本番の実行を比較したいとき
  • データの来歴を追跡したいとき
apache/hamilton2,6212026年10月28日 更新

hamilton-scale

無料概要あり

Hamiltonの処理を規模や負荷に応じて高速化するため、非同期I/Oやマルチスレッド、Spark・Ray・Daskによる並列化とキャッシュの使い分けを学べます。

  • 複数のAPI処理を並列化したいとき
  • 大規模データを分散処理したいとき
  • 重い計算の繰り返しを減らしたいとき
apache/hamilton2,6212026年10月28日 更新

apache のスキルをすべて見る

このスキルの問題を報告する