コンテンツにスキップ

MCPサーバー

Schift MCPサーバーは、Claude Code、Cursor、ChatGPT、GeminiなどのMCP互換クライアントに対して、Schiftの知識レイヤーを公開します。これは、MCPツール呼び出しをバケット検索、ドキュメントアップロード、メモリ検索、ワークフロー操作に変換する、Schift Cloud REST APIの薄いラッパーです。

npmからパッケージをグローバルにインストールします:

Terminal window
npm install -g @schift-io/mcp

インストールされたバイナリはschift-mcpです。Node.js 18以降が必要です。

また、npxを使って直接実行することもできます:

Terminal window
npx -y @schift-io/mcp

すべてのMCPツールは、あなたの代わりにSchift Cloud APIを呼び出すため、サーバーにはSchift APIキーが必要です。

変数必須デフォルト説明
SCHIFT_API_KEYYes for stdio and self-hosted static mode{apiUrl}を呼び出すために使用されるSchift APIキー。
SCHIFT_API_BASE_URLNo{apiUrl}Schift APIのオリジン。
SCHIFT_USER_IDNoInferred from API keyソースリストのための明示的なユーザーID。
SCHIFT_DEFAULT_BUCKETNosearchおよびschift_searchのためのデフォルトバケット。
SCHIFT_MEMORY_BUCKETSNoAuthenticated user’s memory layerメモリ検索のために強制するカンマ区切りのバケットリスト。
SCHIFT_MCP_AUTH_MODENostatic locally, upstream-bearer in hosted deploysリモートクライアントの認証方法。
SCHIFT_MCP_BEARER_TOKENHTTP static mode自己ホストHTTPサーバーに認証するためにクライアントが使用するトークン。
SCHIFT_MCP_ALLOW_UNAUTHENTICATEDNoローカル専用の未認証HTTPテストのために1に設定。

注意: {mcpUrl}/mcpのSchiftホスティングエンドポイントでは、あなたのSchift APIキーまたはOAuthアクセストークンをMCPクライアントのベアラートークンとして送信してください。そのモードでは、サーバーは共有のSCHIFT_API_KEYを使用しません。

引数なしでschift-mcpを実行して、stdio MCPサーバーを起動します:

Terminal window
SCHIFT_API_KEY=sk_... SCHIFT_DEFAULT_BUCKET=docs schift-mcp

/mcpでストリーミングHTTPサーバーを起動します:

Terminal window
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で利用可能です。

ホスティングされたマルチユーザーモードでは、次のように実行します:

Terminal window
SCHIFT_MCP_AUTH_MODE=upstream-bearer schift-mcp --http

そのモードでは、各MCPクライアントがユーザーのSchiftトークンをAuthorization: Bearer ...として送信し、サーバーはそのトークンを使用してSchift APIを呼び出します。

自己ホストHTTPモード用のランダムなベアラートークンを生成します:

Terminal window
schift-mcp token

特定のMCPクライアントのための設定を印刷します。サポートされているターゲットはclaudecursorremotechatgptです。

Terminal window
schift-mcp init --client cursor --bucket docs
schift-mcp init --client claude --bucket docs
schift-mcp init --client remote --bucket docs --server-url https://mcp.your-domain.com/mcp

~/.claude/mcp_servers.jsonに追加します:

{
"schift": {
"command": "schift-mcp",
"env": {
"SCHIFT_API_KEY": "sk_...",
"SCHIFT_DEFAULT_BUCKET": "docs"
}
}
}

~/.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>/mcp
Authorization: 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/mcp
Authorization: Bearer <your-mcp-client-token>

ChatGPT互換の検索エイリアスです。SCHIFT_DEFAULT_BUCKETまたはユーザーのdefaultバケットを検索し、結果のID、タイトル、URLを返します。これは、あなたのSchiftの知識を検索し、公開ウェブを検索するものではありません。

ChatGPT互換のフェッチエイリアスです。前回のsearchで同じMCPセッション内で返されたIDのキャッシュされたコンテンツを返します。

POST /v2/buckets/{bucket}/searchを通じたSchiftネイティブのバケット検索です。

パラメータ必須説明
querystringYes検索クエリ。
bucketstringNoバケットIDまたは名前。デフォルトはSCHIFT_DEFAULT_BUCKET、次にdefault
collectionstringNobucketのための非推奨エイリアス。
top_knumberNo結果の数。デフォルトは10
filterobjectNoSchift検索に渡されるメタデータフィルター。
taskstringNoquestion_answeringなどの検索指示プリセット。
rerankbooleanNo再ランキングを有効にします。
rerank_top_knumberNo再ランキング結果の制限。

APIキーで利用可能なバケットのリストを表示します。ユーザーがバケットを指定していない場合、検索の前にこれを使用します。

バケット内の子コレクションのリストを表示します。

パラメータ必須説明
bucketstringYesバケットIDまたは名前。

テキストまたはbase64エンコードされたファイルをバケットにアップロードし、非同期の取り込みをキューに追加します。

パラメータ必須説明
bucketstringNoバケットIDまたは名前。デフォルトはSCHIFT_DEFAULT_BUCKET、次にdefault
filenamestringYesファイル名。
text / contentstringOne requiredUTF-8テキストコンテンツ。
content_base64stringOne requiredバイナリファイル用のbase64エンコードされたコンテンツ。
content_typestringNoMIMEタイプ、例えばtext/plainまたはapplication/pdf
metadataobjectNoドキュメントメタデータ。
collection_idstringNoオプションの子コレクションID。
ocr_strategystringNoSchiftアップロードに渡されるOCR戦略。
chunk_sizenumberNoチャンクサイズのオーバーライド。
chunk_overlapnumberNoチャンクオーバーラップのオーバーライド。

注意: textcontent_base64の両方を渡さないでください;どちらか一方を使用してください。

メモリツールは、Gmail、Notion、Slack、Linear、GitHub、カレンダー、ドライブなどの接続されたソースを含む認証されたユーザーのメモリレイヤーを検索します。

ユーザーのメモリバケットを横断して検索します。

パラメータ必須説明
querystringYes検索クエリ。
bucketstringNoオプションのバケットオーバーライド。
sourcesstring[]Nogmailnotionslackなどのソースタイプにフィルタリング。
tagsstring[]Nokey:valueタグフィルターをANDで組み合わせます。
top_knumberNo結果の数。デフォルトは20
temporalstringNobeforeafterbetweenas_oflatestのいずれか。
temporal_startnumberNo時間的開始タイムスタンプ。
temporal_endnumberNo時間的終了タイムスタンプ。

デフォルトでは、このツールはPOST /v1/memory/searchを呼び出し、Schiftがユーザーのmemory:{user_id}:*バケットを発見できるようにします。固定のバケットリストが必要な場合のみ、SCHIFT_MEMORY_BUCKETSを設定してください。

同期状態とインデックスされたドキュメント数を持つ接続されたメモリソースのリストを表示します。

ワークフローツールは、Schift APIを通じてインストールされたエージェントワークフロープロトコル(AWP)ワークフローを実行します。

組織にインストールされたワークフローのリストを表示します。publishedステータスのワークフローのみが実行可能であり、draftワークフローはまずSchiftコンソールでレビューされ、公開される必要があります。

schift_workflow_dry_run(workflow_id, inputs?)

Section titled “schift_workflow_dry_run(workflow_id, inputs?)”

指定された入力でワークフローをドライランします。これは副作用を生じず、レビューのためのブロックレベルの結果を返します。

公開されたワークフローを実行します。

パラメータ必須説明
workflow_idstringYesワークフローID。
inputsobjectNo入力名でキー付けされたワークフロー入力値。
modestringNosimulate(デフォルト)は副作用をステージし、liveはそれらを実行します。
approvalsobjectNoブロックごとの人間の承認、例えば{"review_issue": true}。明示的な人間の承認の後にのみ設定します。

ワークフローがまだドラフトの場合、このツールはstatus: "needs_review"を返し、人間が最初に公開する必要があることを説明するメッセージを返します。

{
"name": "schift_search",
"arguments": {
"query": "Q3 renewal terms",
"top_k": 5
}
}
{
"name": "schift_memory_search",
"arguments": {
"query": "acme renewal",
"sources": ["gmail", "notion"],
"tags": ["account:acme"],
"top_k": 10
}
}
{
"name": "schift_upload_document",
"arguments": {
"bucket": "docs",
"filename": "notes.md",
"text": "# プロジェクトノート\n\n重要な決定: v2バケットを使用。",
"content_type": "text/markdown",
"metadata": { "project": "migration" }
}
}
{
"name": "schift_workflow_run",
"arguments": {
"workflow_id": "wf_abc123",
"inputs": { "query": "最新のSlackスレッドを要約" },
"mode": "simulate"
}
}
  • ローカル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がローカルテストのために設定されている場合は例外です。
変数用途目的
SCHIFT_API_KEYstdio, self-hosted staticSchift API認証。
SCHIFT_API_BASE_URLAll modesSchift APIのオリジン。
SCHIFT_USER_IDAll modesオプションの明示的なユーザーID。
SCHIFT_DEFAULT_BUCKETAll modes検索とアップロードのためのデフォルトバケット。
SCHIFT_MEMORY_BUCKETSAll modesメモリ検索をこれらのバケットに強制します。
SCHIFT_MCP_AUTH_MODEHTTPstaticまたはupstream-bearer
SCHIFT_MCP_BEARER_TOKENHTTP staticクライアントからサーバーへのベアラートークン。
SCHIFT_MCP_ALLOW_UNAUTHENTICATEDHTTP local testingベアラートークンチェックをスキップします。
PORT / SCHIFT_MCP_PORTHTTPサーバーポート。デフォルトは8787