MCPサーバー
Schift MCPサーバーは、Claude Code、Cursor、ChatGPT、GeminiなどのMCP互換クライアントに対して、Schiftの知識レイヤーを公開します。これは、MCPツール呼び出しをバケット検索、ドキュメントアップロード、メモリ検索、ワークフロー操作に変換する、Schift Cloud REST APIの薄いラッパーです。
インストール
Section titled “インストール”npmからパッケージをグローバルにインストールします:
npm install -g @schift-io/mcpインストールされたバイナリはschift-mcpです。Node.js 18以降が必要です。
また、npxを使って直接実行することもできます:
npx -y @schift-io/mcpすべてのMCPツールは、あなたの代わりにSchift Cloud APIを呼び出すため、サーバーにはSchift APIキーが必要です。
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SCHIFT_API_KEY | Yes for stdio and self-hosted static mode | — | {apiUrl}を呼び出すために使用されるSchift APIキー。 |
SCHIFT_API_BASE_URL | No | {apiUrl} | Schift APIのオリジン。 |
SCHIFT_USER_ID | No | Inferred from API key | ソースリストのための明示的なユーザーID。 |
SCHIFT_DEFAULT_BUCKET | No | — | searchおよびschift_searchのためのデフォルトバケット。 |
SCHIFT_MEMORY_BUCKETS | No | Authenticated user’s memory layer | メモリ検索のために強制するカンマ区切りのバケットリスト。 |
SCHIFT_MCP_AUTH_MODE | No | static locally, upstream-bearer in hosted deploys | リモートクライアントの認証方法。 |
SCHIFT_MCP_BEARER_TOKEN | HTTP static mode | — | 自己ホストHTTPサーバーに認証するためにクライアントが使用するトークン。 |
SCHIFT_MCP_ALLOW_UNAUTHENTICATED | No | — | ローカル専用の未認証HTTPテストのために1に設定。 |
注意:
{mcpUrl}/mcpのSchiftホスティングエンドポイントでは、あなたのSchift APIキーまたはOAuthアクセストークンをMCPクライアントのベアラートークンとして送信してください。そのモードでは、サーバーは共有のSCHIFT_API_KEYを使用しません。
引数なしでschift-mcpを実行して、stdio MCPサーバーを起動します:
SCHIFT_API_KEY=sk_... SCHIFT_DEFAULT_BUCKET=docs schift-mcpschift-mcp --http
Section titled “schift-mcp --http”/mcpでストリーミングHTTPサーバーを起動します:
SCHIFT_API_KEY=sk_... \SCHIFT_DEFAULT_BUCKET=docs \SCHIFT_MCP_BEARER_TOKEN=your-mcp-client-token \schift-mcp --httpデフォルトポートは8787です。PORTまたはSCHIFT_MCP_PORTを設定して変更できます。ヘルスチェックはGET /healthzで利用可能です。
ホスティングされたマルチユーザーモードでは、次のように実行します:
SCHIFT_MCP_AUTH_MODE=upstream-bearer schift-mcp --httpそのモードでは、各MCPクライアントがユーザーのSchiftトークンをAuthorization: Bearer ...として送信し、サーバーはそのトークンを使用してSchift APIを呼び出します。
schift-mcp token
Section titled “schift-mcp token”自己ホストHTTPモード用のランダムなベアラートークンを生成します:
schift-mcp tokenschift-mcp init --client <target>
Section titled “schift-mcp init --client <target>”特定のMCPクライアントのための設定を印刷します。サポートされているターゲットはclaude、cursor、remote、chatgptです。
schift-mcp init --client cursor --bucket docsschift-mcp init --client claude --bucket docsschift-mcp init --client remote --bucket docs --server-url https://mcp.your-domain.com/mcpクライアントへの接続
Section titled “クライアントへの接続”Claude Code
Section titled “Claude Code”~/.claude/mcp_servers.jsonに追加します:
{ "schift": { "command": "schift-mcp", "env": { "SCHIFT_API_KEY": "sk_...", "SCHIFT_DEFAULT_BUCKET": "docs" } }}Cursor
Section titled “Cursor”~/.cursor/mcp.jsonに追加します:
{ "mcpServers": { "schift": { "command": "schift-mcp", "env": { "SCHIFT_API_KEY": "sk_...", "SCHIFT_DEFAULT_BUCKET": "docs" } } }}ChatGPTおよびリモートMCPクライアント
Section titled “ChatGPTおよびリモートMCPクライアント”Schiftホスティングエンドポイント({mcpUrl}/mcp)を使用します:
<your-mcp-host>/mcpAuthorization: Bearer <your-schift-api-key>OpenAIのResponses APIスタイルの設定:
{ "type": "mcp", "server_label": "schift", "server_url": "<your-mcp-host>/mcp", "headers": { "Authorization": "Bearer <your-schift-api-key>" }, "allowed_tools": ["search", "fetch", "schift_search", "schift_memory_search"], "require_approval": "never"}自己ホストされたリモートサーバーの場合、デプロイしたURLとSCHIFT_MCP_BEARER_TOKENの値を使用します:
https://mcp.your-domain.com/mcpAuthorization: Bearer <your-mcp-client-token>search(query)
Section titled “search(query)”ChatGPT互換の検索エイリアスです。SCHIFT_DEFAULT_BUCKETまたはユーザーのdefaultバケットを検索し、結果のID、タイトル、URLを返します。これは、あなたのSchiftの知識を検索し、公開ウェブを検索するものではありません。
fetch(id)
Section titled “fetch(id)”ChatGPT互換のフェッチエイリアスです。前回のsearchで同じMCPセッション内で返されたIDのキャッシュされたコンテンツを返します。
schift_search(query, ...)
Section titled “schift_search(query, ...)”POST /v2/buckets/{bucket}/searchを通じたSchiftネイティブのバケット検索です。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
query | string | Yes | 検索クエリ。 |
bucket | string | No | バケットIDまたは名前。デフォルトはSCHIFT_DEFAULT_BUCKET、次にdefault。 |
collection | string | No | bucketのための非推奨エイリアス。 |
top_k | number | No | 結果の数。デフォルトは10。 |
filter | object | No | Schift検索に渡されるメタデータフィルター。 |
task | string | No | question_answeringなどの検索指示プリセット。 |
rerank | boolean | No | 再ランキングを有効にします。 |
rerank_top_k | number | No | 再ランキング結果の制限。 |
schift_list_buckets()
Section titled “schift_list_buckets()”APIキーで利用可能なバケットのリストを表示します。ユーザーがバケットを指定していない場合、検索の前にこれを使用します。
schift_list_bucket_collections(bucket)
Section titled “schift_list_bucket_collections(bucket)”バケット内の子コレクションのリストを表示します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
bucket | string | Yes | バケットIDまたは名前。 |
schift_upload_document(...)
Section titled “schift_upload_document(...)”テキストまたはbase64エンコードされたファイルをバケットにアップロードし、非同期の取り込みをキューに追加します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
bucket | string | No | バケットIDまたは名前。デフォルトはSCHIFT_DEFAULT_BUCKET、次にdefault。 |
filename | string | Yes | ファイル名。 |
text / content | string | One required | UTF-8テキストコンテンツ。 |
content_base64 | string | One required | バイナリファイル用のbase64エンコードされたコンテンツ。 |
content_type | string | No | MIMEタイプ、例えばtext/plainまたはapplication/pdf。 |
metadata | object | No | ドキュメントメタデータ。 |
collection_id | string | No | オプションの子コレクションID。 |
ocr_strategy | string | No | Schiftアップロードに渡されるOCR戦略。 |
chunk_size | number | No | チャンクサイズのオーバーライド。 |
chunk_overlap | number | No | チャンクオーバーラップのオーバーライド。 |
注意:
textとcontent_base64の両方を渡さないでください;どちらか一方を使用してください。
メモリツール
Section titled “メモリツール”メモリツールは、Gmail、Notion、Slack、Linear、GitHub、カレンダー、ドライブなどの接続されたソースを含む認証されたユーザーのメモリレイヤーを検索します。
schift_memory_search(query, ...)
Section titled “schift_memory_search(query, ...)”ユーザーのメモリバケットを横断して検索します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
query | string | Yes | 検索クエリ。 |
bucket | string | No | オプションのバケットオーバーライド。 |
sources | string[] | No | gmail、notion、slackなどのソースタイプにフィルタリング。 |
tags | string[] | No | key:valueタグフィルターをANDで組み合わせます。 |
top_k | number | No | 結果の数。デフォルトは20。 |
temporal | string | No | before、after、between、as_of、latestのいずれか。 |
temporal_start | number | No | 時間的開始タイムスタンプ。 |
temporal_end | number | No | 時間的終了タイムスタンプ。 |
デフォルトでは、このツールはPOST /v1/memory/searchを呼び出し、Schiftがユーザーのmemory:{user_id}:*バケットを発見できるようにします。固定のバケットリストが必要な場合のみ、SCHIFT_MEMORY_BUCKETSを設定してください。
schift_memory_list_sources()
Section titled “schift_memory_list_sources()”同期状態とインデックスされたドキュメント数を持つ接続されたメモリソースのリストを表示します。
ワークフローツール
Section titled “ワークフローツール”ワークフローツールは、Schift APIを通じてインストールされたエージェントワークフロープロトコル(AWP)ワークフローを実行します。
schift_workflow_list()
Section titled “schift_workflow_list()”組織にインストールされたワークフローのリストを表示します。publishedステータスのワークフローのみが実行可能であり、draftワークフローはまずSchiftコンソールでレビューされ、公開される必要があります。
schift_workflow_dry_run(workflow_id, inputs?)
Section titled “schift_workflow_dry_run(workflow_id, inputs?)”指定された入力でワークフローをドライランします。これは副作用を生じず、レビューのためのブロックレベルの結果を返します。
schift_workflow_run(workflow_id, ...)
Section titled “schift_workflow_run(workflow_id, ...)”公開されたワークフローを実行します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
workflow_id | string | Yes | ワークフローID。 |
inputs | object | No | 入力名でキー付けされたワークフロー入力値。 |
mode | string | No | simulate(デフォルト)は副作用をステージし、liveはそれらを実行します。 |
approvals | object | No | ブロックごとの人間の承認、例えば{"review_issue": true}。明示的な人間の承認の後にのみ設定します。 |
ワークフローがまだドラフトの場合、このツールはstatus: "needs_review"を返し、人間が最初に公開する必要があることを説明するメッセージを返します。
デフォルトバケットを検索
Section titled “デフォルトバケットを検索”{ "name": "schift_search", "arguments": { "query": "Q3 renewal terms", "top_k": 5 }}ソースとタグでメモリを検索
Section titled “ソースとタグでメモリを検索”{ "name": "schift_memory_search", "arguments": { "query": "acme renewal", "sources": ["gmail", "notion"], "tags": ["account:acme"], "top_k": 10 }}ドキュメントをアップロード
Section titled “ドキュメントをアップロード”{ "name": "schift_upload_document", "arguments": { "bucket": "docs", "filename": "notes.md", "text": "# プロジェクトノート\n\n重要な決定: v2バケットを使用。", "content_type": "text/markdown", "metadata": { "project": "migration" } }}ワークフローを実行
Section titled “ワークフローを実行”{ "name": "schift_workflow_run", "arguments": { "workflow_id": "wf_abc123", "inputs": { "query": "最新のSlackスレッドを要約" }, "mode": "simulate" }}セキュリティモデル
Section titled “セキュリティモデル”- ローカルstdioモード: MCPクライアントは、
SCHIFT_API_KEYを環境に持ってschift-mcpを起動します。別のMCPベアラートークンは必要ありません。 - 自己ホストHTTP静的モード:
SCHIFT_MCP_BEARER_TOKENを設定し、クライアントがAuthorization: Bearer <token>を送信します。サーバーは静的なSCHIFT_API_KEYを使用してSchiftを呼び出します。 - ホスティングされたupstream-bearerモード: MCPクライアントは、自身のSchiftトークンをベアラーとして送信します。サーバーはそのトークンをSchift APIに転送し、共有の
SCHIFT_API_KEYを保存しません。 - HTTPモードは、
SCHIFT_MCP_BEARER_TOKENがないと起動を拒否します。ただし、SCHIFT_MCP_AUTH_MODE=upstream-bearerまたはSCHIFT_MCP_ALLOW_UNAUTHENTICATED=1がローカルテストのために設定されている場合は例外です。
環境変数の概要
Section titled “環境変数の概要”| 変数 | 用途 | 目的 |
|---|---|---|
SCHIFT_API_KEY | stdio, self-hosted static | Schift API認証。 |
SCHIFT_API_BASE_URL | All modes | Schift APIのオリジン。 |
SCHIFT_USER_ID | All modes | オプションの明示的なユーザーID。 |
SCHIFT_DEFAULT_BUCKET | All modes | 検索とアップロードのためのデフォルトバケット。 |
SCHIFT_MEMORY_BUCKETS | All modes | メモリ検索をこれらのバケットに強制します。 |
SCHIFT_MCP_AUTH_MODE | HTTP | staticまたはupstream-bearer。 |
SCHIFT_MCP_BEARER_TOKEN | HTTP static | クライアントからサーバーへのベアラートークン。 |
SCHIFT_MCP_ALLOW_UNAUTHENTICATED | HTTP local testing | ベアラートークンチェックをスキップします。 |
PORT / SCHIFT_MCP_PORT | HTTP | サーバーポート。デフォルトは8787。 |