mcpField
V
valv

valv

ローカル
valv.shデータベース54 週間前に更新

valv について

@valv/mcpは、デフォルトで読み取り専用のMCPサーバーを通じてコーディングエージェントをデータベースに接続します。スキーマを調査し、テーブル、フィールド、ポリシーでアクセスを制限するため、SQLをエージェントに渡さず許可データを照会できます。

主な機能

  1. 01ライブデータベーススキーマの調査
  2. 02リソースの検索と説明
  3. 034つのツールによるデータ照会
  4. 04テーブルとフィールドのポリシー制限
  5. 05ポリシールールによる行フィルター
  6. 06ガイド付きセットアップによるクライアント設定

活用シーン

  1. 01許可されたデータベーステーブルの探索
  2. 02SQLアクセスを渡さずにデータを照会
  3. 03エージェントに見せるテーブルの限定
  4. 04行とフィールドへの制限適用

MCP 対応

データベーススキーマの探索と照会ツールをMCPクライアントに公開します。データベースURLで接続し、デフォルトで読み取り専用です。許可リストやポリシーファイルでアクセスを制限できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"sh-valv": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>",
"VALV_PROVIDER": "<VALV_PROVIDER>",
"VALV_DATABASE": "<VALV_DATABASE>",
"VALV_TABLES": "<VALV_TABLES>",
"VALV_EXCLUDE": "<VALV_EXCLUDE>",
"VALV_POLICY_FILE": "<VALV_POLICY_FILE>",
"VALV_CONTEXT": "<VALV_CONTEXT>",
"VALV_HTTP_PORT": "<VALV_HTTP_PORT>"
}
}
}
}
起動コマンドnpx -y @valv/mcp
設定が必要な環境変数
DATABASE_URLシークレットDatabase connection string. PostgreSQL, MySQL, SQLite, CockroachDB, or a ClickHouse HTTP URL.
VALV_PROVIDERDatasource provider: postgresql, mysql, sqlite, or clickhouse. Inferred from DATABASE_URL when omitted.
VALV_DATABASEDatabase name. Required for ClickHouse, whose URL does not carry one.
VALV_TABLESComma-separated allow-list of tables. When set, only these are exposed to the agent.
VALV_EXCLUDEComma-separated deny-list of tables, applied after the allow-list.
VALV_POLICY_FILEPath to a policy module that takes full control of access. Without it, the server is read-only across all tables.
VALV_CONTEXTJSON context object the policy reads, e.g. {"tenant":{"id":"acme"}}.
VALV_HTTP_PORTServe over Streamable HTTP on this port instead of stdio.

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

パッケージ
npm@valv/mcp0.6.2

ツール

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

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

詳細

@valv/mcp

データベース URL を指定するだけで、エージェントが安全にクエリを実行します。SQL もコードも不要です。

valv を基盤とする、設定不要の MCP サーバーです。接続文字列を渡すと、稼働中のスキーマをイントロスペクションし、4 つのツール(list_resources、search_resources、describe_resource、query)を提供します。デフォルトでは読み取り専用で、ポリシーを適用します。SQL がモデルに渡されることはなく、許可したデータのみを読み取れます。

PostgreSQL、MySQL、SQLite、CockroachDB、ClickHouse、MongoDB に対応しています。

npm license

ガイド付きセットアップ

最も手早く始められる方法です。データベースを調べ、アクセス方法を選択して、設定を書き込みます。

npx @valv/mcp init

接続文字列、または個別の接続情報(ホスト、ポート、ユーザー、パスワード、データベース)を入力できます。方言を確認して接続し、テーブルを表示した後、読み取り専用、テーブルの選択、ポリシーファイルのひな形から選べます。続いて、既存の設定をそのまま残しながら、選択したクライアント(Claude Code、Claude Desktop、Cursor、Codex)のプロジェクトまたはグローバルな設定にサーバーのエントリーをマージします。最後に、valv のクエリ方法と、結果をインタラクティブなチャートレポートの HTML ファイルに変換する方法をエージェントに教える valv スキルのインストールを提案します。スキルは、プロジェクトまたはグローバルな場所にある Claude Code 用(.claude/skills)、Codex 用(.agents/skills)、または Cursor 用(.cursor/skills)としてインストールできます。さらに、データベースのスキーマを調べ(今後のクエリに備えて .valv/notes.md に記録し)、データベースの概要を示すインタラクティブな valv-map.html を 1 つ生成するためのキックスタートプロンプトをクリップボードにコピーできます。これをエージェントに貼り付けてください。

手動セットアップ

.mcp.json(または Claude Desktop の設定)に追加します。

{
  "mcpServers": {
    "db": {
      "command": "npx",
      "args": ["-y", "@valv/mcp"],
      "env": { "DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb" }
    }
  }
}

ClickHouse の場合は、HTTP URL とデータベース名を使用します。

"env": { "DATABASE_URL": "http://localhost:8123", "VALV_DATABASE": "analytics" }

MongoDB の場合は、標準の接続文字列を使用します。URL でデータベースが指定されていない場合は、VALV_DATABASE を設定してください。

"env": { "DATABASE_URL": "mongodb://localhost:27017", "VALV_DATABASE": "analytics" }

設定

すべて環境変数で設定します。

変数説明
DATABASE_URL接続文字列(必須。代わりに CLI の最初の引数として渡すこともできます)。
VALV_PROVIDERpostgresql | mysql | sqlite | mongodb | clickhouse。省略した場合は URL から推定されます。
VALV_DATABASEClickHouse または MongoDB のデータベース名。
VALV_TABLESカンマ区切りの許可リスト。ここに指定したテーブルのみが公開されます。
VALV_EXCLUDEカンマ区切りの拒否リスト。許可リストの適用後に適用されます。
VALV_POLICY_FILEテナントのスコープ設定や非表示フィールドの指定に使うポリシーモジュールのパス(下記参照)。
VALV_CONTEXTポリシーが読み取る JSON コンテキスト(例:{"tenant":{"id":"acme"}})。
VALV_HTTP_PORTstdio の代わりに、このポートで Streamable HTTP 経由のサービスを提供します。

ポリシーファイル

ポリシーファイルがない場合、すべてのテーブルに対して読み取り専用のアクセスになります。エージェントが参照できるテーブルや列を制限するには、設定済みの valv インスタンスを受け取るモジュールを VALV_POLICY_FILE に指定します。

// valv.policy.cjs
module.exports = (valv) => {
  valv.policy("orders", () => ({
    read:   true,                          // allow reads (or { column: value } to filter rows)
    fields: { deny: ["internal_notes"] },  // hide columns from the agent
  }))
  // Tables without a policy are denied (deny-all).
}

リクエストごとにテナントやユーザー単位で行をスコープ設定する必要がありますか?それは、コードからリクエストごとに実際の ID を渡す、アプリが制御する経路で行います。そうするには @valv/mcp-sdk を使用するか、固定の VALV_CONTEXT を渡し、ここにあるポリシーで読み取ってください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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