MCP Connect Client CLI について
OmniCoreAgent は Python 向けのエージェントランタイムで、ループ、ツール、メモリ、ワークスペース、サブエージェントに加え、ポリシー、サンドボックス、再開可能な実行、実行記録を備えます。本番アプリケーションでエージェントの動作を統制したい開発者に向けたものです。
主な機能
- 01各操作を許可・確認・拒否で判定するポリシー
- 02コマンド実行の境界となるサンドボックス
- 03クラッシュ後に作業を繰り返さず再開する実行
- 04金額・トークン・呼び出し回数の予算制御
- 05実行ごとに全ステップを読めるトレース
- 06OmniServe による REST と SSE の実行API
活用シーン
- 01人による承認が必要な返金・注文処理エージェントの構築
- 02CI でコマンドラインから失敗したテストを修正するエージェントの実行
- 03認証とメトリクス付きの HTTP サービスとしてのバックグラウンドエージェント配備
MCP 対応
MCP サーバー(stdio、SSE、streamable HTTP、OAuth)を単一のツールカタログに統合し、同じポリシーで管理します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
エージェントに本当の仕事を任せましょう。制御は手放さずに。
実行前にすべてのアクションをチェックします。クラッシュしても、何も黙って再実行することなく、すべての実行が維持されます。すべてのステップを記録します。
ドキュメント · クイックスタート · クックブック · 検証 · 比較 · コーディングエージェント向け · 既知の問題 · AI に質問
モデルはエージェントではありません。アプリケーションでモデルを使えるようにするのは、その周りのランタイムです。ループ、ツール、メモリ、作業対象のファイル、そしてエージェントが実際の作業をできるようになったら、何をしてよいかを定めるポリシー、コードが実行されるサンドボックス、クラッシュ後も保持される記録、支出を抑える予算、そして後から人が確認できる証跡が必要です。
OmniCoreAgent は、Python 向けの エージェントランタイム です。モデルを取り巻く ハーネス、ループ、ツール、コンテキスト、ワークスペース、サブエージェントを備え、さらにエージェントの実運用に必要なものも追加します。すべてのアクションに適用されるポリシー、コマンドの境界となるサンドボックス、クラッシュ後も維持される実行、予算、そしてすべてのステップの記録です。Python、コマンドライン、HTTP サーバーから利用でき、最初のスクリプトからガバナンスを備えたバックグラウンドワーカー、さらにベンチマークまで、1 つのエージェントオブジェクトで対応します。
| レイヤー | 内容 | 得られるもの |
|---|---|---|
| ハーネス | モデルを取り巻くループ | ツール(独自のものと MCP)、コンテキストとメモリ、ワークスペース、コードモード、スキル、サブエージェント、ワーカープロファイル |
| 制御 | すべてのアクションの前に決定 | ポリシー(許可、人による確認、または拒否)、承認、予算、コマンドの境界となるサンドボックス |
| 永続性 | 各実行が保持する記録 | 一時停止と再開、作業をやり直さずにクラッシュから復旧、停止したプロセスからの引き継ぎ |
| 記録 | 各実行の証跡 | 実行ごとに 1 つのトレースを最初から最後まで確認可能。デフォルトで非公開、任意の場所へエクスポート可能 |
仕組みの全体像では、4 つすべてを通した 1 回の実行を紹介します。
インストール
pip install omnicoreagent # Python 3.12–3.14; check with python --version
export LLM_API_KEY=your_api_key # the key for the provider in model_config
Python 3.10 または 3.11 では、インストールは停止してその旨を表示します。
クイックスタート
import asyncio
from omnicoreagent import OmniCoreAgent, ToolRegistry
tools = ToolRegistry()
@tools.register_tool("lookup_order")
def lookup_order(order_id: str) -> dict:
"""Look an order up in the application's own store."""
return {"order_id": order_id, "status": "shipped", "carrier": "DHL"}
agent = OmniCoreAgent(
name="support",
system_instruction="You answer questions about orders, using the tools. Answer in plain text.",
model_config={"provider": "openai", "model": "gpt-5.6-terra"},
local_tools=tools,
)
async def main():
result = await agent.run("Where is order 1042?", session_id="customer-7")
print(result["response"])
# Every run is evidence: each step, what the model asked for,
# and what it received back.
trajectory = await agent.get_trajectory(result["trace_id"])
for step in trajectory["steps"]:
for call in step["tool_calls"]:
print(step["step"], call["tool_name"], call["arguments"], "->", call["observation"]["content"])
# What the run turned out to be worth, whenever that is known ...
await agent.record_outcome(result["run_id"], source="support-lead", reward=1.0, label="resolved")
# ... and the run as one record for an evaluator or a trainer.
[record] = await agent.training_records(run_id=result["run_id"])
print(record["outcomes"])
await agent.cleanup()
asyncio.run(main())
出力内容:
Order 1042 has shipped via DHL.
1 lookup_order {'order_id': '1042'} -> {"tool_name": "lookup_order", "args": {"order_id": "1042"}, "status": "success", "data": {"order_id": "1042", "status": "shipped", "carrier": "DHL"}, "message": null}
[{'outcome_id': 'outcome_57a6d81724c44f51b08c540fe83f4694', 'reward': 1.0, 'label': 'resolved', 'source': 'support-lead', 'detail': {}, 'recorded_at': '2026-09-25T18:00:36.136396+00:00'}]
これでループ全体がわかります。モデルはツールを呼び出し(独立した呼び出しは1つのバッチで実行されます)、結果は構造化された観察結果として返され、セッションには内容が記憶され、ファイルはワークスペースに保存され、インジェクションに対するガードレールが監視し、実行が記録されます。これらすべてはデフォルトポリシーのもとで行われます。このポリシーではツールの使用が許可され、生のシークレット、ホストのシェルコマンド、制限のないネットワークは拒否されます。以下に示す機能は、必要に応じて追加できます。
1つの model_config を通じて、OpenAI、Anthropic、Gemini、Groq、DeepSeek、Mistral、Azure、OpenRouter、Ollama に対応しています(モデル)。
すべての実行が証拠になります
エージェントの最終回答だけでは、経緯の大部分がわかりません。ランタイムは、すべての実行について、残りの内容を最初から最後まで読み取れる形で保持します。
- 各ステップでモデルが見た内容 — メッセージと提示されたツール — および受け取った内容。これは常にツールが返した内容そのものとは限りません。大きな結果はファイルに保存され、モデルにはプレビューが渡されます。トラジェクトリーにはその両方が示されます。
- 後から届く成果。 プルリクエストのマージ、レビュー、CI の成功などは、
record_outcomeによって作業を行った実行に関連付けられます。 - トレーニング記録。
training_recordsは、完了した各実行を1つの記録として返します。モデルに送られた内容、モデルが生成した内容、ツールの応答、適用されたポリシー、合計値、成果が含まれ、評価やトレーニングに利用できます。 - 独自のストアと、利用者のストア。 ランタイムは証拠を保持し、OTLP、LangSmith、Opik、JSONL にエクスポートします。ランタイムが保持する認証情報がモデルに渡されたり、記録に書き込まれたりすることはありません。
スクリプトから CI、ベンチマークまで
同じエージェントファイルをヘッドレスで実行できます。1つの指示、終端状態、終了コード、ディスク上の結果とトラジェクトリーが得られるため、CI やスクリプトで利用できます。
omnicoreagent run --agent agent.py \
--instruction "Fix the failing test in tests/test_orders.py" \
--approval-mode deny --timeout 900 --output-dir ./out
また、Harbor 上でも利用できます。Harbor は Terminal-Bench が動作するフレームワークです。エージェントは各タスクのコンテナにインストールされ、すべての試行について、報酬、コスト、トークン数、Harbor 独自の形式のトラジェクトリーが、ほかのエージェントと並んで報告されます。
pip install "omnicoreagent[harbor]"
omnicoreagent harbor doctor -m gpt-5.6-terra
omnicoreagent harbor run -d [email protected] -m gpt-5.6-terra -n 4
omnicoreagent harbor results jobs
本番環境に必要な機能と、その場所
| 必要なもの | ランタイムの動作 | 参照先 |
|---|---|---|
| ツール | Python 関数と MCP サーバー(stdio、SSE、streamable HTTP、OAuth)を単一のカタログで扱います。並列バッチ、呼び出しシグネチャによるループ検出、大規模なツールセット向けのツール検索にも対応します。 | ローカルツール、MCP |
| コードモード | run_code ツールを提供します。モデルが、ツールの呼び出し、ループ、計算を行う短い Python プログラムを作成し、Monty で実行します。内部のすべての呼び出しは管理・トレースされ、承認が必要な呼び出しがあると、プログラム自体が一時停止します。 | コードモード |
| ガバナンス | エージェントが持つすべての機能(各ツール、各 MCP サーバー、サンドボックス、ネットワーク、委譲、バックグラウンド実行)に対して、許可・確認・拒否のポリシーを適用します。ask は実行を一時停止し、人による確認を待ちます。シェルコマンドには、ユーザーが記述するプレフィックスルールを適用できます(git push の前に確認する、rm を拒否するなど)。このようなルールを設定すると、全体を読み取れないコマンドがルールによって許可されることはなく、確認を求められます(strict では拒否されます)。ハッシュ化されるため、実行時に範囲を広げることはできません。 | セキュリティモデル、ポリシー、承認 |
| 実行 | execute ツールを提供し、コマンドをサンドボックス(Docker、E2B、Modal、Daytona、Vercel、独自環境、またはコンテナーがすでに境界となっている local)で実行します。ポリシーで許可されない限りネットワークアクセスはなく、プロセスのキーやトークンも引き渡されず、ワークスペースのみがサンドボックスとの間で共有されます。サンドボックスが境界となります。選択したプロバイダーを設定したマニフェストがその境界を適用しない場合(組み込みプロバイダーではエージェントの構築時に判定)、拒否されます。承認後に無視されることはありません。local はサンドボックスではありません。サンドボックスが停止した場合はその旨が報告され、新しいものに置き換えられます。 | 実行、プロバイダー |
| 永続実行 | すべての実行について、ステップ、ツール呼び出し、承認が記録されます。承認または追加予算が必要になると実行は一時停止し、中断した箇所から再開します。永続メモリーストアを使用している場合、プロセスが停止した実行はチェックポイントから再開します。中断された呼び出しが暗黙に再実行されることはありません。ただし、呼び出し時点でツールが冪等であり、現在も冪等である場合は除きます。 | 永続実行 |
| 予算 | リクエスト、セッション、エージェント、アプリケーションごとに、ドル、トークン、呼び出し回数、サンドボックスの秒数の上限を設定できます。日単位または月単位での上限にも対応します。各モデル呼び出しは実行前に料金が計算され、予算が確保されます。予算が尽きた実行は、人による対応を待ちます。 | 予算 |
| メモリーとコンテキスト | メモリー内、Redis、Postgres/SQL、MongoDB でセッションメモリーを管理します。各モデル呼び出しの前にコンテキストを管理し、大きなツール出力はワークスペースのファイルに退避します。 | メモリー、コンテキスト、ストアとスケーリング |
| サブエージェント | リードエージェントがワーカーを起動します。各ワーカーは親のトレースに紐づく独自のトレースを持ち、リードエージェントの予算を共有します。ワーカープロファイルを使用すると、リードエージェントは各タスクに適したワーカーの種類(モデル、推論の強度、ツール、より限定されたルール)を選択できます。ワーカーが承認または予算を要求すると、リードエージェントは一時停止します。 | サブエージェント |
| バックグラウンド作業 | 永続タスクストア(Redis、MongoDB、SQL)、リース、再試行、再起動後の復旧に対応した、スケジュール実行および手動実行のタスクを提供します。各タスクの実行は同時に1つまでです。 | バックグラウンドエージェント |
| テレメトリー | 実行ごとに、最初から最後まで読み取れるトレースを記録します。すべてのモデル呼び出し、ツール呼び出し、サンドボックスコマンド、承認、予算の判断が含まれ、デフォルトでは完全な記録になります(capture: "default" ではモデルのプロンプトは含まれません)。個人データは記録からはマスキングされますが、実行からはマスキングされません。OTLP、LangSmith、Opik、または JSONL にエクスポートできます。 | 実行記録を読む、テレメトリー、プライバシー |
| サービス提供 | omniserve run --agent agent.py を実行すると、実行、承認、予算、バックグラウンドタスク、トレース向けの REST および SSE を提供します。認証、レート制限、Prometheus メトリクスにも対応します。プロセスごとの受付上限、共有ストアを使用してロードバランサーの背後に配置するレプリカ、停止したプロセスが残した実行をサーバーが再開する機能を備えています。API と並行して独自のページも提供できます。 | OmniServe |
| 1つの設定で統制されたエージェントを実現: |
agent = OmniCoreAgent(
name="steward",
system_instruction="...",
model_config={"provider": "openai", "model": "gpt-5.6-terra"},
mcp_tools=[{"name": "github", "transport_type": "streamable_http", "url": "https://api.githubcopilot.com/mcp/",
"headers": {"Authorization": "Bearer ..."}}],
agent_config={
"governance_config": {
"enabled": True,
"policy": {"name": "steward", "mode": "strict", "rules": {
"allow": [{"rule_id": "read", "capability": "tool.mcp.call",
"target": {"mcp_server": "github", "tool_name": "get_file_contents"}},
{"rule_id": "sandbox", "capability": "sandbox.execute"},
{"rule_id": "commands", "capability": "process.exec",
"constraints": {"sandbox_required": True}},
# The manifest asks for the network; a strict policy must allow it.
{"rule_id": "network", "capability": "sandbox.network.configure"}],
"ask": [{"rule_id": "pr", "capability": "tool.mcp.call",
"target": {"mcp_server": "github", "tool_name": "create_pull_request"}}],
"deny": [{"rule_id": "merge", "capability": "tool.mcp.call",
"target": {"mcp_server": "github", "tool_name": "merge_pull_request"}}],
}},
"budgets": {"application_id": "steward",
"application": [{"meter": "model_cost_usd", "limit": 5.0, "window": "day"}],
"request": [{"meter": "model_cost_usd", "limit": 1.0}]},
"sandbox_config": {"provider": "e2b"},
"sandbox_manifest": {"network_policy": {"default": "allow"}},
},
},
telemetry_config={"capture": "full"},
)
機能一覧ではなく、実証による証明
ランタイムは、実際の難しい作業を実行し、外部から負荷をかけて検証することで実証されています。このリポジトリのリポジトリ管理エージェントは、その最初のアプリケーションです。サーバー上で動作するバックグラウンドエージェントで、サンドボックス内で失敗するテストを再現し、人の承認を得て修正し、自身のトレースにリンクしたプルリクエストを作成し、自身の失敗を作業項目として分類し、スケジュールに従って実行します(apps/steward/)。次に、Harbor での試行があります。証明対象の仕組みを通じてのみ合格できるように設計されたタスクと、失敗するように設計されたタスクを用意し、報酬だけでなく試行の終了状況を確認して評価します。3つ目はサポートデスク(apps/support_desk/)です。返金を人が承認する顧客の集団を、同時接続ユーザー数100人まで増やして30分間負荷テストし、11通りの方法で障害を発生させます(返金処理の最中にサーバーとそのデータベースを停止する、モデルプロバイダーを障害状態にするなど)。すべての返金は一度だけ計上されます。その過程で発生した問題をまとめた 69件の調査結果には、それぞれ何が起きたのか、なぜ起きたのか、何によって修正されたのかが記載されています。詳しくは本番環境での実証に関するレポートをご覧ください。
OpenAI Agents SDK、LangGraph、Pydantic AI、Claude Agent SDK、CrewAI との比較(それらのほうが優れている点を含む)は、機能ごとに、各セルの出典付きでご覧いただけます。
使用するものだけをインストール
pip install "omnicoreagent[serve]" # OmniServe REST/SSE
pip install "omnicoreagent[docker]" # Docker sandboxes; e2b, modal, daytona, vercel likewise
pip install "omnicoreagent[redis]" # Redis memory and task store; postgres, mongodb likewise
pip install "omnicoreagent[s3]" # S3 / R2 workspace storage
pip install "omnicoreagent[tokenizer]" # token-exact context and budget estimates
pip install "omnicoreagent[otel]" # OTLP export; langsmith, opik likewise
pip install "omnicoreagent[codemode]" # code mode, in Monty
pip install "omnicoreagent[harbor]" # Harbor and Terminal-Bench trials
pip install "omnicoreagent[all]" # every extra above except harbor
AI コーディングエージェントをお使いですか?
AGENTS.md を参照してください。これはエージェント向けのリポジトリ案内で、各ファイルの場所、テストの実行方法、各項目の説明が記載されたページをまとめています。ドキュメントでは同じ理由から、llms.txt、Markdown としてのコピー機能、MCP サーバーを提供しています(AI ツールでドキュメントを使う)。
クックブック
はじめに · 実際のアプリケーション · バックグラウンドエージェント · OmniServe · 本番環境
開発
git clone https://github.com/omnirexflora-labs/omnicoreagent.git && cd omnicoreagent
uv venv && source .venv/bin/activate
uv sync --all-extras --all-groups --locked
pytest tests/
CONTRIBUTING.md をご覧ください。設計メモと計画は
engineering/ にあります。
ライセンスと作者
MIT — LICENSE をご覧ください。Abiola Adeshina が開発しました (@abiorhmangana)。 LiteLLM、FastAPI、Pydantic を基盤としています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。