Airflow MCP configuration properties
Use these properties to turn on Airflow MCP and to control how it connects to Airflow, how it authenticates, how it checks user identity, and how it handles DAG uploads.
Configuration file
/opt/mapr/data-access-gateway/conf/mcp-server.confThe file uses HOCON format. You can put Airflow properties inside an airflow
{} block, as shown in the examples below.
Property summary
| Property | Type | Default | Description |
airflow.enabled |
Boolean | false |
Turns on the Airflow MCP endpoint
(/airflow). |
mcp.airflow.rest-service-url |
String (URL) | Found automatically | Airflow REST API URL. Set this only if the automatic lookup doesn't work in your environment. |
airflow.auth.use-internal-jwt |
Boolean | false |
Signs in to Airflow with Airflow's own credentials instead of passing through the user's JWT. For development and testing only. |
airflow.auth.username |
String | None | Airflow username. Used only when
use-internal-jwt is
true. |
airflow.auth.password |
String | None | Airflow password. Used only when
use-internal-jwt is
true. |
mcp.airflow.skip-run-as-user-check |
Boolean | false |
Turns off the run_as_user impersonation
check. For development and testing only. |
mcp.airflow.dag-upload-max-size-bytes |
Integer (bytes) | 10 MB | Largest DAG file size allowed for upload. |
mcp.airflow.dag-stage-file-permissions |
String (POSIX permissions) | rw------- |
Permissions on staged DAG files while they wait for review. |
mcp.airflow.dag-review-temp-dir |
String (path) | <java.io.tmpdir>/airflow-dag-review |
Folder where DAG files are staged between review and upload. |
mcp.http.auth.introspection.enabled |
Boolean | true |
Enables live token introspection (RFC
7662https://datatracker.ietf.org/doc/html/rfc7662)
against the identity provider (Keycloak) to verify that an
access token has not been revoked or that the user has not
logged out. When disabled (false), the MCP
server performs only offline JWT validation (signature and
expiration check). |
mcp.http.auth.introspection.cache-ttl-ms |
Long (milliseconds) | 60000 (60 seconds) |
Controls how long (in milliseconds) a per-token introspection
result (active / inactive) is
cached before the gateway re-queries the identity provider.
Setting this value to 0 disables caching and
checks Keycloak on every request. |
Enabling the endpoint
airflow.enabled
/airflow endpoint is not
available.airflow {
enabled = true
}Airflow connection
mcp.airflow.rest-service-url
airflow {
enabled = true
rest-service-url = "https://<airflow_rest_api_hostname>:<port>"
}Authentication
airflow.auth.use-internal-jwt, airflow.auth.username, airflow.auth.passworduse-internal-jwt is true, Airflow MCP signs in
to Airflow with the Airflow username and password you give here, instead of the
user's JWT. Use this only in development or test setups where Keycloak isn't
available.airflow {
enabled = true
auth = {
use-internal-jwt = true
username = <airflow_username>
password = <airflow_password>
}
}Impersonation check
mcp.airflow.skip-run-as-user-check
Before starting a DAG, Airflow MCP checks that the run_as_user
set on the DAG and its tasks matches the user making the MCP request. If they don't
match, the request is rejected. Setting this property to true turns
off the whole check.
mcp.airflow.skip-run-as-user-check =
trueAirflow DAG upload
reviewDagForUpload stages the proposed DAG code in a temporary
file and returns a short-lived review token. Then, after the user approves the code,
uploadDag publishes the DAG to
Airflow.mcp.airflow.dag-upload-max-size-bytesmcp.airflow.dag-stage-file-permissionsrw-------, lets
only the Data Access Gateway service user read and write
them.mcp.airflow.dag-review-temp-dirThe folder where staged DAG files are kept until they're uploaded. The default is the
airflow-dag-review subfolder of the JVM temp folder
(java.io.tmpdir).