mcpField
B
Boyce

Boyce

ローカル
convergentmethods.comデータベース126 週間前に更新

Boyce について

Boyceは、SQLを生成または検査するエージェント向けのMCPサーバー兼データベース安全レイヤーです。スキーマ情報、決定論的なSQL生成、NULLリスク検査、EXPLAIN検証を組み合わせ、一般的なデータやモデリングソースも解析します。

主な機能

  1. 01構造化フィルターから決定論的なSQLを生成
  2. 02実際のスキーマとデータ分布を検査
  3. 03NULLリスクを確認しEXPLAINで検証
  4. 0410種類のデータベース・モデリングソースを解析
  5. 05読み取り専用のSELECTクエリを実行
  6. 06Redshift互換性のためのSQL検査

活用シーン

  1. 01クエリ生成前にエージェントへスキーマ情報を提供
  2. 02データベース実行前にSQLを検証
  3. 03列を分析してデータ品質の問題を特定
  4. 04dbt、LookML、DDLのプロジェクト定義を取り込む

MCP 対応

スキーマソースや定義の取り込み、スキーマ情報の取得、SQLの生成と検証、データベース照会、データ分析、稼働状況の確認に使うツールを提供します。MCPホストはBoyce用のLLMプロバイダーを別途設定せずに、スキーマ情報と決定論的SQLツールを利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"boyce": {
"command": "uvx",
"args": [
"boyce"
],
"env": {
"BOYCE_DB_URL": "<BOYCE_DB_URL>",
"BOYCE_PROVIDER": "<BOYCE_PROVIDER>",
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>"
}
}
}
}
起動コマンドuvx boyce
設定が必要な環境変数
BOYCE_DB_URLPostgreSQL or Redshift connection string. Optional — tools work without live DB; required for live profiling and EXPLAIN pre-flight.
BOYCE_PROVIDERLLM provider for the NL→StructuredFilter planner (anthropic, openai). MCP hosts using their own model should not set this — the host's model does the reasoning and Boyce receives a pre-built StructuredFilter.
ANTHROPIC_API_KEYシークレットRequired only when BOYCE_PROVIDER=anthropic and the host does not supply its own model. MCP hosts (Claude Desktop, Cursor, Claude Code, Codex, Cline, Windsurf, JetBrains) do not need this.

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

パッケージ
pypiboyce0.1.1

ツール

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

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

詳細

Boyce:エージェント型データベースワークフローのためのセマンティックプロトコル&セーフティレイヤー

エージェント型データベースワークフローのためのセマンティックセーフティレイヤーです。 Boyce は、組み込みの安全策により、LLM を実際のデータベースコンテキストに接続します。

SQL の共同発明者(1974 年)であり、Boyce-Codd 正規形(BCNF)の共著者である Raymond F. Boyce にちなんで名付けられました。

適切なコンテキストなしでデータベースにクエリを実行する AI エージェントは、信頼性の低い SQL を生成します。不完全なスキーマをもとに作業し、カラム名を推測し、結合パスを当てずっぽうで判断します。Boyce は、正確で安全な SQL を毎回生成するためにエージェントが必要とする、構造化されたデータベースインテリジェンスを、相互に連携する 3 つのシステムを通じて提供します。

レイヤー機能
SQL コンパイラーask_boyce — 自然言語 → StructuredFilter → 決定論的な SQL。SQL ビルダーに LLM は一切使用しません。同じ入力からは、毎回バイト単位でまったく同じ SQL が生成されます。
データベースインスペクターquery_database / profile_data — ライブ Postgres/Redshift アダプターにより、エージェントはフィルターを 1 つ書く前に、実際のスキーマと実際のデータ分布を確認できます。
クエリ検証生成されるすべてのクエリで、事前に EXPLAIN ループを実行します。不正な SQL は、午前 2 時のオンコール対応中ではなく、プランニング時に検出されます。

なぜ重要なのでしょうか? → ヌルトラップ:AI エージェントの SQL は正しい。それでも答えは間違っています。


インストール

Python 3.10 以降が必要です

pip install boyce

# With live Postgres/Redshift adapter (enables EXPLAIN pre-flight + column profiling)
pip install "boyce[postgres]"
# uv (recommended)
uv pip install boyce
uv pip install "boyce[postgres]"

ソースからインストールする場合:

git clone https://github.com/boyce-io/boyce
uv pip install -e "boyce/"

クイックスタート

インストール後、boyce init を実行すると、MCP ホストを自動的に設定できます。

boyce init

ウィザードは Claude Desktop、Cursor、Claude Code、JetBrains(DataGrip、IntelliJ など)を検出し、それぞれに適した設定ブロックを書き込みます。

ソースから開発しますか? リポジトリにはセットアップスクリプトが含まれています。

./quickstart.sh   # detects uv or python, installs package, writes .env template

MCP ホストの設定

最も手早い方法は boyce init です。MCP ホストを検出して、設定を自動的に書き込みます。

boyce init

または、手動で設定できます。ホストに応じて、2 つのセットアップ方法があります。


方法 1 — MCP ホスト(LLM キー不要)

Claude Desktop、Cursor、Claude Code、Codex、Cline、Windsurf、JetBrains(DataGrip、 IntelliJ)、またはその他の MCP 互換ホストを使用している場合、Boyce 用の LLM プロバイダーを設定する必要はありません。 ホスト自体のモデルが推論を行い、Boyce は get_schema と ask_boyce を通じて、スキーマコンテキストと決定論的な SQL コンパイラーを提供します。必要なのは BOYCE_DB_URL のみです(こちらも省略できます)。

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

Cursor(プロジェクトルートの .cursor/mcp.json):

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

方法 2 — Boyce 組み込みの自然言語→SQL を使用

CLI(boyce ask)、HTTP API、または MCP 以外のクライアント(VS Code 拡張機能など)を使用している場合は、LLM プロバイダーを指定して Boyce 内部のクエリプランナーを設定してください。

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_PROVIDER": "anthropic",
        "BOYCE_MODEL": "claude-sonnet-4-6",
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

Boyce は LiteLLM を通じて利用できるあらゆる LLM プロバイダーに対応しています。 Anthropic、OpenAI、Ollama(ローカル)、vLLM(ローカル)、Azure、Bedrock、Vertex、Mistral などが利用できます。


BOYCE_DB_URL は、どちらの方法でも省略できます。設定しない場合、Boyce はスキーマのみのモードで動作します。SQL 生成は引き続き機能しますが、EXPLAIN による事前チェックとライブクエリツールは "status": "unchecked" を返します。


環境変数

変数必要な場合例用途
BOYCE_PROVIDERパス 2 のみ(CLI/HTTP/MCP 以外)anthropicLiteLLM のプロバイダー名
BOYCE_MODELパス 2 のみ(CLI/HTTP/MCP 以外)claude-sonnet-4-6LiteLLM に渡すモデル ID
ANTHROPIC_API_KEYAnthropic を使用する場合sk-ant-...Anthropic の認証情報
OPENAI_API_KEYOpenAI を使用する場合sk-...OpenAI の認証情報
BOYCE_DB_URL任意(どちらのパスでも)postgresql://user:pass@host:5432/dbasyncpg DSN — EXPLAIN による事前検証とライブクエリツールを有効にします
BOYCE_HTTP_TOKENパス 2 の HTTP API のみmy-secret-tokenboyce serve --http 用のベアラートークン
BOYCE_STATEMENT_TIMEOUT_MS任意30000ステートメントごとのタイムアウト(ミリ秒、デフォルト:30s)

MCP ツール

ツール説明
ingest_sourcedbt manifest、dbt プロジェクト、LookML、DDL、SQLite、Django、SQLAlchemy、Prisma、CSV、Parquet から SemanticSnapshot を解析します。
ingest_definition認定済みのビジネス定義を保存します。クエリ実行時に自動的に挿入されます。
get_schemaスキーマの全コンテキストと StructuredFilter 形式のドキュメントを返します。MCP ホストが Boyce API キーなしでクエリを構築できるよう、ホストの LLM が使用します。
ask_boyce自然言語から SQL への全パイプライン:クエリプランナー(LiteLLM)→ 決定論的カーネル → NULL トラップチェック → EXPLAIN による事前検証。
validate_sql手書き SQL を実行せずに検証します。EXPLAIN による事前検証、Redshift の lint、NULL リスクを確認します。
query_databaseライブデータベースに対して読み取り専用の SELECT を実行します。書き込み操作は独立した 2 つのレイヤーで拒否されます。
profile_data任意のカラムの NULL 率、個別値の数、最小値/最大値を確認し、クエリ結果に影響する前にデータ品質の問題を明らかにします。
check_healthDB 接続、スナップショットの鮮度、実行可能な修正コマンドを確認する運用ヘルスチェックです。クエリが予期せず失敗した場合に呼び出してください。

アーキテクチャ

SemanticSnapshot (JSON)
        │
        ▼  ingest_source
 ┌─────────────────────────────────────────────┐
 │          SemanticGraph (NetworkX)            │  ← in-memory, loaded per session
 │  nodes = entities (tables/views/dbt models) │
 │  edges = joins  (weighted by confidence)    │
 └─────────────────────────────────────────────┘
        │                         │
        ▼  ask_boyce              ▼  (internal)
  QueryPlanner                 Dijkstra
  (LiteLLM)                    join resolver
  NL → StructuredFilter             │
        │                           │
        └──────────┬────────────────┘
                   ▼
           kernel.process_request()          ← ZERO LLM HERE
           SQLBuilder (dialect-aware)
                   │
                   ▼
           EXPLAIN pre-flight                ← Query Verification
           (PostgresAdapter)
                   │
                   ▼
            SQL + validation result

方言のサポート: redshift、postgres、duckdb、bigquery

Redshift の安全対策(safety.py):Redshift 1.0(PG 8.0.2)向けに、LATERAL、JSONB、REGEXP_COUNT、後読み正規表現パターンの自動 lint と数値キャストの書き換えを行います。


スキャン CLI

# Scan a single file
boyce scan demo/magic_moment/manifest.json

# Scan a directory (auto-detects all parseable sources)
boyce scan ./my-project/ -v

# Save snapshots for MCP server use
boyce scan ./my-project/ --save

10 種類のパーサー:dbt manifest、dbt プロジェクト、LookML、SQLite、DDL、CSV、Parquet、Django、SQLAlchemy、Prisma。


インストールの確認

# Unit tests — no DB required, runs in ~4 seconds
python boyce/tests/verify_eyes.py

# Expected output:
# Ran 15 tests in 3.5s
# OK
# ✅  All checks passed.

SemanticSnapshot 形式

ingest_source ツールは SemanticSnapshot JSON dict を受け付けます。最小限の例:

{
  "snapshot_id": "<sha256>",
  "source_system": "dbt",
  "entities": {
    "entity:orders": {
      "id": "entity:orders",
      "name": "orders",
      "schema": "public",
      "fields": ["field:orders:order_id", "field:orders:revenue"]
    }
  },
  "fields": {
    "field:orders:order_id": {
      "id": "field:orders:order_id",
      "entity_id": "entity:orders",
      "name": "order_id",
      "field_type": "ID",
      "data_type": "INTEGER"
    }
  },
  "joins": []
}

フィールド/エンティティの完全な例は boyce/tests/live_fire/mock_snapshot.json を参照してください。


プロジェクトの構成

boyce/                          ← PRIMARY — headless FastMCP server + pip package
├── boyce/
│   ├── server.py               ← MCP entry point (8 tools)
│   ├── kernel.py               ← Deterministic SQL kernel
│   ├── graph.py                ← SemanticGraph (NetworkX)
│   ├── safety.py               ← Redshift compatibility rails
│   ├── types.py                ← Protocol contract (Pydantic)
│   ├── scan.py                 ← Scan CLI (boyce scan)
│   ├── connections.py          ← DSN persistence (ConnectionStore)
│   ├── doctor.py               ← Environment diagnostics (boyce doctor)
│   ├── sql/                    ← SQLBuilder, dialect layer, join resolver
│   ├── parsers/                ← 10 parsers (dbt, lookml, ddl, sqlite, csv, etc.)
│   ├── planner/                ← QueryPlanner (LiteLLM → StructuredFilter)
│   └── adapters/               ← PostgresAdapter (Eyes)
└── tests/
    ├── verify_eyes.py          ← 15-test suite, no DB required
    ├── test_parsers.py         ← Parser tests (all 10 parsers)
    ├── test_scan.py            ← Scan CLI tests
    └── live_fire/              ← Docker Compose integration tests

ステータス

機能ステータス
自然言語から SQL への変換(決定論的カーネル)稼働中
SemanticGraph(結合の解決)稼働中
10 種類のソースパーサー稼働中
スキャン CLI(boyce scan)稼働中
PostgresAdapter(読み取り専用)稼働中
EXPLAIN による事前検証稼働中
NULL Trap の検出稼働中
Redshift 1.0 の安全 lint稼働中
再起動後のスナップショット永続化稼働中
監査ログ(追記専用 JSONL)稼働中
ビジネス定義(ingest_definition)稼働中
DSN 永続化(ConnectionStore)稼働中
環境診断(boyce doctor / check_health)稼働中
複数スナップショットのマージ予定

サポート


Copyright 2026 Convergent Methods, LLC. MIT License.

コメント

MCP は初めてですか?

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

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