Enable interpolation when doing Meta.parse()

I’m trying to build a toy program using the nonlinear facility of JuMP. The general structure looks like this:

function solve(constraint::String)
    model = Model()
    vars = @variable(model, [1:10], base_name="x")
    …
    cons_expr = Meta.parse(constraint)
    add_NL_constraint(model, cons_expr)
end

The problem here is: function add_NL_constraint accepts an Expr of JuMP variables, which are created in solve. Therefore, directly parsing the input string (such as the above code) will not work.

To be more specific, that means:

add_NL_constraint(model, :($(vars[1])==0)) # OK
add_NL_constraint(model, Meta.parse("vars[1]==0")) # not OK, not JuMP variables
add_NL_constraint(model, Meta.parse("\$(vars[1])==0")) # not OK, does not trigger interpolation

Is there a way to enable interpolation in Meta.parse(), so that the last approach can work?