Salesforce Ai Agent Mcp Server について
Jira Cloud、Salesforce、n8n を接続し、Salesforce 設定を自動化する MCP サーバーです。Jira の要件取得、Salesforce メタデータの作成とデプロイ状況の確認に加え、n8n ワークフローの実行・状態確認ができます。
主な機能
- 01Jira Story の取得と更新
- 02Story の検索とコメント投稿
- 03Salesforce カスタム項目と検証ルールの作成
- 04メタデータのデプロイと状況確認
- 05SOQL クエリの実行
- 06n8n ワークフローの実行と状態確認
活用シーン
- 01Jira Story に基づく Salesforce 設定の作成
- 02項目やルールの検証とメタデータのデプロイ
- 03設定処理の結果を Jira で報告
- 04n8n による自動化ワークフローの編成
MCP 対応
Claude などの MCP クライアントに Jira、Salesforce、n8n のツールを提供し、Stdio と SSE の通信に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Salesforce AI Agent MCP Server
Claude が Jira Cloud、Salesforce(Tooling API と Metadata API)、n8n ワークフローに直接かつ構造化された形でアクセスできる、プロダクション品質の Model Context Protocol(MCP)サーバーです。
Salesforce Developer AI Agent プロジェクト向けに構築されています。この自動化パイプラインは、Jira ストーリーを読み取り、Salesforce の設定要件を解釈し、メタデータ(カスタム項目、入力規則など)を Salesforce に直接デプロイします。
アーキテクチャ
Claude Desktop / Claude Code / VS Code
│ (stdio or SSE)
▼
salesforce-ai-agent-mcp
┌───────────────────────────┐
│ Tools (12 total) │
│ ├── Jira (4 tools) │──► Jira Cloud REST API v3
│ ├── Salesforce (6 tools) │──► Salesforce Tooling + Metadata APIs
│ └── n8n (2 tools) │──► n8n Webhook + REST API
└───────────────────────────┘
前提条件
- Node.js ≥ 18
- npm ≥ 9
- API トークンを持つ Jira Cloud アカウント
- Connected App(OAuth 2.0)を設定した Salesforce 組織
- n8n インスタンス(任意。ワークフローのオーケストレーションに使用)
インストール
cd salesforce-ai-agent-mcp
npm install
npm run build
設定
.env.example を .env にコピーし、認証情報を入力します。
cp .env.example .env
Jira
| 変数 | 説明 |
|---|---|
JIRA_BASE_URL | 例:https://your-org.atlassian.net |
JIRA_EMAIL | Atlassian アカウントのメールアドレス |
JIRA_API_TOKEN | Atlassian API Tokens で生成します |
Salesforce
Username-Password OAuth flow を有効にした Connected App が必要です。
- Salesforce の設定 → App Manager → New Connected App に移動します
- OAuth 設定を有効にします
- スコープを追加します:
api、refresh_token - Consumer Key をコピーして
SF_CLIENT_IDに設定します - Consumer Secret をコピーして
SF_CLIENT_SECRETに設定します
| 変数 | 説明 |
|---|---|
SF_LOGIN_URL | https://login.salesforce.com(本番)または https://test.salesforce.com(Sandbox) |
SF_CLIENT_ID | Connected App の Consumer Key |
SF_CLIENT_SECRET | Connected App の Consumer Secret |
SF_USERNAME | Salesforce のユーザー名 |
SF_PASSWORD | Salesforce のパスワード |
SF_SECURITY_TOKEN | 設定 → 個人情報 → Reset Security Token でリセットします |
SF_API_VERSION | API バージョン。例:v61.0(デフォルト) |
n8n
| 変数 | 説明 |
|---|---|
N8N_BASE_URL | n8n インスタンスの URL。例:https://your-n8n.com |
N8N_API_KEY | n8n Settings → API → Create API Key で生成します |
使い方
stdio モード(Claude Desktop / Claude Code / VS Code)
npm start
# or for development:
npm run dev
SSE モード(リモート接続/n8n 連携用)
npm run start:sse
# or for development:
npm run dev:sse
SSE モードで利用できるエンドポイント:
GET http://localhost:3000/sse— クライアントはここに接続しますPOST http://localhost:3000/messages?sessionId=<id>— クライアントはここにメッセージを送信しますGET http://localhost:3000/health— 稼働確認用エンドポイント
ポートを変更するには:
MCP_PORT=8080 npm run start:sse
Claude Desktop への接続
以下を claude_desktop_config.json に追加します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"salesforce-ai-agent": {
"command": "node",
"args": ["/absolute/path/to/salesforce-ai-agent-mcp/dist/index.js"],
"env": {
"JIRA_BASE_URL": "https://your-org.atlassian.net",
"JIRA_EMAIL": "[email protected]",
"JIRA_API_TOKEN": "your_token",
"SF_LOGIN_URL": "https://login.salesforce.com",
"SF_CLIENT_ID": "your_client_id",
"SF_CLIENT_SECRET": "your_client_secret",
"SF_USERNAME": "[email protected]",
"SF_PASSWORD": "yourpassword",
"SF_SECURITY_TOKEN": "yourSecurityToken",
"N8N_BASE_URL": "https://your-n8n.com",
"N8N_API_KEY": "your_n8n_api_key"
}
}
}
}
Claude Code への接続(VS Code 拡張機能)
VS Code の settings.json に追加します(または MCP 拡張機能の UI から設定します)。
{
"mcp.servers": {
"salesforce-ai-agent": {
"command": "node",
"args": ["${workspaceFolder}/salesforce-ai-agent-mcp/dist/index.js"],
"env": {
"JIRA_BASE_URL": "https://your-org.atlassian.net",
"JIRA_EMAIL": "[email protected]",
"JIRA_API_TOKEN": "your_token",
"SF_LOGIN_URL": "https://login.salesforce.com",
"SF_CLIENT_ID": "your_client_id",
"SF_CLIENT_SECRET": "your_client_secret",
"SF_USERNAME": "[email protected]",
"SF_PASSWORD": "yourpassword",
"SF_SECURITY_TOKEN": "yourSecurityToken",
"N8N_BASE_URL": "https://your-n8n.com",
"N8N_API_KEY": "your_n8n_api_key"
}
}
}
}
または、このプロジェクトのルートにある mcp.json ファイルを VS Code の MCP 拡張機能で使用できます。ワークスペースのルートに配置すると、自動的に検出されます。
利用可能なツール(合計 12 個)
Jira ツール
jira_get_story
課題キーを指定して Jira ストーリーを取得します。概要、説明、受け入れ条件、ステータス、ラベル、およびすべてのカスタムフィールドを返します。
issueKey: "SFDC-123"
jira_update_story_status
Jira ストーリーを新しいワークフローステータスに遷移させます。
issueKey: "SFDC-123"
targetStatus: "In Progress" # must match an available transition
jira_post_comment
Jira ストーリーにコメントを投稿します(AI エージェントが結果を報告したり、確認を求めたりするために使用します)。
issueKey: "SFDC-123"
body: "Deployed Customer_Tier__c field to Account. Deployment ID: 0Af..."
jira_search_stories
JQL に基づいてストーリーを検索します。
jql: "label = \"sf-config\" AND status = \"To Do\" AND project = SFDC"
maxResults: 25
Salesforce ツール
salesforce_get_object_fields
Salesforce オブジェクトのすべての項目を記述します。
objectName: "Account"
salesforce_create_custom_field
Tooling API を使用してカスタム項目を作成します。
objectName: "Account"
fieldLabel: "Customer Tier"
fieldApiName: "Customer_Tier" # __c added automatically
fieldType: "Picklist"
picklistValues: ["Platinum", "Gold", "Silver", "Bronze"]
description: "Tier classification for account segmentation"
参照項目の例:
objectName: "Case"
fieldLabel: "Related Contract"
fieldApiName: "Related_Contract"
fieldType: "Lookup"
referenceTo: "Contract"
salesforce_create_validation_rule
Tooling API を使用して入力規則を作成します。
objectName: "Account"
ruleName: "Require_Phone_For_Hot_Leads"
errorConditionFormula: "AND(Rating = \"Hot\", ISBLANK(Phone))"
errorMessage: "Phone number is required for Hot-rated accounts"
errorDisplayField: "Phone"
active: true
salesforce_deploy_metadata
base64 でエンコードされた ZIP からメタデータのデプロイを開始します。
zipFile: "<base64-encoded-zip>"
checkOnly: false
testLevel: "RunLocalTests"
rollbackOnError: true
salesforce_get_deployment_status
デプロイのステータスを確認します。
deploymentId: "0AfXXXXXXXXXXXXX"
salesforce_query
検証および確認のために SOQL を実行します。
soql: "SELECT Id, Name, Customer_Tier__c FROM Account WHERE Rating = 'Hot' LIMIT 10"
n8n ツール
n8n_trigger_workflow
Webhook URL を使用して n8n ワークフローをトリガーします。
webhookUrl: "https://your-n8n.com/webhook/abc123"
payload: {
"issueKey": "SFDC-123",
"environment": "sandbox",
"triggeredBy": "claude"
}
n8n_get_execution_status
n8n の実行ステータスを確認します。
executionId: "12345"
AI エージェントのワークフロー例
You: "Process Jira story SFDC-456 and deploy the Salesforce configuration"
Claude:
1. jira_get_story(issueKey: "SFDC-456")
→ reads requirements: "Add Customer_Tier picklist to Account"
2. salesforce_get_object_fields(objectName: "Account")
→ confirms Customer_Tier__c doesn't exist yet
3. salesforce_create_custom_field(
objectName: "Account",
fieldLabel: "Customer Tier",
fieldApiName: "Customer_Tier",
fieldType: "Picklist",
picklistValues: ["Platinum", "Gold", "Silver"]
)
→ creates the field
4. salesforce_query(soql: "SELECT QualifiedApiName FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = 'Account' AND QualifiedApiName = 'Customer_Tier__c'")
→ verifies the field was created
5. jira_post_comment(
issueKey: "SFDC-456",
body: "✅ Customer_Tier__c picklist field created on Account object with values: Platinum, Gold, Silver."
)
6. jira_update_story_status(issueKey: "SFDC-456", targetStatus: "Done")
ログ
すべてのログは構造化 JSON として stderr に書き込まれるため、MCP の stdio トランスポートに干渉することはありません。
環境変数でログレベルを設定します。
LOG_LEVEL=debug npm start # debug | info | warn | error
開発
# Type-check only
npm run typecheck
# Build
npm run build
# Dev with hot reload (stdio)
npm run dev
# Dev with hot reload (SSE)
npm run dev:sse
プロジェクト構成
salesforce-ai-agent-mcp/
├── src/
│ ├── index.ts # Entry point — stdio & SSE transport setup
│ ├── server.ts # McpServer creation & tool registration
│ ├── tools/
│ │ ├── jira.ts # Jira tool definitions (4 tools)
│ │ ├── salesforce.ts # Salesforce tool definitions (6 tools)
│ │ └── n8n.ts # n8n tool definitions (2 tools)
│ ├── clients/
│ │ ├── jiraClient.ts # Jira REST API v3 client
│ │ ├── salesforceClient.ts # Salesforce Tooling/Metadata API + OAuth
│ │ ├── n8nClient.ts # n8n webhook + REST API client
│ │ └── logger.ts # Structured JSON logger (stderr)
│ └── types/
│ └── index.ts # Shared TypeScript types
├── .env.example # All required environment variables
├── mcp.json # VS Code MCP extension manifest
├── package.json
├── tsconfig.json
└── README.md
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。