The core logic behind using an External C2 is to hide your implant output inside legitimate network traffic. This is precisely the purpose for which Teams C2 was designed - to assist operators in blending seamlessly into legitimate network traffic.
username, password, tenant-id, client-id (From App registration), target_user_id (The connector account object-id) and the server_url pointing to bruteratel. You will need to do the same for the connector in Config.h .(Note: Before trying out the python3 server and the connector. Please log into the https://developer.microsoft.com/en-us/graph/graph-explorer with the accounts and check if you can properly authenticate and query the graph APIs. Also, sometimes the changes made in azure portal take a while to sync properly.)

upload, download, sharpinline, sharpreflect or any other command that requires sending the payload over HTTP, you should first check the size of the file because if you try to send files larger then 5MB then this can take from 1 to more hours and you will completely block I/O until everything gets send. Please do not try to speed up this process by setting sleep 1 because you will often hit rate-limiting issues causing even more delays. My best advise is to use anywhere between 3 and 10 for sleep.
$ claude mcp add teamsc2 \
-- python -m otcore.mcp_server <graph>