crmcloud について
crmcloudは、Salesforce RESTデータAPIを通じてorgデータにアクセスするコマンドラインツール兼stdio MCPサーバーです。SOQL・SOSL検索、SObjectメタデータとレコード操作、orgの制限やトークンのユーザー情報を必要とする利用者向けで、org管理やメタデータのデプロイ機能はありません。
主な機能
- 01SOQLクエリとSOSL検索を実行
- 02SObjectの一覧表示と詳細取得
- 03レコードの作成、取得、更新、削除
- 04orgのAPI制限を確認
- 05アクセストークンのユーザー情報を取得
活用シーン
- 01SOQLまたはSOSLでSalesforceレコードを検索
- 02SObjectの項目とリレーションを確認
- 03Salesforceレコードを管理
- 04API制限とトークンのユーザー情報を確認
MCP 対応
stdio MCPサーバーは、SOQL・SOSL、SObjectの検索と詳細取得、レコードCRUD、orgの制限、ユーザー情報のツールを提供します。呼び出しにはSALESFORCE_INSTANCE_URLとSALESFORCE_ACCESS_TOKENを使い、Salesforce REST APIにアクセスします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | Salesforce 組織に対して実行する SOQL クエリ。 |
詳細
crmcloud
crmcloud は、1 つの Salesforce 組織をありのままに映す、シンプルな窓口です。組織内のすべては、いくつかの共通する構造を基盤としています。フィールドを持つ SObject、種別と ID で指定するレコード、質問に使う SOQL、オブジェクトを横断して検索する SOSL です。crmcloud はこれらの構造をそのまま扱い、クエリの実行、検索、オブジェクトの一覧表示と説明の取得、レコードの作成・読み取り・更新・削除を行います。あわせて、組織の制限と現在のユーザー情報も取得できます。1 つのバイナリで、コマンドラインインターフェースと stdio MCP サーバーの両方を提供します。
すべての呼び出しは、次の 2 つの環境変数で設定します。
SALESFORCE_INSTANCE_URL— 組織のインスタンス URL です。例:https://your-org.my.salesforce.com(末尾のスラッシュがあっても構いません)。SALESFORCE_ACCESS_TOKEN— 組織のアクセストークンです。Authorization: Bearerヘッダーで送信され、出力されることはありません。
どちらかの変数が設定されていない場合、リクエストを送信する前にすべての呼び出しが失敗し、不足している変数名を示すエラーが返されます。データの呼び出し先は <instance>/services/data/v59.0 です。ユーザー情報の呼び出し先は、Salesforce が情報を提供する <instance>/services/oauth2/userinfo です。
意図的にコア機能に絞っています。より広範な Salesforce ツール群のうち、sf CLI の中核となる組織およびスクラッチ組織の管理、Apex と Lightning のツール、メタデータのデプロイと取得、一括データのインポートとエクスポートは含まれていません。crmcloud が対応するのは REST データサーフェスのみです。
インストール
npx @reneturcios/crmcloud sobjects
または、コンテナーイメージを実行します。
docker run -i -e SALESFORCE_INSTANCE_URL -e SALESFORCE_ACCESS_TOKEN ghcr.io/cloudcorprecords/crmcloud
コンテナーはデフォルトで MCP サーバーを起動します(下記を参照)。CLI として使うには、CLI 引数を渡してください。
CLI
export SALESFORCE_INSTANCE_URL=https://your-org.my.salesforce.com
export SALESFORCE_ACCESS_TOKEN=<redacted>
crmcloud query "SELECT Id, Name FROM Account LIMIT 5"
crmcloud search "FIND {Acme} IN NAME FIELDS RETURNING Account(Id, Name)"
crmcloud sobjects
crmcloud describe Account
crmcloud get Account 001xx000003DGb2AAG
crmcloud create Account '{"Name":"Acme","Industry":"Technology"}'
crmcloud update Account 001xx000003DGb2AAG '{"Name":"Acme II"}'
crmcloud delete Account 001xx000003DGb2AAG
crmcloud limits
crmcloud userinfo
crmcloud --version
各コマンドは、上流から返された JSON ペイロードを出力します。Salesforce は更新と削除に対して空の 204 を返すため、この 2 つのコマンドは代わりに {"success": true, "id": ..., "sobject": ...} という簡潔な確認情報を出力します。終了コード:成功時は 0、呼び出しの失敗時(環境変数の不足や API エラーを含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
1 つのバイナリで両方のインターフェースを提供します。mcp サブコマンドで stdio MCP サーバーを起動します。
npx -y @reneturcios/crmcloud mcp
MCP クライアントの設定:
{
"mcpServers": {
"crmcloud": {
"command": "npx",
"args": ["-y", "@reneturcios/crmcloud", "mcp"],
"env": {
"SALESFORCE_INSTANCE_URL": "https://your-org.my.salesforce.com",
"SALESFORCE_ACCESS_TOKEN": "..."
}
}
}
}
ツール
| ツール | 入力 | 返される内容 |
|---|---|---|
run_soql_query | query(必須) | SOQL の結果セット:合計件数、完了フラグ、レコード。 |
search_records | search(必須) | SOSL の検索レコード。 |
list_sobjects | (なし) | 説明グローバルメタデータを含む、組織の SObject 一覧。 |
describe_sobject | sobject(必須) | オブジェクトのフィールド、子リレーション、レコードタイプ。 |
get_record | sobject、id(必須) | レコードのフィールド値。 |
create_record | sobject、fields(必須) | 上流から返される作成結果:新しいレコードの id、success、errors。 |
update_record | sobject、id、fields(必須) | 成功の確認情報(上流は本文なしの 204 を返します)。 |
delete_record | sobject、id(必須) | 成功の確認情報(上流は本文なしの 204 を返します)。 |
get_org_limits | (なし) | 組織の API 使用制限と残量。 |
get_user_info | (なし) | アクセストークンに紐づくユーザーの情報。 |
API エラーでは、HTTP ステータスに加え、組織から返された場合は Salesforce 独自のエラーメッセージとエラーコードが表示されます。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。