mcpField
Q
Queryweaver

Queryweaver

ローカル
github.com/FalkorDBデータベース1.1k2 日前に更新

Queryweaver について

QueryWeaver は、グラフベースのスキーマ理解を用いて平易な英語の質問を SQL に変換するオープンソースの Text2SQL ツールです。自然言語でデータベースに問い合わせたいユーザーを対象とし、REST API と MCP インターフェースを提供します。

主な機能

  1. 01自然言語から SQL への変換
  2. 02グラフベースのスキーマ理解
  3. 03Swagger ドキュメント付きの REST API
  4. 04他のサービスから呼び出せる組み込み MCP エンドポイント
  5. 05複数のAIプロバイダーの設定に対応
  6. 06環境変数による MCP エンドポイントの無効化

活用シーン

  1. 01平易な英語でデータベースに質問し、SQL の結果を得る
  2. 02MCP クライアントからデータベースのクエリツールを呼び出す
  3. 03REST API で Text2SQL 機能をスクリプトに組み込む

MCP 対応

本プロジェクトは MCP サーバーとして動作し、list_databases、connect_database、database_schema、query_database などのツールを公開できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"QueryWeaver": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/falkordb/queryweaver:0.0.11"
]
}
}
}
起動コマンドdocker run -i --rm docker.io/falkordb/queryweaver:0.0.11

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

パッケージ
ocidocker.io/falkordb/queryweaver:0.0.11

ツール

4

掲載時のツール一覧 · 3 週間前に更新

このツールにパラメーターはありません。

詳細

QueryWeaver(Text2SQL)

REST API · MCP · グラフを活用

QueryWeaver は、グラフを活用したスキーマ理解を用いて、平易な英語の質問を SQL に変換するオープンソースの Text2SQLツールです。データベースに自然言語で質問すると、SQL と結果を返します。

接続して質問する:Discord

無料で試す PyPI Dockerhub テスト Swagger UI

新しい QueryWeaver UI の GIF

はじめに

Docker

💡 評価目的での利用を推奨します(ローカルの Python や Node は不要です)

docker run -p 5000:5000 -it falkordb/queryweaver

起動先:http://localhost:5000


.env ファイルを使用する(推奨)

.env.example をコピーしてローカルに .env を作成し、Docker に渡します。必要な設定をすべて指定する最も簡単な方法です。

cp .env.example .env
# edit .env to set your values, then:
docker run -p 5000:5000 --env-file .env falkordb/queryweaver
別の方法:環境変数を個別に渡す

コマンドラインで変数を渡す場合は、-e フラグを使用します(変数が多い場合は不便です)。

docker run -p 5000:5000 -it \
  -e APP_ENV=development \
  -e FASTAPI_SECRET_KEY=your_super_secret_key_here \
  -e GOOGLE_CLIENT_ID=your_google_client_id \
  -e GOOGLE_CLIENT_SECRET=your_google_client_secret \
  -e GITHUB_CLIENT_ID=your_github_client_id \
  -e GITHUB_CLIENT_SECRET=your_github_client_secret \
  -e AZURE_API_KEY=your_azure_api_key \
  falkordb/queryweaver

APP_ENV=development を指定すると、このコマンドが提供するプレーン HTTP の http://localhost:5000 でログインできるようになります。QueryWeaver を HTTPS の背後に配置する場合は、この指定を削除するか、別の値に設定してください。セッション Cookie に Secure が付与されます。詳しくはアプリケーション環境をご覧ください。

注:QueryWeaver は複数の AI プロバイダーをサポートしています。OPENAI_API_KEY、GEMINI_API_KEY、ANTHROPIC_API_KEY、または AZURE_API_KEY を使用できます。詳細はAI/LLM の設定をご覧ください。

設定オプションの一覧は .env.example をご確認ください。

メモリ TTL(任意)

QueryWeaver は、ユーザーごとの会話メモリを FalkorDB に保存します。デフォルトでは、これらのグラフは無期限に保持されます。MEMORY_TTL_SECONDS を設定すると、Redis の TTL(秒単位)が適用され、使用されていないメモリグラフが自動的に削除されます。

# Expire memory graphs after 1 week of inactivity
MEMORY_TTL_SECONDS=604800

ユーザーが操作するたびに TTL が更新されるため、アクティブなユーザーのメモリは保持されます。

MCP サーバー:ホストまたは接続(任意)

QueryWeaver には、Model Context Protocol(MCP)のオプションサポートが含まれています。QueryWeaver に MCP 対応の HTTP インターフェースを公開させ(ほかのサービスから MCP サーバーとして QueryWeaver を呼び出せるようにする)、またはモデル/コンテキストサービス用の外部 MCP サーバーを呼び出すように QueryWeaver を設定できます。

QueryWeaver が提供する機能

  • アプリは Text2SQL のワークフローに特化した MCP オペレーションを登録します:

    • list_databases
    • connect_database
    • database_schema
    • query_database
  • 組み込み MCP エンドポイントを無効にするには、.env または環境変数に DISABLE_MCP=true を設定します(デフォルト:MCP は有効)。

  • 設定

  • DISABLE_MCP — QueryWeaver の組み込み MCP HTTP インターフェースを無効にします。無効にするには true に設定します。デフォルト:false(MCP は有効)。

例

Docker で実行するときに組み込み MCP を無効にする:

docker run -p 5000:5000 -it --env DISABLE_MCP=true falkordb/queryweaver

組み込み MCP エンドポイントの呼び出し(例)

  • MCP インターフェースは HTTP エンドポイントとして公開されます。
サーバーの設定

以下は、/mcp で MCP HTTP インターフェースを公開しているローカルの QueryWeaver インスタンスを指定する、最小限の mcp.json クライアント設定例です。

{
   "servers": {
      "queryweaver": {
         "type": "http",
         "url": "http://127.0.0.1:5000/mcp",
         "headers": {
            "Authorization": "Bearer your_token_here"
         }
      }
   },
   "inputs": []
}

REST API

API ドキュメント

Swagger UI:https://app.queryweaver.ai/docs

OpenAPI JSON:https://app.queryweaver.ai/openapi.json

概要

QueryWeaver は、グラフ(データベーススキーマ)の管理と Text2SQL クエリの実行に使う小規模な REST API を提供します。ユーザーごとのデータを変更または参照するすべてのエンドポイントでは、認証が必要です。ブラウザーでは、OAuth またはメールアドレスとパスワードによって確立される署名付きセッション Cookie を使用します。CLI やスクリプトでは、API トークンを使用できます(作成するには tokens ルートまたはウェブ UI を参照してください)。

主なエンドポイント

  • GET /graphs — 認証済みユーザーが利用できるグラフの一覧を取得します
  • GET /graphs/{graph_id}/data — グラフのノード/リンク(テーブル、列、外部キー)を返します
  • POST /graphs — グラフをアップロードまたは作成します(JSON ペイロードまたはファイルのアップロード)
  • POST /graphs/{graph_id} — 指定したグラフに対して Text2SQL チャットクエリを実行します(ストリーミング応答)

認証

  • Authorization ヘッダーを追加します:Authorization: Bearer <API_TOKEN>
3 種類の認証情報はそれぞれ独立しています

QueryWeaver では、3 種類の「ログイン」を互いに独立して扱います。そのため、いずれかの失敗が別のものの失敗に見えることはありません。

認証情報証明する内容保存場所FalkorDB に依存しますか?
ブラウザーログインアプリを使用しているユーザーOAuth またはパスワードで一度確立される署名付きセッション Cookieいいえ。プロセスの実行開始後は依存しません
API トークンスクリプトがユーザーとして操作できることOrganizations グラフ内の Token ノード。Authorization: Bearer … として送信はい
データソース接続あなたの データベースへのアクセスリクエストごとに指定され、保存されませんいいえ(あなた自身のデータベースです)

ブラウザーログインは署名付き Cookie なので、ログイン状態を維持するためにデータベースへの再接続は不要です。また、すでに実行中のプロセスでは、FalkorDB が停止してもログイン状態が維持されます。セッションはそのまま残り、実際にグラフを必要とする操作だけが失敗します。 API トークンを明示的に指定したリクエストは、常にデータベースに照合されます。データベースに接続できない場合は 401 ではなく 503 が返されるため、クライアントは再認証せずにリトライできます。

対象範囲に注意してください。これはログイン状態の維持についてであり、起動についてではありません。QueryWeaver は起動時に引き続き FalkorDB に接続するため、接続できない状態では起動しません。そのため、停止中の再起動は対象外です。

ブラウザーログインの有効期間はデフォルトで 24 時間です。変更するには BROWSER_SESSION_TTL_HOURS を設定してください。ログアウトするとセッション Cookie が削除されます。ブラウザーには API トークンが発行されないため、失効させるトークンもありません。トークンは tokens API から明示的に作成し、同 API から失効させます。(以前のリリースで作成された api_token Cookie が残っている場合も、ログアウト時に削除され、トークンが失効します。)

メールアドレスでの登録は、アカウント作成前に確認されます

メールアドレスとパスワードで登録しても、アカウントは作成されません。送信された情報はいったん保留され、6 桁の確認コードがそのアドレスにメールで送信されます。登録フォームにそのコードが入力されたときに初めて、アカウントとセッションが作成されます。つまり、登録者が管理していないアドレスがアカウントになることはなく、システムの他の部分が扱う中途半端なユーザーも生まれません。

メールでリンクではなくコードを送るのは、フォームを送信したセッションにコードを戻す必要があるためです。リンクは受け取った人なら誰でも開けます。第三者があなたのアドレスと自分で選んだパスワードを使って登録し、あなたが一度クリックするだけで、その人がパスワードを知るアカウントが作成される可能性があります。ここでは、フォームに入力した本人だけが両方の情報を持つため、他人が代わりに登録することはできません。 このコードは1回限り有効で、15分後に期限切れとなり、間違った入力が数回続くと、保留中の登録は破棄されます。短いコードが安全なのは、試行回数が少ない間だけです。また、コードを利用できるのは、フォームを送信したブラウザーに限られます。送信ごとにチケットが発行され、そのブラウザーのセッションに保存されるため、チケットなしでコードを提示しても拒否されます。コードを入力すると、ブラウザーはそのままサインインします。パスワードは数分前に設定済みで、もう一度入力を求めても確認にはなりません。同じ画面からコードを再送できますが、アドレスごとのレート制限があります。送信回数の上限は保留中の登録ごとに設定されるため、保留中の登録が期限切れになるとリセットされ、同じアドレスでも後からいつでも再登録できます。期限切れのコードを入力しても、間違った入力として数えられず、登録も破棄されません。保留中の登録はそのまま残るため、同じ画面から新しいコードを送信できます。

開発環境では、メールサーバーが設定されていない場合、メッセージは送信されず、アプリケーションログに書き込まれます。そのため、ログからコードをコピーすれば、このフローを完了できます。これには APP_ENV=development が必要です。それ以外の環境では、設定されていないプロセスはコードをログに記録して成功を報告するのではなく、送信を拒否します。実際に送信するには、MAIL_SERVER(および MAIL_PORT、MAIL_USERNAME、MAIL_PASSWORD、MAIL_DEFAULT_SENDER)を設定してください。SMTP エンドポイントがあるプロバイダーであれば利用できます。EMAIL_VERIFICATION_TTL_MINUTES、EMAIL_VERIFICATION_MAX_ATTEMPTS、EMAIL_VERIFICATION_RESEND_SECONDS、EMAIL_VERIFICATION_MAX_SENDS で有効期間と上限を調整できます。全項目については .env.example を参照してください。

署名付きセッションクッキーのトレードオフは、有効期限前にサーバーから無効化できないことです。TTL によって被害を抑えられます。また、FASTAPI_SECRET_KEY をローテーションすると、すべてのブラウザーのログインが一度に無効になります。API トークンはサーバー側に記録が保持されるため、個別に、すぐに取り消すことができます。より短い有効期間が必要な場合は、BROWSER_SESSION_TTL_HOURS を短くしてください。

例

  1. グラフの一覧を取得(GET)

curl の例:

curl -s -H "Authorization: Bearer $TOKEN" \
   https://app.queryweaver.ai/graphs

Python の例:

import requests
resp = requests.get('https://app.queryweaver.ai/graphs', headers={'Authorization': f'Bearer {TOKEN}'})
print(resp.json())
  1. グラフのスキーマを取得(GET)

curl の例:

curl -s -H "Authorization: Bearer $TOKEN" \
   https://app.queryweaver.ai/graphs/my_database/data

Python の例:

resp = requests.get('https://app.queryweaver.ai/graphs/my_database/data', headers={'Authorization': f'Bearer {TOKEN}'})
print(resp.json())
  1. グラフを読み込む(POST)— JSON ペイロード
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
   -d '{"database": "my_database", "tables": [...]}' \
   https://app.queryweaver.ai/graphs

または、ファイルをアップロードします(multipart/form-data):

curl -H "Authorization: Bearer $TOKEN" -F "[email protected]" \
   https://app.queryweaver.ai/graphs
  1. グラフにクエリを実行(POST)— チャットベースの Text2SQL リクエストを実行

POST /graphs/{graph_id} エンドポイントは、少なくとも chat フィールド(メッセージの配列)を含む JSON 本文を受け付けます。このエンドポイントは、処理手順と最終的な SQL を、フロントエンドが使用する特殊な区切り文字で区切られた、サーバー送信メッセージのチャンクとしてストリーミングします。簡単なスクリプトから呼び出す場合は、ストリーミングされたメッセージから最終的な JSON オブジェクトを読み取ることができます。

ペイロードの例:

{
   "chat": ["How many users signed up last month?"],
   "result": [],
   "instructions": "Prefer PostgreSQL compatible SQL"
}

curl の例(簡易版。レスポンス全体を取得):

curl -s -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
   -d '{"chat": ["Count orders last week"]}' \
   https://app.queryweaver.ai/graphs/my_database

Python の例(ストリーム対応):

import requests
import json

url = 'https://app.queryweaver.ai/graphs/my_database'
headers = {'Authorization': f'Bearer {TOKEN}', 'Content-Type': 'application/json'}
with requests.post(url, headers=headers, json={"chat": ["Count orders last week"]}, stream=True) as r:
      # The server yields JSON objects delimited by a message boundary string
      boundary = '|||FALKORDB_MESSAGE_BOUNDARY|||'
      buffer = ''
      for chunk in r.iter_content(decode_unicode=True, chunk_size=1024):
            buffer += chunk
            while boundary in buffer:
                  part, buffer = buffer.split(boundary, 1)
                  if not part.strip():
                        continue
                  obj = json.loads(part)
                  print('STREAM:', obj)

注意点とヒント

  • グラフ ID はユーザーごとに名前空間が分かれています。API を直接呼び出す場合は、プレーンなグラフ ID を使用してください(サーバーが認証済みユーザーに基づいて名前空間を設定します)。アップロードしたファイルでは、database フィールドによって保存されるグラフ ID が決まります。
  • ストリーミングレスポンスには、中間の推論手順、追加の質問(クエリが曖昧またはトピック外の場合)、最終的な SQL が含まれます。フロントエンドは、メッセージ間の区切り文字列 |||FALKORDB_MESSAGE_BOUNDARY||| を想定しています。
  • 破壊的な SQL(INSERT/UPDATE/DELETE など)では、サービスはストリームに確認手順を含めます。このフローはフロントエンドが処理します。破壊的な操作を自動化する場合は、確認を適切に処理してください(コード内の ConfirmRequest モデルを参照)。

Python SDK

QueryWeaver Python SDK を使用すると、ウェブサーバーを実行せずに、Python アプリケーションから Text2SQL 機能を直接利用できます。

インストール
# SDK only (minimal dependencies)
pip install queryweaver

# With server dependencies (FastAPI, etc.)
pip install queryweaver[server]

# Development (includes testing tools)
pip install queryweaver[dev]
クイックスタート
import asyncio
from queryweaver import QueryWeaver

async def main():
    # Initialize with FalkorDB connection
    qw = QueryWeaver(falkordb_url="redis://localhost:6379")

    # Connect a PostgreSQL or MySQL database
    conn = await qw.connect_database("postgresql://user:pass@host:5432/mydb")
    print(f"Connected: {conn.database_id}")  # "mydb"

    # Convert natural language to SQL and execute — pass the database_id
    # returned by connect_database (un-prefixed; namespacing is internal).
    result = await qw.query(conn.database_id, "Show me all customers from NYC")
    print(result.sql_query)    # SELECT * FROM customers WHERE city = 'NYC'
    print(result.results)       # [{"id": 1, "name": "Alice", "city": "NYC"}, ...]
    print(result.ai_response)   # "Found 42 customers from NYC..."

    await qw.close()

asyncio.run(main())
コンテキストマネージャー
async with QueryWeaver(falkordb_url="redis://localhost:6379") as qw:
    conn = await qw.connect_database("postgresql://user:pass@host/mydb")
    result = await qw.query(conn.database_id, "Count orders by status")
# close() runs automatically, awaiting any in-flight background memory writes.
複数のインスタンス

複数の QueryWeaver インスタンスを、同じプロセス内で並行して実行できます。 各インスタンスは独自の FalkorDB 接続を保持し、すべての呼び出しでその接続を明示的に渡すため、競合する共有グローバル状態はありません。

async with QueryWeaver(falkordb_url="redis://host-a:6379", user_id="tenant_a") as a, \
           QueryWeaver(falkordb_url="redis://host-b:6379", user_id="tenant_b") as b:
    sales = await a.connect_database("postgresql://user:pass@host-a/sales")
    ops = await b.connect_database("postgresql://user:pass@host-b/ops")
    await a.query(sales.database_id, "Show top customers")
    await b.query(ops.database_id, "Count open tickets")
利用可能なメソッド
メソッド説明
connect_database(db_url)PostgreSQL/MySQL に接続し、スキーマを読み込みます
query(database, question)自然言語を SQL に変換して実行します
get_schema(database)データベーススキーマ(テーブルとリレーションシップ)を取得します
list_databases()接続済みのすべてのデータベースを一覧表示します
delete_database(database)FalkorDB からデータベースを削除します
refresh_schema(database)データベースの変更後にスキーマを再同期します
execute_confirmed(database, sql)確認済みの破壊的操作を実行します
高度なクエリオプション

複数ターンの会話、カスタム指示、リクエストごとの LLM オーバーライドを使用する場合:

from queryweaver import QueryWeaver, QueryRequest

request = QueryRequest(
    question="Show their recent orders",
    chat_history=["Show all customers from NYC"],
    result_history=["Found 42 customers..."],
    instructions="Use created_at for date filtering",
    # Optional per-request LLM overrides — bypass env-based config
    custom_api_key="sk-...",
    custom_model="openai/gpt-4.1",
)

result = await qw.query("mydb", request)
破壊的操作の処理

INSERT、UPDATE、DELETE 操作には確認が必要です:

result = await qw.query("mydb", "Delete inactive users")

if result.requires_confirmation:
    print(f"Destructive SQL: {result.sql_query}")
    # Execute after user confirms
    confirmed = await qw.execute_confirmed("mydb", result.sql_query)
要件
  • Python 3.12+
  • FalkorDB インスタンス(ローカルまたはリモート)
  • OpenAI または Azure OpenAI の API キー(LLM 用)
  • 対象の SQL データベース(PostgreSQL または MySQL)

開発

以下の手順で、ソースから QueryWeaver を実行および開発できます。

前提条件
  • Python 3.12+
  • uv(Python パッケージマネージャー)
  • FalkorDB インスタンス(ローカルまたはリモート)
  • Node.js と npm(React フロントエンド用)
インストールと設定

クイックスタート(開発に推奨):

# Clone the repo
git clone https://github.com/FalkorDB/QueryWeaver.git
cd QueryWeaver

# Install dependencies (backend + frontend) and start the dev server
make install
make run-dev

手動でセットアップする場合や、カスタム環境が必要な場合は、uv を使用してください:

# Install Python (backend) and frontend dependencies
uv sync

# Create a local environment file
cp .env.example .env
# Edit .env with your values (set APP_ENV=development for local development)
アプリをローカルで実行する
uv run uvicorn api.index:app --host 0.0.0.0 --port 5000 --reload

サーバーは http://localhost:5000 で利用できます。

または、このリポジトリに用意されている Make ターゲットを使ってアプリを実行できます:

make run-dev   # development server (reload, debug-friendly)
make run-prod  # production mode (ensure frontend build if needed)
フロントエンドのビルド(必要な場合)

フロントエンドは app/ にある最新の React + Vite アプリです。本番環境で実行する前、またはフロントエンドを変更した後にビルドしてください:

make install       # installs backend and frontend deps
make build-prod    # builds the frontend into app/dist/

# or manually
cd app
npm ci
npm run build
OAuth の設定

QueryWeaver は Google と GitHub の OAuth に対応しています。各プロバイダーの OAuth 認証情報を作成し、クライアント ID/シークレットを .env ファイルに貼り付けてください。

  • Google:認証済みオリジンとコールバック http://localhost:5000/login/google/authorized を設定します
  • GitHub:ホームページとコールバック http://localhost:5000/login/github/authorized を設定します
環境別の OAuth 設定

本番/ステージング環境へのデプロイでは、セッション Cookie はデフォルトで HTTPS 専用です。トリミングして小文字に変換した後に development と判定される APP_ENV の場合に限り、この設定は無効になります。そのため、デプロイ時にこの変数を設定し忘れても、Cookie は安全な設定のままです。プレーン HTTP のローカル実行では APP_ENV=development を設定してください。そうしないと、ブラウザーが Cookie を破棄し、OAuth の CSRF state mismatch エラーが発生します。

署名付きセッション Cookie は、ブラウザーで使用する唯一の認証情報です。api_token がブラウザーの Cookie に書き込まれることはありません。Cookie 内のベアラートークンは、有効期間中ずっとディスク上に平文で保存されるためです。そのため、プログラムから利用するクライアントは、代わりにトークン API からトークンを取得します。この変更前に発行されたセッションは引き続き使用できます。従来の api_token Cookie は引き続き受け入れられますが、新たに提供されることはありません。

# For production/staging (HTTPS-only session cookies - also the default)
APP_ENV=production

# For development (allows HTTP session cookies)
APP_ENV=development

重要:プレーン HTTP 環境で「mismatching_state: CSRF Warning!」エラーが発生する場合は、APP_ENV が development に設定されていることを確認してください。

AI/LLM の設定

QueryWeaver は複数の AI プロバイダーに対応しています。API キーを 1 つ設定すると、QueryWeaver が使用するプロバイダーを自動的に検出します。

優先順位: Ollama > OpenAI > Gemini > Anthropic > Cohere > Azure(デフォルト)

プロバイダーAPI キーデフォルトのモデル
OllamaOLLAMA_MODELollama/<your-model>, ollama/nomic-embed-text
OpenAIOPENAI_API_KEYopenai/gpt-4.1, openai/text-embedding-ada-002
Google GeminiGEMINI_API_KEYgemini/gemini-3-pro-preview, gemini/gemini-embedding-001
AnthropicANTHROPIC_API_KEYanthropic/claude-sonnet-4-5-20250929, voyage/voyage-3*
CohereCOHERE_API_KEYcohere/command-a-03-2025, cohere/embed-v4.0
Azure OpenAIAZURE_API_KEYazure/gpt-4.1, azure/text-embedding-ada-002

* Anthropic にはネイティブの埋め込み機能がありません。埋め込みを利用するには、VOYAGE_API_KEY または EMBEDDING_MODEL を設定する必要があります。設定しない場合、起動時にエラーが発生します。

任意:デフォルトのモデルを上書きする

COMPLETION_MODEL=gemini/gemini-3-pro-preview
EMBEDDING_MODEL=gemini/gemini-embedding-001

どちらも API キーのプロバイダーと一致している必要があります。

AI 設定を使用した Docker の例

OpenAI を使用する場合:

docker run -p 5000:5000 -it \
  -e FASTAPI_SECRET_KEY=your_secret_key \
  -e OPENAI_API_KEY=your_openai_api_key \
  falkordb/queryweaver

Google Gemini を使用する場合:

docker run -p 5000:5000 -it \
  -e FASTAPI_SECRET_KEY=your_secret_key \
  -e GEMINI_API_KEY=your_gemini_api_key \
  falkordb/queryweaver

Anthropic を使用する場合:

docker run -p 5000:5000 -it \
  -e FASTAPI_SECRET_KEY=your_secret_key \
  -e ANTHROPIC_API_KEY=your_anthropic_api_key \
  falkordb/queryweaver

Azure OpenAI を使用する場合:

docker run -p 5000:5000 -it \
  -e FASTAPI_SECRET_KEY=your_secret_key \
  -e AZURE_API_KEY=your_azure_api_key \
  -e AZURE_API_BASE=https://your-resource.openai.azure.com/ \
  -e AZURE_API_VERSION=2025-03-01-preview \
  falkordb/queryweaver

テスト

簡単な注意:多くのテストでは FalkorDB が利用可能である必要があります。必要に応じて、付属のヘルパーを使って Docker でテスト用 DB を起動してください。

前提条件
  • 開発用依存関係をインストールします:uv sync
  • FalkorDB を起動します(make docker-falkordb を参照)
  • Playwright ブラウザーをインストールします:uv run playwright install
クイックコマンド

推奨:Make ヘルパーを使用して開発/テスト環境を準備します(依存関係と Playwright ブラウザーをインストールします)。

# Prepare development/test environment (installs deps and Playwright browsers)
make setup-dev

または、E2E 専用のセットアップスクリプトを実行してから、手動でテストを実行できます。

# Prepare E2E test environment (installs browsers and other setup)
./setup_e2e_tests.sh

# Run all tests
make test

# Run unit tests only (faster)
make test-unit

# Run E2E tests (headless)
make test-e2e

# Run E2E tests with a visible browser for debugging
make test-e2e-headed
テストの種類
  • 単体テスト:個々のモジュールとユーティリティを対象にします。make test-unit または uv run python -m pytest tests/ -k "not e2e" で実行します。
  • エンドツーエンド(E2E)テスト:Playwright を使用して実行し、UI のフロー、OAuth、ファイルのアップロード、スキーマ処理、チャットクエリ、API エンドポイントをテストします。make test-e2e を使用します。

E2E テストの詳しい手順については、tests/e2e/README.md を参照してください。

CI/CD

GitHub Actions は、プッシュ時とプルリクエスト時に単体テストと E2E テストを実行します。失敗時には、デバッグ用のスクリーンショットとアーティファクトが保存されます。

トラブルシューティング

  • FalkorDB の接続に関する問題:DB ヘルパー make docker-falkordb を起動するか、ネットワーク/ホストの設定を確認してください。
  • Playwright/ブラウザーの問題:uv run playwright install でブラウザーをインストールし、システム依存関係がそろっていることを確認してください。
  • 環境変数が設定されていない場合:.env.example をコピーし、必須の値を入力してください。
  • OAuth の「mismatching_state: CSRF Warning!」エラー:APP_ENV を前後の空白を取り除いて小文字に変換した値が development でない場合、セッション Cookie は HTTPS 専用になります。HTTP 環境では APP_ENV=development を設定してください。HTTPS でデプロイする場合は、production または staging を設定するか、変数を設定しないでください。

プロジェクトの構成(概要)

  • api/ – FastAPI バックエンド
  • app/ – React + Vite フロントエンド
  • tests/ – 単体テストと E2E テスト

ライセンス

GNU Affero General Public License(AGPL)のもとでライセンスされています。LICENSE を参照してください。

Copyright FalkorDB Ltd. 2025

コメント

MCP は初めてですか?

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

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