Just as it is handy to be able to utilized environment variables in CLI commands, it would be handy to be able to utilize your environment in the arguments for MCP Inspector. However, it seems that currently the environment is not loaded until after the provided arguments are processed.
I came across this issue while trying to use the mcp-remote server tool. This gives me a way to authenticate to a remote MCP Server that uses Authorization: ApiKey headers, rather than Authorization: Bearer. See their docs here, specifically this suggested usage:
{
// rest of config...
"args": [
"mcp-remote",
"https://remote.mcp.server/sse",
"--header",
"Authorization:${AUTH_HEADER}" // note no spaces around ':'
],
"env": {
"AUTH_HEADER": "Bearer <auth-token>" // spaces OK in env vars
}
},
Because the AUTH_HEADER would have a space character, this seemed like a good fit. However, I observed logs like:
Query parameters: {"command":"npx","args":"mcp-remote http://localhost:5601/api/mcp --header Authorization:${MCP_REMOTE_AUTH_HEADER}","env":"{\"MCP_REMOTE_AUTH_HEADER\":\"ApiKey OBFUSCATED\"}","transportType":"stdio"}
STDIO transport: command=/Users/seanstory/.nvm/versions/node/v22.16.0/bin/npx, args=mcp-remote,http://localhost:5601/api/mcp,--header,Authorization:
Created server transport
note that the args and env both contain expected references to MCP_REMOTE_AUTH_HEADER, but the actual transport command ends with Authorization: (empty value).
Describe the solution you'd like
It would be ideal if the env was accessible when parsing the command, instead of only exported after forming up the command.
Describe alternatives you've considered
In this case, I was able to work around this by single-quoting my header, and pasting the API key value directly into the arguments. Like:
mcp-remote http://localhost:5601/api/mcp --header 'Authorization:ApiKey OBFUSCATED'
But I'd rather be able to use an environment variable.
Just as it is handy to be able to utilized environment variables in CLI commands, it would be handy to be able to utilize your environment in the
argumentsfor MCP Inspector. However, it seems that currently the environment is not loaded until after the provided arguments are processed.I came across this issue while trying to use the
mcp-remoteserver tool. This gives me a way to authenticate to a remote MCP Server that usesAuthorization: ApiKeyheaders, rather thanAuthorization: Bearer. See their docs here, specifically this suggested usage:Because the
AUTH_HEADERwould have a space character, this seemed like a good fit. However, I observed logs like:note that the
argsandenvboth contain expected references toMCP_REMOTE_AUTH_HEADER, but the actual transport command ends withAuthorization:(empty value).Describe the solution you'd like
It would be ideal if the
envwas accessible when parsing the command, instead of only exported after forming up the command.Describe alternatives you've considered
In this case, I was able to work around this by single-quoting my header, and pasting the API key value directly into the arguments. Like:
But I'd rather be able to use an environment variable.