mcpField
C
Contractor Foreman by Cotlet

Contractor Foreman by Cotlet

リモート
cotlet.devビジネス・マーケティング41 日前に更新
リポジトリ公式サイト

Contractor Foreman by Cotlet について

Contractor Foreman by Cotletは、Contractor Foremanを扱う技術ユーザー向けのセルフホスト型API・MCPサーバーです。ローカルのChromeセッションを使い、プロジェクト、見積もり、日報、請求書、原価管理などをREST APIやPythonから利用できます。

主な機能

  1. 01プロジェクト、スケジュール、日報の管理
  2. 02見積もり、変更注文、請求書の処理
  3. 03支払いと原価管理の確認
  4. 04タイムカード、購買、検査の管理
  5. 05REST APIとPythonからの呼び出し

活用シーン

  1. 01現場メモを日報にまとめる
  2. 02作業範囲から見積もりを作成する
  3. 03見積もりを超過したプロジェクトの特定
  4. 04期限超過の請求書確認と入金記録

MCP 対応

stdioまたはHTTP経由でMCPクライアントにContractor Foremanツールを提供し、読み取り専用モードにも対応します。Chromeから取得したセッションCookieでアプリにアクセスします。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://cotlet.dev/mcp/v1/contractor-foreman/connect
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://cotlet.dev/mcp/v1/contractor-foreman/connect
Streamable HTTPhttps://cotlet.dev/mcp/v1/contractor-foreman認証が必要
パッケージ
pypicontractor-foreman-api-mcp1.0.2

ツール

詳細

Contractor Foreman API とセルフホスト型 MCP サーバー

お使いのパソコンで、ご自身の Google Chrome のセッションを使って Python で実行する Contractor Foreman API と Contractor Foreman MCP サーバーです。Cotletで本番運用している Contractor Foreman の 89 個すべてのツールに対応しています。プロジェクト、スケジュール、日報、パンチリスト、ToDo、見積もり、変更注文、請求書、支払い、工事原価計算、ディレクトリ、見込み客、タイムカード、請求、発注書、下請け契約、作業指示書、サービスチケット、RFI、提出書類、検査などを扱えます。

Contractor Foreman には一般公開されている API も、公式 MCP サーバーもありません。このリポジトリでは、その両方を利用できます。

  • Claude Code、Claude Desktop、Cursor、Codex およびあらゆる MCP クライアント向けの MCP サーバー。stdio または HTTP 経由で接続します。セットアップ
  • http://127.0.0.1:8787/api/v1/contractor-foreman で利用できる REST API。OpenAPI ドキュメントは /docs にあります。セットアップ
  • Python:call("list_projects", search="Oak St") に加え、すぐに使えるスクリプト 10 個を examples/ に用意しています。

このツールは、自分で実行したい技術者向けです。非商用利用に限ります(ライセンス)。サーバー上で 24 時間 365 日稼働させたい場合、Contractor Foreman がアプリを変更しても動作する状態を保ちたい場合、チームやビジネスで利用したい場合は、cotlet.dev のホステッド版をご利用ください。

Contractor Foreman MCP サーバー Python 3.11+ ライセンス:PolyForm Noncommercial 1.0.0

git clone https://github.com/cotletdev/contractor-foreman-api-mcp-server.git && cd contractor-foreman-api-mcp-server
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
contractor-foreman-mcp connect                     # reads your Contractor Foreman session from Chrome
contractor-foreman-mcp call list_projects
claude mcp add contractor-foreman -- "$PWD/.venv/bin/contractor-foreman-mcp" mcp

目次

仕組み

AI agent (MCP) / script (REST, Python) ──▶ contractor-foreman-mcp on your computer ──your cookies──▶ app.contractorforeman.net
                                                      ▲
                     contractor-foreman-mcp connect ──┘ reads them once from your Chrome (DevTools Protocol)
  1. いつもと同じように、ご自身の Chrome で Contractor Foreman にサインインします。
  2. contractor-foreman-mcp connect は Chrome DevTools Protocol 経由でその Chrome に接続し、contractorforeman.net の Cookie とブラウザーのタイムゾーンを読み取って、~/.config/contractor-foreman-api-mcp/session.json に保存します。このファイルを読み取れるのはご自身のユーザーだけです。パスワードを確認したり保存したりすることはありません。
  3. 各ツール呼び出しは、Contractor Foreman のウェブアプリが呼び出すものと同じ /api/... エンドポイントへのリクエストです。Cookie を付けて、Chrome の TLS フィンガープリントを再現する curl_cffi で送信します。呼び出しのたびにブラウザーを起動することはありません。

Contractor Foreman は、サインアウト状態でのリクエストにも HTTP 200 と「サインアウト済み」を示す本文を返します。ツールはこれを auth_expired に変換します。その後、Chrome がリモートデバッグを有効にして起動していれば、サーバーは Chrome から Cookie を再度読み取ります。送信する時刻は、connect が Chrome から読み取ったタイムゾーンで保存されます。

必要条件

  • Python 3.11 以降。
  • Contractor Foreman にサインイン済みの Google Chrome 144 以降。デバッグポートを使用する場合は、任意の Chrome または Chromium を利用できます(オプション B:デバッグポートを使用する Chrome)。
  • macOS、Linux、または Windows。
  • 使用するモジュールへのアクセス権を持つ Contractor Foreman のロール。ロールで開けないモジュールのツールを使うと、アプリ本来のメッセージが表示されて失敗します。

インストール

git clone https://github.com/cotletdev/contractor-foreman-api-mcp-server.git
cd contractor-foreman-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate              # Windows: .venv\Scripts\activate
pip install -e .
contractor-foreman-mcp --version

uv を使う場合:uv venv && uv pip install -e . を実行してから、uv run contractor-foreman-mcp ... を実行します。

AI エージェント(Claude Code、Codex、Cursor)を使ってセットアップしますか?このフォルダーを開いて、リポジトリのセットアップを依頼してください。AGENTS.md にすべての手順が記載されており、Chrome での操作が必要なときだけ確認を求めます。

更新するには、git pull && pip install -e . を実行します。ホストされている Contractor Foreman ツールへの変更はすべて、このリポジトリに反映しています。

Chrome を接続する

オプション A:普段使っている Chrome(推奨)
  1. Chrome で chrome://inspect/#remote-debugging を開き、remote debugging をオンにします。すると Chrome は、このコンピューター上のプログラムからの DevTools 接続を受け付け、接続のたびに確認を求めます。

  2. app.contractorforeman.net にサインインしていることを確認します。

  3. 次を実行します。

    contractor-foreman-mcp connect
    
  4. Chrome で接続を許可するか確認されます。Allow をクリックします。

Saved 34 Contractor Foreman cookies to /Users/you/.config/contractor-foreman-api-mcp/session.json
Signed in to Contractor Foreman as Mike Turner ([email protected])

その後、リモートデバッグをオフに戻してもかまいません。Contractor Foreman にサインアウトされた後、新しいセッションをサーバーに自動で取得させたい場合は、オンのままにしてください。

connect は、Chrome のデフォルトのプロファイルフォルダーにある DevToolsActivePort ファイルを探します。Chrome Beta、Canary、またはカスタムのプロファイルフォルダーを使用する場合は、--profile-dir "<folder>" を指定してください。

オプション B:デバッグポートを使う Chrome

Chrome はデフォルトのプロファイルではデバッグポートを開かないため、別のプロファイルで Chrome を起動し、そこで一度 Contractor Foreman にサインインしてから接続します。

# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-contractor-foreman"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-contractor-foreman"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-contractor-foreman"

contractor-foreman-mcp connect --cdp http://127.0.0.1:9222

--cdp には ws:// の DevTools URL も指定できます。たとえば、SSH トンネル経由で接続する別のコンピューター上の Chrome の URL を指定できます。

オプション C:Cookie を手動で貼り付ける

Chrome を使えないサーバーの場合:Chrome で app.contractorforeman.net の DevTools を開き、Application > Cookies を選択して、2 つの値をコピーします。_session__240322(https://app.contractorforeman.net の下)と auth_data_session(.contractorforeman.net の下)です。その後、次を実行します。

contractor-foreman-mcp connect --token     # paste "_session__240322=...; auth_data_session=...", input is hidden
# or, without a session file:
export CONTRACTOR_FOREMAN_AUTH_TOKEN='_session__240322=...; auth_data_session=...'

貼り付けた Cookie は自動更新されません。Contractor Foreman にサインアウトされたら、新しい Cookie を貼り付けてください。Chrome がない場合、タイムゾーンにはこのコンピューターの設定(TZ またはシステム設定)が使われます。

セッションはいつでも次のコマンドで確認できます。

contractor-foreman-mcp status

MCP サーバー

MCP サーバーでは、すべてのツールの入力スキーマ、エージェント向けの説明、ヒントを確認できます。読み取りツールには読み取り専用の印が付き、クライアント宛てに書類をメール送信するツールには、実行前にクライアントが確認を求めるよう印が付きます。

Claude Code
claude mcp add contractor-foreman -- /path/to/contractor-foreman-api-mcp-server/.venv/bin/contractor-foreman-mcp mcp
# read only:
claude mcp add contractor-foreman -- /path/to/contractor-foreman-api-mcp-server/.venv/bin/contractor-foreman-mcp mcp --read-only
Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "contractor-foreman": {
      "command": "/path/to/contractor-foreman-api-mcp-server/.venv/bin/contractor-foreman-mcp",
      "args": ["mcp"]
    }
  }
}
Cursor

~/.cursor/mcp.json。Claude Desktop と同じブロックを使用します。すぐに使えるコピーは mcp.json にあります。

Codex

~/.codex/config.toml:

[mcp_servers.contractor-foreman]
command = "/path/to/contractor-foreman-api-mcp-server/.venv/bin/contractor-foreman-mcp"
args = ["mcp"]
HTTP 経由

contractor-foreman-mcp serve を実行すると、URL を受け取るクライアント向けに、ストリーミング可能な HTTP 経由でも http://127.0.0.1:8787/mcp で MCP を提供します。

contractor-foreman-mcp serve
claude mcp add --transport http contractor-foreman http://127.0.0.1:8787/mcp

その後、エージェントに次のようなことを依頼できます。

Maple St の改装工事について、Mike のボイスメモがあります。今日の日報にまとめてください:大工チーム4人、電気工事士1人、乾式壁を搬入、雨のため午後2時30分に作業中止。

Johnson 様宅の浴室の現地確認で作成したこの作業範囲リストから、材料に20%の上乗せを適用した見積書を作成し、合計を表示してから、クライアントにメールで送信してください。

見積もりを超過している原価コードがある進行中のプロジェクトはどれですか?超過額の大きい順に表示してください。

支払い期限を過ぎた請求書を、残高と延滞日数とともに一覧表示し、Burger Palace からの1,200ドルの小切手を請求書11に記録してください。

REST API

contractor-foreman-mcp serve       # http://127.0.0.1:8787, MCP at /mcp, docs at /docs

各ツールには /api/v1/contractor-foreman 配下に個別のルートがあり、cotlet.dev のホスト版 API とパスが同じなので、一方に向けて書いたコードはもう一方でも動作します。パスの各部分とクエリ文字列が引数となり、JSON ボディで残りの引数を指定します。

curl 'http://127.0.0.1:8787/api/v1/contractor-foreman/projects?search=Oak%20St'
curl 'http://127.0.0.1:8787/api/v1/contractor-foreman/projects/1678164/job-costing'
curl 'http://127.0.0.1:8787/api/v1/contractor-foreman/invoices?unpaid_only=true'
curl -X POST http://127.0.0.1:8787/api/v1/contractor-foreman/daily-logs \
  -H 'Content-Type: application/json' \
  -d '{"project_id": "1678164", "date": "2026-10-20", "notes": "Hung and taped drywall in the dining area.", "people": {"Drywall crew": 3}}'

名前で指定する任意のツール。ボディを引数として渡します。

curl -X POST http://127.0.0.1:8787/api/v1/contractor-foreman/tools/list_todos -d '{"status": "open"}'
  • GET /api/v1/contractor-foreman/tools:各ツールのルート、入力スキーマ、回答例を表示します。
  • GET /docs:対話型の OpenAPI ドキュメントです。GET /openapi.json は n8n、Postman、または生成したクライアント向けのスキーマです。
  • 回答は JSON 形式です。リストには next_cursor が含まれます。次のページを取得するには、それを cursor として渡してください。

サーバーは 127.0.0.1 のみで待ち受けます。別のデバイスからアクセスするにはトークンを設定してください。その場合、すべてのリクエストに Authorization: Bearer <token> が必要です。

CONTRACTOR_FOREMAN_MCP_TOKEN=$(openssl rand -hex 24) contractor-foreman-mcp serve --host 0.0.0.0

Python とサンプルスクリプト

サーバーなしで、Python から直接実行できます。

from contractor_foreman_api_mcp import call
from contractor_foreman_api_mcp.scripting import paginate, write_rows

projects = list(paginate("list_projects", {"include_completed": True, "limit": 100}, "projects"))
write_rows(projects, "projects.csv")
costing = call("get_job_costing", project_id=projects[0]["project_id"])
call("create_daily_log", project_id=projects[0]["project_id"], date="2026-10-20", notes="Framed the east wall.")

または、シェルから単一のツールを実行できます。例:contractor-foreman-mcp call list_invoices unpaid_only=true limit=10。JSON オブジェクトを使うこともできます。

examples/ にすぐ使えるスクリプトがあります。それぞれ JSON または簡潔なレポートを出力し、必要に応じて --out file.csv または --out file.json を指定できます。また、--help も使えます。

スクリプト内容
export_projects.pyプロジェクトを CSV または JSON に出力します。顧客、段階、日付、契約金額、コスト、完成率が含まれます。--status、--search を指定できます。
add_daily_log.py現場メモ、作業班、納品情報から日報を作成します。対象日に日報がまだないことを確認してから作成します。--dry-run を指定できます。
create_estimate.pyマークアップを適用し、CSV の作業範囲リストから見積もりを作成します。合計金額を出力し、--send を指定すると PDF をメールで送信します。
create_change_order.py顧客の依頼から変更注文または変更注文依頼を作成します。保存済みの変更注文をメールで送信するには --send を指定します。
reschedule_task.pyスケジュールタスクと、それに依存するすべてのタスクを N 日移動します。--dry-run を指定できます。
over_budget_projects.py実コストが見積もりを超えている進行中プロジェクトのコストコードを、超過額の大きい順に表示します。
overdue_invoices.py残高のある延滞請求書を、古い順に表示します。延滞日数と未払い総額も表示します。
record_payment.py請求書番号で特定した請求書に対する小切手または振込を記録し、新しい残高を表示します。
crew_hours.pyタイムカードから、過去 N 日間または指定期間のプロジェクト別・従業員別の労働時間と人件費を表示します。
open_todos.py次の N 日以内に期限を迎える、または期限を過ぎた未完了の ToDo をプロジェクト別に表示します。
python examples/overdue_invoices.py --out overdue.csv
python examples/add_daily_log.py --project-id 1678164 --notes "Framed second floor east wall." --people "Framing crew=4" --dry-run

スケジュールを設定する場合、コンピューターの電源が入っていれば、ローカルの cron を利用できます。例:0 8 * * 1 cd ~/contractor-foreman-api-mcp-server && .venv/bin/python examples/overdue_invoices.py --out overdue.csv。

89 個すべてのツール

ID はツール一覧から取得します。例:list_projects の project_id、list_invoices の invoice_id などです。contractor-foreman-mcp tools で一覧を表示でき、contractor-foreman-mcp tools --json で入力スキーマも表示できます。ホスト版に含まれるすべてのツールがこのリポジトリにあります。

プロジェクト、スケジュール、日次ログ、パンチリスト、ToDo(18)
ツールアクセスREST ルート機能
create_daily_log書き込みPOST /daily-logsプロジェクトの日次ログを新規作成します。作業メモ、作業者、納品、天候に関するメモ、遅延を記録します。
create_project書き込みPOST /projects顧客の新規プロジェクトを作成します。プロジェクト番号、種類、段階、住所、日付を指定します。
create_punchlist書き込みPOST /punchlistsプロジェクトに空のパンチリストを新規作成します。
create_todo書き込みPOST /todosToDoを新規作成します。任意でプロジェクトに関連付け、期限、優先度、担当者を設定できます。
get_daily_log読み取りGET /daily-logs/{daily_log_id}1件の日次ログを取得します。作業メモ、作業者と訪問者、資材、機器、天候、遅延を確認できます。
get_job_costing読み取りGET /projects/{project_id}/job-costing1つのプロジェクトについて、原価コードごとの見積原価と実際原価、差額、合計を取得します。
get_project読み取りGET /projects/{project_id}1件のプロジェクトを取得します。顧客、住所、段階、日付、契約金額、原価、請求、留保金を確認できます。
get_punchlist読み取りGET /punchlists/{punchlist_id}1件のパンチリストを取得します。プロジェクト、住所、顧客、未完了および完了項目の件数を確認できます。
get_todo読み取りGET /todos/{todo_id}1件のToDoを取得します。説明、プロジェクト、優先度、ステータス、期限、担当者、チェックリストを確認できます。
list_daily_logs読み取りGET /daily-logs日付で日次ログを一覧表示します。任意でプロジェクトと期間を指定できます。
list_projects読み取りGET /projects顧客、段階、日付、契約金額、原価、進捗率を含むプロジェクトを一覧表示します。
list_punchlists読み取りGET /punchlistsプロジェクト、ステータス、未完了および完了項目の件数、各項目の担当者を含むパンチリストを一覧表示します。
list_schedule_tasks読み取りGET /projects/{project_id}/schedule-tasksプロジェクトのガントスケジュールのタスクを一覧表示します。日付、期間、依存関係、担当者、進捗率を確認できます。
list_todos読み取りGET /todosプロジェクト、優先度、ステータス、期限、担当者を含むToDoを一覧表示します。
update_daily_log書き込みPATCH /daily-logs/{daily_log_id}日次ログのメモ、時刻、作業者、納品、天候に関するメモ、遅延を変更します。
update_project書き込みPATCH /projects/{project_id}プロジェクトの名前、段階、種類、住所、日付、説明を変更します。
update_schedule_task書き込みPATCH /projects/{project_id}/schedule-tasks/{task_id}プロジェクトのスケジュールにあるタスクの名前、日付、期間、進捗率を変更します。
update_todo書き込みPATCH /todos/{todo_id}ToDoの名前、説明、期限、優先度、ステータスを変更します。たとえば、完了としてマークできます。
見積もり、変更注文、請求書、支払い(27)
ツールアクセスREST ルート機能
add_change_order_items書き込みPOST /change-orders/{change_order_id}/items変更注文または変更注文リクエストに、価格付きの項目を追加します。
add_estimate_items書き込みPOST /estimates/{estimate_id}/items既存の見積もりに、価格付きの項目を追加します。
add_invoice_items書き込みPOST /invoices/{invoice_id}/items請求書に、価格付きの項目を追加します。
create_change_order書き込みPOST /change-ordersプロジェクトに、項目を含む変更注文または変更注文リクエストを作成します。
create_estimate書き込みPOST /estimatesプロジェクトまたは顧客向けに、価格付きの項目を含む見積もりの下書きを作成します。
create_invoice書き込みPOST /invoicesプロジェクトまたは顧客向けに、価格付きの項目を含む請求書の下書きを作成します。
create_share_link書き込みPOST /share-linksサインイン済みのチームが見積もり、変更注文、請求書を開ける、短い内部リンクを作成します。
delete_change_order書き込みDELETE /change-orders/{change_order_id}変更注文または変更注文リクエストを完全に削除します。
delete_estimate書き込みDELETE /estimates/{estimate_id}見積もりを完全に削除します。
delete_invoice書き込みDELETE /invoices/{invoice_id}支払いがない請求書を完全に削除します。
get_change_order読み取りGET /change-orders/{change_order_id}変更注文またはリクエスト1件の説明、ステータス、合計、項目を取得します。
get_estimate読み取りGET /estimates/{estimate_id}顧客、日付、条件、合計、すべての項目を含む見積もり1件を取得します。
get_invoice読み取りGET /invoices/{invoice_id}顧客、日付、条件、項目、支払い、未払い残高を含む請求書1件を取得します。
list_change_orders読み取りGET /change-orders変更注文と変更注文リクエストを新しい順に、ステータス、プロジェクト、合計とともに一覧表示します。
list_cost_codes読み取りGET /cost-codes見積もり、変更注文、請求書の項目に指定する、会社のコストコードを一覧表示します。
list_cost_items読み取りGET /cost-items見積もりと変更注文の項目の価格設定に使う、単位、単価、マークアップ付きの保存済みコスト項目を一覧表示します。
list_estimates読み取りGET /estimates見積もりを新しい順に、ステータス、プロジェクト、顧客、合計とともに一覧表示します。
list_invoices読み取りGET /invoices請求書を新しい順に、ステータス、合計、未払い残高、延滞フラグとともに一覧表示します。
list_payments読み取りGET /payments請求書に対して受領した支払いを新しい順に、金額、方法、請求書とともに一覧表示します。
record_payment書き込みPOST /invoices/{invoice_id}/payments請求書に対して受領した支払いを記録します。
remove_estimate_items書き込みDELETE /estimates/{estimate_id}/items見積もりから項目を削除します。
send_change_order書き込みPOST /change-orders/{change_order_id}/send変更注文をPDFとして顧客または指定した宛先にメールで送信します。
send_estimate書き込みPOST /estimates/{estimate_id}/send見積もりをPDFとして顧客または指定した宛先にメールで送信します。
send_invoice書き込みPOST /invoices/{invoice_id}/send請求書をPDFとして顧客または指定した宛先にメールで送信します。
update_change_order書き込みPATCH /change-orders/{change_order_id}変更注文のステータス、タイトル、理由、日付を変更します。
update_estimate書き込みPATCH /estimates/{estimate_id}見積もりのステータス、タイトル、日付、説明、含まれる項目、除外項目を変更します。
update_invoice書き込みPATCH /invoices/{invoice_id}請求書のステータス、請求日、支払期日、説明を変更します。
ディレクトリ、リード、タイムカード、購買、現場作業(44)
ツールアクセスREST ルート機能
add_project_notewritePOST /projects/{project_id}/notesプロジェクトの「Notes」タブにメモを追加します。
create_billwritePOST /bills任意でプロジェクトに紐付けて、明細項目を含む仕入先の請求書を記録します。
create_contactwritePOST /contacts顧客、従業員、請負業者、仕入先、その他の連絡先をディレクトリに追加します。
create_expensewritePOST /expenses金額、日付、仕入先、プロジェクトを含む経費(領収書、購入、手数料)を記録します。
create_inspectionwritePOST /inspections種類、日付、機関、検査担当者、メモを指定して、プロジェクトの検査を記録します。
create_leadwritePOST /leads連絡先情報と営業パイプラインのステージを指定して、営業リードを追加します。
create_opportunitywritePOST /opportunitiesステージ、スコア、予算、販売予定日を指定して、顧客の営業案件を追加します。
create_purchase_orderwritePOST /purchase-orders明細項目を含む仕入先宛ての購入注文書をドラフトとして作成します。任意でプロジェクトに紐付けられます。
create_rfiwritePOST /rfis質問と回答期限を指定して、プロジェクトの情報提供依頼をドラフトとして作成します。
create_service_ticketwritePOST /service-tickets顧客のサービスチケットを作成します。任意で日時を指定して予定を設定できます。
create_sub_contractwritePOST /sub-contractsプロジェクトの下請業者との下請契約をドラフトとして作成します。
create_work_orderwritePOST /work-orders件名、説明、日付を指定して、プロジェクトのステータスが「Open」の作業指示書を作成します。
get_billreadGET /bills/{bill_id}仕入先の請求書1件の明細項目、日付、合計金額、未払残高、ステータスを取得します。
get_clock_statusreadGET /clock-status現在出勤記録中の人、自分が出勤記録中かどうか、今週と先週の作業員の労働時間を取得します。
get_contactreadGET /contacts/{contact_id}ディレクトリのレコード1件を詳細に取得します。連絡先情報、ステータス、サービス、取引条件、追加の連絡先が含まれます。
get_expensereadGET /expenses/{expense_id}金額、日付、仕入先、プロジェクト、原価種別、原価コード、理由を含む経費1件を取得します。
get_inspectionreadGET /inspections/{inspection_id}種類、プロジェクト、日付、結果、機関、検査担当者、メモを含む検査1件を取得します。
get_opportunityreadGET /opportunities/{opportunity_id}営業案件1件の詳細を取得します。顧客の連絡先、ステージ、スコア、予算、メモ、最終アクティビティが含まれます。
get_purchase_orderreadGET /purchase-orders/{purchase_order_id}仕入先、日付、ステータス、明細項目を含む購入注文書1件を取得します。
get_rfireadGET /rfis/{rfi_id}質問、日付、回答、ステータスを含む情報提供依頼1件を取得します。
get_service_ticketreadGET /service-tickets/{service_ticket_id}顧客、サービス提供先住所、予定、技術者、優先度を含むサービスチケット1件を取得します。
get_sub_contractreadGET /sub-contracts/{sub_contract_id}下請業者、金額、留保金、作業範囲、項目を含む下請契約1件を取得します。
get_submittalreadGET /submittals/{submittal_id}図面シート、仕様書のセクション、ステータス、日付、項目を含む提出物1件を取得します。
get_time_cardreadGET /time-cards/{timecard_id}従業員ごとの時間と原価コードを含むタイムカードまたは作業員シート1件を取得します。
get_work_orderreadGET /work-orders/{work_order_id}プロジェクト、顧客、ステータス、日付、場所、メモ、項目を含む作業指示書1件を取得します。
list_billsreadGET /bills仕入先、プロジェクト、日付、合計金額、未払残高、ステータスを含む仕入先の請求書を一覧表示します。
list_contactsreadGET /contactsディレクトリの顧客、従業員、請負業者、仕入先、その他の連絡先を一覧表示します。
list_expensesreadGET /expenses金額、日付、仕入先、プロジェクト、原価種別、支払者を含む経費を一覧表示します。
list_inspectionsreadGET /inspectionsプロジェクト、種類、日付、結果、機関、許可番号を含む検査を一覧表示します。
list_leadsreadGET /leads連絡先情報、ステージ、品質スコアを含む営業リードを一覧表示します。
list_opportunitiesreadGET /opportunities顧客、ステージ、スコア、予算、販売予定日を含む営業案件を一覧表示します。
list_project_crew_hoursreadGET /projects/{project_id}/crew-hours1つのプロジェクトで記録された時間と人件費を、従業員、日、原価コードごとに一覧表示します。
list_project_filesreadGET /projects/{project_id}/files名前、サイズ、ダウンロードリンクを含む、プロジェクトの写真とドキュメントを一覧表示します。
list_project_notesreadGET /projects/{project_id}/notes作成者と時刻を含む、プロジェクトの「Notes」タブのメモを一覧表示します。
list_purchase_ordersreadGET /purchase-orders仕入先、プロジェクト、注文日、合計金額、ステータスを含む購入注文書を一覧表示します。
list_rfisreadGET /rfis質問、プロジェクト、日付、回答、ステータスを含む情報提供依頼を一覧表示します。
list_service_ticketsreadGET /service-tickets顧客、ステータス、サービス提供日時、技術者を含むサービスチケットを一覧表示します。
list_sub_contractsreadGET /sub-contracts下請業者、プロジェクト、金額、請求済み額、支払済み額、残高、ステータスを含む下請契約を一覧表示します。
list_submittalsreadGET /submittalsプロジェクト、ステータス、受領日、期限日、承認者を含む提出物を一覧表示します。
list_time_cardsreadGET /time-cards従業員または作業員、プロジェクト、出勤・退勤時刻、労働時間を含むタイムカードを新しい順に一覧表示します。
list_work_ordersreadGET /work-ordersプロジェクト、顧客、ステータス、日付、合計金額、担当者を含む作業指示書を一覧表示します。
record_inspection_resultwritePUT /inspections/{inspection_id}/result任意でメモを添えて、検査を合格、不合格、または再検査に設定します。
update_service_ticket_statuswritePUT /service-tickets/{service_ticket_id}/statusサービスチケットのステータスを「scheduled」「en route」「checked in」「completed」「closed」などに変更します。
update_work_order_statuswritePUT /work-orders/{work_order_id}/status作業指示書のステータスを「open」「estimating」「submitted」「approved」「canceled」「completed」に変更します。
意図的に実装していない機能:Contractor Foreman のサインイン、パスワード、メールアドレス、2 要素認証の設定、会社設定、サブスクリプションと請求、およびデモデータの切り替えです。すべてのリクエストはガードを通過し、これらの Contractor Foreman のパスへのアクセスは拒否されます。

設定

変数デフォルト説明
CONTRACTOR_FOREMAN_MCP_HOME~/.config/contractor-foreman-api-mcpsession.json の保存フォルダーです。
CONTRACTOR_FOREMAN_AUTH_TOKENcontractor-foreman-mcp connect の代わりに使用する、_session__240322=...; auth_data_session=... 形式のセッション Cookie です。
CONTRACTOR_FOREMAN_PROXYContractor Foreman へのすべてのリクエストに使用するプロキシです。例:http://user:pass@host:port。
CONTRACTOR_FOREMAN_MCP_READ_ONLY1 にすると、Contractor Foreman を変更するすべてのツールが非表示になり、実行も拒否されます(--read-only と同じです)。
CONTRACTOR_FOREMAN_MCP_TOKENserve で必要なベアラートークンです。127.0.0.1 以外で待ち受ける場合に必要です。
CONTRACTOR_FOREMAN_MCP_HOST, CONTRACTOR_FOREMAN_MCP_PORT127.0.0.1, 8787serve のアドレスです。

セキュリティと Contractor Foreman アカウント

  • パスワードがこのコードに渡ることはありません。 読み取られるのは Cookie のみで、対象も contractorforeman.net の Cookie だけです。
  • セッションファイルはご自身で管理します。 session.json はモード 0600 で作成されます。このファイルを持つ人は誰でも Contractor Foreman でご本人として操作できるため、git や共有フォルダーには置かないでください。
  • デフォルトではローカルのみです。 serve は 127.0.0.1 にバインドし、CONTRACTOR_FOREMAN_MCP_TOKEN が設定されていない場合、別のアドレスでの待ち受けを拒否します。
  • アクセス先は contractorforeman.net のみです。 他のホストへのリクエストやリダイレクトは拒否されます。
  • 読み取り専用モード。 --read-only または CONTRACTOR_FOREMAN_MCP_READ_ONLY=1 を指定すると、48 個の読み取りツールのみが公開されます。
  • 一部の操作はクライアントに影響します。 send_estimate、send_change_order、send_invoice は、ご自身のアカウントから PDF をメール送信します。また、新しい ToDo は担当者のアプリに表示されます。MCP クライアントはこれらの操作を実行する前に確認を求めますが、スクリプトは確認しません。まずテストプロジェクトでお試しください。
  • 削除すると元に戻せません。 delete_estimate、delete_change_order、delete_invoice は、アプリで削除した場合と同様にレコードを削除します。

エラー

REST API は {"error": "<code>", "message": "..."} を返します。MCP サーバーは同じコードとメッセージをツールエラーとして返します。

ステータスコード対処方法
401auth_required, auth_expiredセッションがないか、Contractor Foreman からサインアウトされています。Chrome でサインインしてから、contractor-foreman-mcp connect を実行してください。
403app_permission_deniedお使いの Contractor Foreman のロールでは、そのモジュールを開けません。
403scope_deniedサーバーが読み取り専用で実行されているか、アカウント設定または請求を変更するリクエストです。
403target_blockedContractor Foreman がリクエストを拒否したか、ボット確認画面を表示しました。Chrome でアプリを一度開いてから、再試行してください。
409captcha_requiredContractor Foreman が CAPTCHA を求めています。Chrome で解決してください。
422invalid_input引数が不足しているか、正しくありません。メッセージに該当する引数が示されます。
429rate_limitedContractor Foreman によってアカウントへのリクエストが制限されています。数分待ってください。
502target_errorContractor Foreman がエラーを返しました(メッセージにその内容が引用されています)、またはアプリが変更されました。最新のツールを取得するには git pull を実行するか、問題を報告してください。

セルフホストまたはホスト版

このリポジトリCotlet、ホスト版
ツール同じ89個同じ89個
稼働場所コンピューター上(電源が入っている間)クラウド上、24時間365日
Contractor Foreman のセッションお使いの Chrome、Cookie はローカルファイルに保存EU 内のお客様専用 Cloud Browser、プロファイルは AES-256-GCM で暗号化
Contractor Foreman がアプリを変更した場合修正後に一度 git pullこちらで修正し、すべてのツールを毎日テスト
承認MCP クライアントが呼び出しごとに確認クライアントへのメール送信はお客様の承認待ち。ツールごとに切り替え可能
対応環境お使いのマシン上の MCP クライアント、ローカルスクリプトClaude.ai および ChatGPT のコネクター、n8n、Make、Zapier、あらゆる HTTP クライアント
利用対象非商用利用のお客様チーム、企業、代理店
価格無料クレジットカード不要の無料7日間トライアル(2,000クレジット付き)。その後は5,000クレジットで29ドルからの買い切りパック

ホスト版では、成功した呼び出しは20~30クレジット(ほとんどのツールでは25クレジット)を消費し、失敗した呼び出しは無料です。また、Cloud Browser でエージェント向けのアプリを有効にしている間は、1日あたり50クレジットを消費します。料金の詳細。

FAQ

Contractor Foreman には公式 API がありますか? 一般公開されているものはありません。REST API、開発者向けドキュメント、API キーはありません(2026 年 10 月 11 日に確認)。プログラムからアクセスする方法は、リード、顧客、ファイルのアップロードに関する 7 つのトリガーと、「Create Lead」「Create Customer」の 2 つのアクションを備えた Zapier アプリのみです。見積もり、変更指示書、日報、スケジュール、請求書、工事原価を読み取ったり、書き込んだりすることはできません。詳細:cotlet.dev/integrations/contractor-foreman-api-mcp-server。

Claude、ChatGPT、Cursor 向けの Contractor Foreman MCP サーバーはありますか? はい。この MCP サーバーはお使いのマシン上で動作します。Claude Code、Claude Desktop、Cursor、Codex では contractor-foreman-mcp mcp を実行してください。ChatGPT と Claude.ai のコネクタには公開 HTTPS URL が必要です。ホスト型 Contractor Foreman MCP サーバーを利用すると、その URL を取得できます。

これはスクレイパーですか? スクレイパーを使う目的としてよく挙げられる機能(プロジェクト、請求書、タイムカードの CSV へのエクスポート)を備えていますが、HTML は解析しません。お使いのアカウントで、Contractor Foreman のウェブアプリと同じ JSON エンドポイントを呼び出します。

プロジェクト、請求書、作業員の労働時間を CSV にエクスポートできますか? はい。python examples/export_projects.py --out projects.csv、python examples/overdue_invoices.py --out overdue.csv、または python examples/crew_hours.py --days 30 --out hours.csv を実行してください。ページは自動的にたどられます。

エージェントに日報を書かせることはできますか? はい。create_daily_log には、メモ、作業員(人数を含む)、納品情報、天候に関する備考を指定できます。天候情報は Contractor Foreman が日付と住所に基づいて記録します。examples/add_daily_log.py は、まずその日に日報がまだ作成されていないことを確認します。

なぜ Chrome が必要なのですか? パスワードを使わずに Contractor Foreman のセッションを読み取るためです。Chrome はサインインごとに一度だけ使用し、呼び出しごとには使用しません。

Contractor Foreman からサインアウトされた場合はどうなりますか? 呼び出しは auth_expired エラーで失敗します。Chrome のリモートデバッグが有効になっている場合、次の呼び出しでサーバーが新しい Cookie を読み取ります(Chrome から確認を求められたら「許可」をクリックしてください)。そうでない場合は、再度 contractor-foreman-mcp connect を実行してください。

VPS や Docker で実行できますか? 技術的には可能です。CONTRACTOR_FOREMAN_AUTH_TOKEN を使用してください。その場合、Contractor Foreman にはデータセンターの IP アドレスからのセッションとして認識されるため、ご本人の利用とは見なされにくくなります。常時稼働させる場合は、ホスト版を使うと、固定 IP のご自身専用 Cloud Browser にセッションを保持できます。

職場や顧客のために利用できますか? いいえ。ライセンスで認められているのは非商用利用のみで、請負業を営むご自身の事業で実行することも業務利用に該当します。チーム、企業、顧客の業務で使用する場合は、Cotlet を利用するか、[email protected] にお問い合わせください。

オープンソースですか? ソースコードは公開されていますが、ライセンスはオープンソースライセンスではありません。非商用利用のみで、業務利用は禁止されています。

ツールが動かなくなった場合や、別のツールが必要な場合はどうすればよいですか? ツール名とエラーメッセージを添えて、イシューを作成してください。

ライセンス

PolyForm Noncommercial License 1.0.0。要約:

  • 許可されていること: 非商用利用。ご自身の Contractor Foreman アカウントを使った個人的な目的での利用、または慈善団体、学校、公的研究機関、政府機関による利用。コードの変更、および同じライセンスでの共有。
  • 許可されていないこと: ご自身の事業を含むあらゆる商用利用、顧客の業務での利用、販売や提供、および本ソフトウェアを基盤とするサービスの販売や提供。

Cotlet

Cotlet(@cotletdev)がメンテナンスしています。Contractor Foreman は、その所有者の商標です。このプロジェクトは非公式であり、Contractor Foreman との提携関係はなく、同社による推奨や後援も受けていません。

コメント

MCP は初めてですか?

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

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