mcp.ymlΒΆ

---
- name: "πŸ”Œ Provision the managed MCP trigger workflow"
  ansible.builtin.command:
    argv:
      - python3
      - "-"
    stdin: "{{ lookup('file', 'python/provision/mcp.py') }}"
  environment:
    N8N_BASE: "{{ N8N_INTERNAL_API_URL }}"
    N8N_OWNER_EMAIL: "{{ N8N_OWNER_EMAIL }}"
    N8N_OWNER_PASSWORD: "{{ N8N_OWNER_PASSWORD }}"
    N8N_API_KEY_NAME: "{{ N8N_MCP_API_KEY_NAME }}"
    N8N_MCP_PATH: "{{ N8N_MCP_WEBHOOK_PATH }}"
    N8N_MCP_TOKEN: "{{ N8N_MCP_TOKEN }}"
    N8N_MCP_WORKFLOW: "{{ N8N_MCP_WORKFLOW_NAME }}"
    N8N_MCP_CREDENTIAL: "{{ N8N_MCP_CREDENTIAL_NAME }}"
  register: n8n_mcp_provision
  retries: 30
  delay: 10
  until: n8n_mcp_provision.rc == 0
  changed_when: n8n_mcp_provision.stdout.startswith('CHANGED')
  no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
  delegate_to: "{{ STACK_HOST }}"
  run_once: true

- name: "πŸ’Ύ Persist the MCP bearer so clients can read it"
  ansible.builtin.include_role:
    name: sys-token-store
    tasks_from: write.yml
  vars:
    sys_token_store_user_key: "{{ lookup('config', application_id, 'mcp.credential.owner') }}"
    sys_token_store_app: "{{ application_id }}"
    sys_token_store_token: "{{ N8N_MCP_TOKEN }}"

- name: "πŸ”Œ Reconcile the managed agent over every discovered MCP provider"
  ansible.builtin.command:
    argv:
      - python3
      - "-"
    stdin: "{{ lookup('file', 'python/provision/client.py') }}"
  environment:
    N8N_AI_CREDENTIAL: "{{ N8N_LITELLM_CREDENTIAL_NAME }}"
    N8N_API_KEY_NAME: "{{ N8N_MCP_API_KEY_NAME }}"
    N8N_BASE: "{{ N8N_INTERNAL_API_URL }}"
    N8N_CHAT_MODEL: "{{ LITELLM_CHAT_MODEL }}"
    N8N_CLIENT_WORKFLOW: "{{ N8N_MCP_CLIENT_WORKFLOW_NAME }}"
    N8N_MCP_PROVIDERS: "{{ N8N_MCP_PROVIDERS | to_json }}"
    N8N_OWNER_EMAIL: "{{ N8N_OWNER_EMAIL }}"
    N8N_OWNER_PASSWORD: "{{ N8N_OWNER_PASSWORD }}"
  register: n8n_client_provision
  changed_when: n8n_client_provision.stdout.startswith('CHANGED')
  no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
  delegate_to: "{{ STACK_HOST }}"
  run_once: true
  when: N8N_LITELLM_ENABLED | bool