\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
vardef through(expr a, b, o) =
save t; numeric t; t = 1+o/abs(a-b);
t[b,a] -- t[a,b]
enddef;
vardef excircle(expr A, B, C) =
save a, b, m, t; pair a, b, m, t;
a = A + unitvector (C-A) - unitvector (B-A);
b = B + unitvector (A-B) + unitvector (C-B);
m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
t-m = whatever * (B-A) rotated 90;
fullcircle scaled 2 abs (t-m) shifted m
enddef;
beginfig(1);
pair A, B, C;
A = origin; B = 233 dir 10; C = 144 dir 70;
pair a, b, m, t;
a = A + 22 unitvector (C-A) - 22 unitvector (B-A);
b = B + 22 unitvector (A-B) + 22 unitvector (C-B);
m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
t-m = whatever * (B-A) rotated 90;