Mpc Mcp Server について
Mpc Mcp ServerはMetastable Propositional Calculusを多段階推論に適用し、命題の相、矛盾、維持コストを分析します。複雑な主張が共存できるかを調べる用途に向け、5つのモデルプロバイダーとブラウザーUIでテキストや推論系列を分析できます。
主な機能
- 01テキスト仮説と相の分析
- 02推論ステップ間の認識ドリフト追跡
- 03主張へのc・s・k・r状態の割り当て
- 04予算見積もりと自由エネルギーの計算
- 055つのモデルプロバイダーに対応
- 06モデルカタログとブラウザーUI
活用シーン
- 01主張群の構造的な矛盾を確認
- 02多段階推論のエンティティとドリフトを追跡
- 03個々の主張の相分類を確認
- 04プロバイダーを設定して利用可能モデルを閲覧
MCP 対応
stdio経由で、テキストのコンパイル、多段階系列分析、主張の読み取り、予算見積もり、モデル一覧のツールをクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MPC — 準安定命題論理計算
準安定命題論理計算(MPC)エンジン。 複数ステップの推論において、論理的主張の熱力学的・物理的な実現可能性を分析します。標準的なブール論理とは異なり、前提を時間にわたって維持するためのエネルギーコストを計算することで、認識論的ドリフトや構造的な矛盾(k-state)を検出します。複雑な主張の列を矛盾に陥ることなく論理的に同時に維持できるかどうかを、厳密に検証するために使用してください。
真理値:c(確定) · s(保留) · k(矛盾) · r(リセット)
理論と背景
このツールを効果的に使用するには、MPC の理論的基盤を理解しておくと役立ちます。このフレームワークでは、命題を瞬時かつコストのかからないブール状態ではなく、潜在的なエネルギー地形に存在するシステムとしてモデル化します。エンジンを支える物理学、数学、論理についての詳しい説明は、基礎となるプロジェクト資料をご覧ください。
v0.3 の新機能
| 機能 | 詳細 |
|---|---|
| FastMCP | MCP サーバーを FastMCP に置き換え、ツール定義を簡潔にし、クライアントとの互換性を向上 |
| 5 プロバイダーのルーティング | Anthropic · Google · OpenAI · Kimi(Moonshot AI) · Ollama をすべて第一級でサポート |
| 動的なモデル一覧表示 | 各プロバイダーのモデル一覧エンドポイントにリアルタイムで問い合わせ。キャッシュの TTL は 5 分 |
| 環境変数の競合ゼロ | 各プロバイダーに専用の変数を用意:ANTHROPIC_API_KEY、GOOGLE_API_KEY、OPENAI_API_KEY、KIMI_API_KEY、OLLAMA_HOST |
| UI のプロバイダータブ | キー設定を横並びで表示、プロバイダーごとのステータスとモデル数を表示 |
list_available_models ツール | モデルを動的に検出する新しい MCP ツール |
| 再試行ロジック | 一時的なエラーを指数バックオフで最大 3 回再試行 |
/status + /env エンドポイント | キーの値を公開せずに、プロバイダーの状態と環境変数を監査 |
プロバイダー
| プロバイダー | SDK | キーの環境変数 | 備考 |
|---|---|---|---|
| Anthropic | anthropic | ANTHROPIC_API_KEY | Claude claude-opus-4-6、claude-sonnet-4-6、Haiku |
google-generativeai | GOOGLE_API_KEY | Gemini 2.5 Pro、2.0 Flash、1.5 | |
| OpenAI | openai | OPENAI_API_KEY | GPT-4o、o1、o3-mini など |
| Kimi | openai(OpenAI 互換) | KIMI_API_KEY | Moonshot AI · moonshot.cn |
| Ollama | stdlib urllib | OLLAMA_HOST | ローカルモデル。キーは不要 |
API キーは次の順に解決されます:明示的な引数 → 環境変数 → .env ファイル。各プロバイダーが他のプロバイダーのキー変数を読み取ることはありません。
インストール
# Core — all five providers included
pip install -e .
# Add QuTiP for exact partition function (Ising Hamiltonian)
pip install qutip
# Add NetKet for spin-glass ground-state solver (requires JAX)
pip install "jax[cpu]" netket
# Full stack
pip install -e ".[full]"
Python ≥ 3.11 が必要です。
クイックスタート
API キーを設定する
# Any combination — only set what you have
export ANTHROPIC_API_KEY=sk-ant-…
export GOOGLE_API_KEY=AIza…
export OPENAI_API_KEY=sk-…
export KIMI_API_KEY=sk-… # Moonshot AI key
export OLLAMA_HOST=http://localhost:11434 # default; omit if standard
または、ブラウザー UI の Providers タブでキーを入力し、.env に保存できます。
サーバーを起動する
mpc-server
次を起動します:
- stdio 上の MCP サーバー(Claude Desktop または任意の MCP クライアントに登録)
http://localhost:7771上の ブラウザー UI
Claude Desktop の設定
{
"mcpServers": {
"mpc": {
"command": "mpc-server",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-…",
"GOOGLE_API_KEY": "AIza…",
"OPENAI_API_KEY": "sk-…",
"KIMI_API_KEY": "sk-…"
}
}
}
}
MCP ツール
| ツール | 説明 | API 呼び出し? |
|---|---|---|
compile_text | MPC の完全な分析:仮説、フェーズ、フラストレーション行列、自由エネルギー(QuTiP)、スピングラスの基底状態、定理 6.1 の上界 | ✓ |
compile_sequence | エンティティ台帳を用いた複数ステップのトレース — 認識論的ドリフトと η_i の蓄積を追跡します | ✓ |
read_claims | 主張ごとのフェーズ割り当て(c/s/k/r)と根拠 | ✓ |
budget_estimate | 定理 6.1 N_max = O(√(2E*/αε_min d_avg)) — 単純な算術計算 | ✗ |
list_available_models | 5 つすべてのプロバイダーにわたるリアルタイムのモデルカタログ | ✗(キャッシュ済み) |
すべてのツールで provider_api_key をオプションのパラメーターとして指定できます。省略すると、環境変数から自動的に読み取られます。
Python API
import mpc_core
# Full analysis — Anthropic (default)
result = mpc_core.compile("Your text here…", api_key="sk-ant-…")
# Google Gemini
result = mpc_core.compile("…", model="gemini-2.0-flash", api_key="AIza…")
# OpenAI
result = mpc_core.compile("…", model="gpt-4o", api_key="sk-…")
# Kimi (Moonshot AI)
result = mpc_core.compile("…", model="moonshot-v1-32k", api_key="sk-…")
# Local Ollama (no key needed)
result = mpc_core.compile("…", model="llama3:8b")
print(result.energy_model.free_energy) # F = -kT ln Z
print(result.ground_state.energy) # Ising ground-state energy
print(result.ground_state.stable_ids) # most compatible hypothesis subset
print(result.analytical_summary)
# Per-claim phase assignment
phases = mpc_core.read_claims(
["All ravens are black.", "Some ravens are albino."],
api_key="sk-ant-…",
model="claude-sonnet-4-6",
)
# Budget theorem (no API call)
est = mpc_core.budget_estimate(N=8, d_avg=2.5, epsilon_min=1.2)
print(est.interpretation)
# Multi-step trace with Entity Ledger
seq = mpc_core.compile_sequence(
["Step 1 text…", "Step 2 text…", "Step 3 text…"],
api_key="sk-ant-…",
)
# Dynamic model listing
from mpc_core.providers import list_models, ProviderID
models = list_models(ProviderID.ANTHROPIC, "sk-ant-…")
# Free-energy surface (no API call)
from mpc_core.thermodynamics import free_energy_surface
surface = free_energy_surface(my_epsilon_matrix, T_range=(0.2,5), E_star_range=(2,40))
# surface["F"][T_index][E_star_index] → F value
ブラウザー UI — タブ
| タブ | 説明 |
|---|---|
| テキストを分析 | 仮説カード、熱力学ストリップ(Z、F、S)、基底状態ボックスを含む MPC の完全な分析 |
| 主張を読み取る | 1 行に 1 つの主張を入力 → フェーズを即座に割り当て |
| 3D 自由エネルギー | N_max 定理 6.1 の等高線を含む、インタラクティブな Plotly F(T, E*) 曲面 |
| エネルギー地形 | 予算/温度スライダー付きのアニメーション表示される 2D キャンバス |
| 互換性行列 | ペアごとの ε_ij フラストレーション表 |
| 予算計算ツール | 定理 6.1 N_max — API キーは不要 |
| 履歴ヒートマップ | 推論トレース全体にわたる η_i の蓄積(補遺 V) |
| プロバイダー | API キーの設定、プロバイダーごとのステータスとモデル数 |
HTTP API(localhost:7771)
| メソッド | パス | 説明 |
|---|---|---|
GET | / | ブラウザー UI(index.html) |
GET | /models | 環境変数のキーを使用したモデルカタログ |
POST | /models | 呼び出し元が指定したキーでカタログを更新 |
GET | /env | 設定されている環境変数(値は非表示) |
POST | /status | プロバイダー接続のヘルスチェック |
POST | /setenv | キーを .env に保存 |
POST | / | MPC アクション(compile、compile_sequence、read_claims、budget_estimate、free_energy_surface、ground_state) |
テスト
# Arithmetic tests (no API key required)
pytest tests/ -v
# Live API tests — any provider combination
ANTHROPIC_API_KEY=sk-ant-… pytest tests/ -v
GOOGLE_API_KEY=AIza… pytest tests/ -v
OPENAI_API_KEY=sk-… pytest tests/ -v
KIMI_API_KEY=sk-… pytest tests/ -v
アーキテクチャ
mpc_core/
providers.py NEW v0.3 — ProviderID enum, per-provider key resolution,
dynamic model listing with TTL cache, all_models_catalogue()
router.py REWRITTEN — five-backend dispatch, retry logic, auth-error fast-fail
compiler.py compile() · read_claims() · budget_estimate() · compile_sequence()
entity_ledger.py Cross-step entity registry (four-layer pipeline)
thermodynamics.py QuTiP partition function · NetKet spin-glass · free_energy_surface()
json_repair.py Best-effort repair of truncated LLM JSON
models.py MPCResult dataclass hierarchy
mpc_server/
server.py REWRITTEN — FastMCP application + HTTP UI proxy (port 7771)
New endpoints: GET /env, POST /status, POST /models
static/
index.html REWRITTEN — provider selector tabs, per-provider key inputs,
dynamic model dropdowns, /status integration
ロードマップ
- v0.1 ✓ コアコンパイラー、MCP サーバー、リファレンス UI
- v0.2 ✓ マルチバックエンドルーティング · QuTiP · NetKet · 3D Plotly · 履歴ヒートマップ
- v0.3 ✓ FastMCP · 5 つのプロバイダー · 動的なモデル一覧表示 · プロバイダー UI · 再試行ロジック
- v0.4 定理 6.1 のスペクトルラプラシアン拡張、コミュニティを考慮した N_max 上界
- v0.5 ストリーミング分析;仮説ごと・ステップごとの差分 η_i 表示
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。