mcpField
Z
zopaf

zopaf

リモート
github.com/rjandinoビジネス・マーケティング030 週間前に更新
リポジトリ

zopaf について

zopafは、AIエージェント向けのMCP交渉エンジンで、交渉計算にLLMではなくMILP最適化を使います。選好とBATNAをモデル化し、パレートフロンティアに基づく対案を生成し、相手の反応から優先事項を推定します。

主な機能

  1. 01交渉項目と選好のモデル化
  2. 02BATNAと交渉力の記録
  3. 03等効用の対案生成
  4. 04パレートフロンティアによる取引分析
  5. 05相手の反応から優先事項を推定

活用シーン

  1. 01採用条件の交渉案の構成
  2. 02VCタームシートの条件比較
  3. 03ベンダー契約の対案準備
  4. 04和解や提携案の評価

MCP 対応

セッション設定、項目や選好の記録、対案生成、取引分析、応答処理、状態取得などの交渉ツールをMCPクライアントに提供します。

設定

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

エンドポイントhttps://zopaf-mcp-production.up.railway.app/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

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

ツール

詳細

Zopaf 交渉エンジン -- MCP サーバー

あらゆる AI エージェントが呼び出せる、MCP ツールとして公開された交渉数学エンジンです。Zopaf は純粋な MILP 最適化によって、パレートフロンティアを計算し、等効用の対案を生成し、相手の反応から相手の優先事項を推測します。LLM トークンの消費はゼロです。会話は呼び出し元のエージェントが担当し、数学的な処理は Zopaf が担当します。

クイックスタート

Claude Desktop

Claude Desktop の設定(claude_desktop_config.json)に追加します:

{
  "mcpServers": {
    "zopaf": {
      "type": "streamable-http",
      "url": "https://zopaf-mcp-production.up.railway.app/mcp"
    }
  }
}
Claude Code
claude mcp add zopaf --transport streamable-http https://zopaf-mcp-production.up.railway.app/mcp
汎用 MCP クライアント

Streamable HTTP エンドポイントに接続します:

URL: https://zopaf-mcp-production.up.railway.app/mcp
Transport: Streamable HTTP

ツールリファレンス

ツール説明
create_session新しい交渉セッションを作成します。他のすべてのツールで使用する session_id を返します。
add_issueユーザーにとって望ましくない順から望ましい順に選択肢を並べた、交渉可能な論点/条件を追加します。
set_issue_range数値の論点に許容範囲を設定し、0~100 のスコアリングを可能にします。
record_preferenceユーザーが一部の論点を他の論点より優先することを記録します。重みモデルを更新します。
set_batna交渉が決裂した場合のユーザーの代替案を記録します。交渉力を判断します。
generate_counteroffers同時に提示する等効用の対案を3件生成します。
process_counterpart_response相手の反応を処理し、相手の優先事項を推測して、第2ラウンドの提案を生成します。
analyze_deal特定の取引をパレートフロンティアに照らして評価します。獲得した価値と推奨される交換条件を示します。
get_negotiation_state現在のモデル状態(論点、重み、BATNA、フロンティアの規模、推奨される次のステップ)を取得します。

仕組み

  1. セッションを作成する -- create_session で新しい交渉モデルを初期化します。

  2. 論点を追加する -- add_issue で交渉対象の条件を定義します。各論点には、ユーザーにとって望ましくない順から望ましい順に選択肢を並べます(例:給与:['$150K', '$160K', '$170K', '$180K'])。

  3. 範囲を設定する -- 数値の論点については、set_issue_range を呼び出し、値を0~100のスコアリング尺度に対応付けます。

  4. 選好を記録する -- ユーザーが何を重視しているかが分かったら、record_preference を呼び出します。呼び出すたびに内部の重みモデルが更新されます。

  5. BATNA を設定する -- set_batna を使って代替案を記録します。その数と質によって、交渉力の強さとアンカリング戦略が決まります。

  6. 対案を3件生成する -- generate_counteroffers を呼び出し、ユーザーにとって同等に望ましいものの、構成が異なる3つのパッケージを生成します。必ず3件すべてを同時に提示してください。1件を最初に提示してから、別の案に切り替えることは避けてください。

  7. 相手の反応を処理する -- 相手がどのパッケージを好み、どの条件に異議を唱えたかを指定して、process_counterpart_response を呼び出します。エンジンは相手の隠れた優先事項を推測します。

  8. 第2ラウンドの提案を取得する -- 交渉力に応じた価値配分で、効率的フロンティア上の洗練された提案を返します。

例:求人オファーの交渉

create_session
-> {"session_id": "a1b2c3d4"}

add_issue(session_id="a1b2c3d4", issue_name="Salary", options=["$150K", "$160K", "$170K", "$180K"])
add_issue(session_id="a1b2c3d4", issue_name="Equity", options=["0.1%", "0.25%", "0.5%", "0.75%"])
add_issue(session_id="a1b2c3d4", issue_name="Signing Bonus", options=["$0", "$10K", "$20K", "$30K"])
add_issue(session_id="a1b2c3d4", issue_name="Remote Work", options=["On-site", "Hybrid", "Fully Remote"])

set_issue_range(issue_name="Salary", worst_acceptable=150000, best_hoped=180000,
    option_values={"$150K": 150000, "$160K": 160000, "$170K": 170000, "$180K": 180000})
-> {"scores": {"$150K": 0.0, "$160K": 33.3, "$170K": 66.7, "$180K": 100.0}}

record_preference(preferred_issues=["Salary", "Equity"], over_issues=["Signing Bonus", "Remote Work"])
-> {"learned_weights": {"Salary": 0.345, "Equity": 0.345, "Signing Bonus": 0.155, "Remote Work": 0.155}}

set_batna(alternatives=["Competing offer from Company B at $165K", "Stay in current role"])
-> {"leverage_strength": "strong"}

generate_counteroffers(target_satisfaction="ambitious")
-> {
  "counteroffers": [
    {"label": "A", "terms": {"Salary": "$180K", "Equity": "0.25%", "Signing Bonus": "$10K", "Remote Work": "On-site"}},
    {"label": "B", "terms": {"Salary": "$170K", "Equity": "0.5%", "Signing Bonus": "$0", "Remote Work": "Hybrid"}},
    {"label": "C", "terms": {"Salary": "$160K", "Equity": "0.75%", "Signing Bonus": "$20K", "Remote Work": "On-site"}}
  ]
}

process_counterpart_response(preferred_package="B", pushback_issues=["Equity"])
-> {
  "counterpart_priorities_inferred": {"Equity": 0.571, "Salary": 0.143, ...},
  "round_2_offer": {"Salary": "$180K", "Equity": "0.25%", "Signing Bonus": "$20K", "Remote Work": "Hybrid"},
  "value_split": "User gets 75% of surplus"
}

エンジンは、相手が株式報酬を最も重視していると推測しました(重みの57%)。第2ラウンドの提案では、ユーザーにとって譲歩のコストが低い株式報酬で譲歩し、給与と契約一時金で価値を獲得します。双方にとって条件が改善されます。ユーザーのBATNAが強いため、ユーザーは余剰価値の75%を獲得します。

ユースケース

  • 求人オファー -- 給与、株式報酬、ボーナス、役職、リモートワーク、入社日、有給休暇
  • VC のタームシート -- バリュエーション、取締役会の席、清算優先権、希薄化防止条項、プロラタ権
  • 不動産 -- 価格、クロージング日、特約、修繕、付帯品、リースバック期間
  • ベンダー契約 -- 価格、SLA の保証、支払条件、独占権、更新条項
  • 給与交渉 -- 基本給、ボーナスの仕組み、評価の時期、職務範囲
  • 事業提携 -- 収益の分配、知的財産の所有権、意思決定権、解消条項、事業地域
  • 法的和解 -- 金銭条件、秘密保持条件、責任の承認、スケジュール

なぜトークンがゼロなのか?

Zopafは数学エンジンであり、言語モデルではありません。MILP最適化や組み合わせスコアリングを実行します。これらは計算コストこそ低いものの、LLMがコンテキスト内で試みるには面倒な処理です。

エージェントのLLMはユーザーとの会話を担い、適切な質問をして、戦略を説明します。Zopafは最適化を担い、パレートフロンティアの計算、等効用パッケージの生成、明らかになった選択からの選好ウェイトの算出、効率的フロンティア上でのオファーの位置決めを行います。

頭脳はあなたが担い、計算機はZopafが担います。

コメント

MCP は初めてですか?

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

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