mcpField
L
logic-server

logic-server

ローカル
github.com/AuctalisAI・エージェント311 週間前に更新

logic-server について

logic-serverは、AIアプリ向けのコンテキスト・推論エンジンです。会話から事実を抽出し、目標に関係する情報を推論してターン間の差分を返すため、エージェント開発で重複コンテキストを抑え、論理的一貫性を保てます。

主な機能

  1. 01会話ターンからの事実抽出
  2. 02目標に基づく後向き連鎖推論
  3. 03ターン間のコンテキスト差分
  4. 04事実維持と矛盾処理
  5. 05Python、TypeScript、REST、CLI、MCPの各インターフェース

活用シーン

  1. 01LLMに送る会話コンテキストの重複削減
  2. 02エージェントの現在の目標に関係する事実の整理
  3. 03ターン間で追加・削除されたコンテキストの追跡

MCP 対応

重要度順の作業セットを取得する `context` ツールを備えた、仕様準拠のMCPサーバーを提供します。HTTPエンドポイントとMCPを併用し、目標に沿ったコンテキスト構築や差分取得ができます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ai-nocturnus-logic-server": {
"command": "npx",
"args": [
"-y",
"nocturnusai-mcp"
],
"env": {
"NOCTURNUSAI_URL": "<NOCTURNUSAI_URL>",
"NOCTURNUSAI_API_KEY": "<NOCTURNUSAI_API_KEY>",
"NOCTURNUSAI_DATABASE": "<NOCTURNUSAI_DATABASE>",
"NOCTURNUSAI_TENANT": "<NOCTURNUSAI_TENANT>"
}
}
}
}
起動コマンドnpx -y nocturnusai-mcp
設定が必要な環境変数
NOCTURNUSAI_URLBase URL of the NocturnusAI server
NOCTURNUSAI_API_KEYシークレットAPI key for authenticated access
NOCTURNUSAI_DATABASEDatabase name to use
NOCTURNUSAI_TENANTTenant ID for multi-tenant isolation

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmnocturnusai-mcp0.3.11

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

NocturnusAI

CI PyPI npm Docker License: BUSL-1.1 MCP

AI エージェントのためのコンテキストエンジニアリングエンジン:変更されたものだけを送信します。

NocturnusAI — AI エージェントのためのコンテキストエンジニアリングエンジン


導入前/導入後

# ❌ Without NocturnusAI — replay everything, every turn
messages = system_prompt + full_history + tool_outputs   # ~1,259 tokens/turn
response = llm(messages)                                 # $13,600/mo at scale

# ✅ With NocturnusAI — send only what changed
ctx = nocturnus.process_turns(raw_turns)                 # extract → infer → delta
messages = system_prompt + ctx.briefing_delta             # ~221 tokens/turn
response = llm(messages)                                 # $2,400/mo. Same accuracy.

数字で見る

実稼働 API で測定。15 ターンの製品サポート会話。実際の usage.input_tokens 件数です。自分で試す。

単純な再送RAG 最適化NocturnusAI
ターンあたりのトークン数~1,259~800~221
月額コスト(1K req/hr、Opus 4、$15/1M)$13,600$12,000$2,400
レイテンシ高中低
真実の保持いいえいいえはい

Claude Opus 4:**5.7×**削減。Gemini 2.0 Flash:10.0×。計算の詳細。


インストール

pip install nocturnusai          # Python
npm install nocturnusai-sdk      # TypeScript
docker run -p 9300:9300 ghcr.io/auctalis/nocturnusai:latest  # Docker

または、セットアップウィザードを使用します:

curl -fsSL https://raw.githubusercontent.com/Auctalis/nocturnusai/main/install.sh | bash

開発者がこのリポジトリにスターを付ける理由

  • 再現可能なトークン削減 — リポジトリ内のベンチマーク、公開済みの方法論、自分のワークロードでも実行可能
  • 決定論的な推論 — 同じクエリには毎回同じ結果を返します。埋め込みの変動も、コサイン類似度の運任せもありません
  • 真実の維持 — 事実を撤回すると、そこから導かれた結論もすべて自動で撤回されます。古いコンテキストも、運用状態に関するハルシネーションもありません
  • 既存のスタックに組み込み可能 — LangChain、LlamaIndex、CrewAI、AutoGen、MCP、Vercel AI SDK、OpenAI Agents SDK、Mastra
  • 単純な再送とのベンチマークが可能 — 数値は捏造ではなく、導出されたものです。すべての主張はノートブックのセルで検証できます

フレームワーク別クイックスタート

フレームワーク統合リンク
LangChain / LangGraphそのまま置き換え可能な NocturnusContextProvider、LangSmith トレースのパススルードキュメント
CrewAIエージェントの役割ごとにスコープを設定したタスクコンテキストドキュメント
AutoGenあらゆるエージェントから呼び出せるコンテキストサーバードキュメント
MCPClaude Desktop、Cursor、Continue 向けの仕様準拠サーバー設定
OpenAI Agents SDKコンテキストミドルウェア。ツールの変更は不要ドキュメント
Vercel AI SDKNext.js、Nuxt、SvelteKit 向けのエッジ対応アダプタードキュメント
Python SDKpip install nocturnusaiドキュメント
TypeScript SDKnpm install nocturnusai-sdkドキュメント

仕組み

毎ターン、次の3つのステップを実行します。

  1. 抽出 — 生の会話ターン → LLM による抽出で構造化された事実に変換
  2. 推論 — 後ろ向き連鎖による論理推論で、エージェントの現在の目標から到達可能な事実のみを特定
  3. 差分を返す — 前回のターン以降に変更された内容だけを含む briefingDelta

これはベクトル検索ではありません。要約でもありません。論理エンジンによる決定論的な推論です — Hexastore によるインデックス作成、後ろ向き連鎖、そして真理値保全。


作業ループ

自然言語のターンには LLM が必要です。 以下の例では、生のテキストターンを LLM に渡し、構造化された事実を抽出します。LLM プロバイダーなしでサーバーを起動すると、自然言語のターンからは事実が一切返されません。セットアップ方法はクイックスタートを参照するか、LLM を必要としない述語構文(例:"customer_tier(acme_corp, enterprise)")を使用してください。

1. 最初の削減:POST /context
curl -X POST http://localhost:9300/context \
  -H 'Content-Type: application/json' \
  -H 'X-Tenant-ID: default' \
  -d '{
    "turns": [
      "user: Customer says they are enterprise and blocked on SLA credits.",
      "tool: CRM says account is Acme Corp with a 2M ARR contract.",
      "agent: Last week support promised to review SLA eligibility.",
      "tool: Billing note says renewal is due next month."
    ],
    "maxFacts": 12
  }'
2. 目標駆動の処理:POST /memory/context
curl -X POST http://localhost:9300/memory/context \
  -H 'Content-Type: application/json' \
  -H 'X-Tenant-ID: default' \
  -d '{
    "goals": [{"predicate":"eligible_for_sla","args":["acme_corp"]}],
    "maxFacts": 12,
    "sessionId": "ticket-42"
  }'
3. 後続のターン:POST /context/diff
curl -X POST http://localhost:9300/context/diff \
  -H 'Content-Type: application/json' \
  -H 'X-Tenant-ID: default' \
  -d '{"sessionId": "ticket-42", "maxFacts": 12}'

スナップショット間でaddedとremovedの項目のみを返します。

4. スレッドの終了:POST /context/session/clear
curl -X POST http://localhost:9300/context/session/clear \
  -H 'Content-Type: application/json' \
  -H 'X-Tenant-ID: default' \
  -d '{"sessionId":"ticket-42"}'

利用するインターフェースを選択

Python SDK
from nocturnusai import SyncNocturnusAIClient

with SyncNocturnusAIClient("http://localhost:9300") as client:
    ctx = client.process_turns(
        turns=[
            "user: Customer says they are enterprise and blocked on SLA credits.",
            "tool: CRM says account is Acme Corp with a 2M ARR contract.",
        ],
        scope="ticket-42",
        session_id="ticket-42",
    )

    diff = client.diff_context(session_id="ticket-42", max_facts=12)
    client.clear_context_session("ticket-42")

    print(ctx.briefing_delta)
TypeScript SDK
import { NocturnusAIClient } from 'nocturnusai-sdk';

const client = new NocturnusAIClient({
  baseUrl: 'http://localhost:9300',
  tenantId: 'default',
});

const ctx = await client.processTurns({
  turns: [
    'user: Customer says they are enterprise and blocked on SLA credits.',
    'tool: CRM says account is Acme Corp with a 2M ARR contract.',
  ],
  scope: 'ticket-42',
  sessionId: 'ticket-42',
});

const diff = await client.diffContext({ sessionId: 'ticket-42', maxFacts: 12 });
await client.clearContextSession('ticket-42');
console.log(ctx.briefingDelta);
MCP
{
  "mcpServers": {
    "nocturnus": {
      "url": "http://localhost:9300/mcp/sse",
      "transport": "sse"
    }
  }
}

毎ターン、重要度順に並べた作業セットを得るには、context ツールを使用してください。目標駆動のコンテキスト構築や差分が必要な場合は、MCP と HTTP コンテキストエンドポイントを併用してください。


ワークフローを支える機能

バックエンドの仕組みが必要な場合は、NocturnusAI が次の機能を提供します。

  • 事実とルールの決定論的な保存
  • 証明チェーンを伴う後ろ向き連鎖推論
  • 真理値保全と矛盾処理
  • ttl、validFrom、validUntil を使った時間的事実
  • X-Database と X-Tenant-ID によるマルチテナント対応
  • 同じエンジンを利用する MCP、REST、Python SDK、TypeScript SDK、CLI の各インターフェース

クイックスタート

Docker(最速)
docker run -d --name nocturnusai -p 9300:9300 \
  --restart unless-stopped \
  -v nocturnusai-data:/data \
  ghcr.io/auctalis/nocturnusai:latest
curl http://localhost:9300/health   # Verify it's running
Ollama を使った Docker(自然言語抽出を有効化)
docker run -d --name nocturnusai -p 9300:9300 \
  --add-host=host.docker.internal:host-gateway \
  -e LLM_PROVIDER=ollama \
  -e LLM_MODEL=granite3.3:8b \
  -e LLM_BASE_URL=http://host.docker.internal:11434/v1 \
  -e EXTRACTION_ENABLED=true \
  ghcr.io/auctalis/nocturnusai:latest
このリポジトリから
make up-ollama && make smoke

CLI

nocturnusai                                # Interactive REPL
nocturnusai -e "context 10"               # Salience-ranked working set
nocturnusai -e "compress"                 # POST /memory/compress
nocturnusai -e "cleanup 0.05"             # POST /memory/cleanup

ドキュメント

すべてのドキュメント:nocturnus.ai

まずはこちらターン削減ワークフロー
コンテキストワークフロー生のターン → 最適化 → 差分 → クリア
API リファレンスREST エンドポイントとレスポンス形式
SDKPython と TypeScript のクライアントメソッド
インテグレーションLangChain、CrewAI、AutoGen、MCP など
ベンチマーク実際の API で測定したトークン削減量
計算導出した数値のすべて
仕組み抽出 → 推論 → 差分のパイプライン

Docker Compose(上級者向け)

git clone https://github.com/Auctalis/nocturnusai.git && cd nocturnusai

make up                                        # Server using .env.example defaults
make up-ollama                                 # + Ollama (reuses host or starts bundled)
make up-monitoring                             # + Prometheus + Grafana
make smoke                                     # Verify health + context endpoint

ソースからビルド

JDK 17 以降が必要です。

./gradlew :nocturnusai-server:run              # HTTP server on :9300
./gradlew :nocturnusai-cli:run                 # Interactive REPL (JVM)
./gradlew :nocturnusai-cli:nativeCompile       # Build native binary
./gradlew test                                 # Full test suite

コントリビュート

CONTRIBUTING.md を参照してください。good first issue ラベルの付いた Issue は、取り組みを始めるのに適しています。

セキュリティ

脆弱性はGitHub Security Advisoriesから非公開で報告してください。SECURITY.md を参照してください。

ライセンス

Business Source License 1.1(SPDX:BUSL-1.1)。自組織内での利用は、内部での本番利用も含めて無料です。NocturnusAIまたはその実質的な機能を、第三者向けの製品またはホステッドサービスとして提供するには、商用ライセンスが必要です([email protected])。2030-02-19にApache 2.0へ移行します。LICENSEとDISCLAIMER.mdをご覧ください。


法的および安全に関する通知

NocturnusAIは決定論的な推論エンジンですが、その出力の信頼性は、提供された事実の信頼性に左右されます。

  1. 真実性は保証されません。「検証済み」とは推論の論理的整合性を指し、現実世界の主張の正確性を指すものではありません。
  2. **重大な結果を伴う意思決定の自動化には使用しないでください。**独立した人間による検証を経ずに、監督のない医療、財務、法律、または身体の安全に関する意思決定にこのエンジンを使用しないでください。
  3. **論理レイヤーのみです。**NocturnusAIは情報と推論を提供しますが、アクションは実行しません。
  4. 責任を負いません。DISCLAIMER.mdとLICENSEをご覧ください。

コメント

MCP は初めてですか?

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

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