Releases: Bandwidth/mcp-server
v0.3.0
The release where the MCP server became a real product. v0.2.0 was a thin OpenAPI→MCP wrapper with Basic Auth and one-shot calls. v0.3.0 lets an AI agent authenticate, provision from zero, place a call or send a message, and respond to live call/message webhooks in real time — plus the host, profile, and packaging work to run it reliably.
✨ Highlights
OAuth2 client credentials (replaces Basic Auth)
BW_CLIENT_ID/BW_CLIENT_SECRETexchanged for a bearer token; account ID auto-discovered from the JWT — no moreBW_ACCOUNT_IDrequired.- New
setCredentials/clearCredentialstools for mid-session auth (the zero-to-one onboarding path).
Live voice & messaging
- Callback HTTP routes for inbound messages and voice answer/gather/disconnect, served on the same transport as the MCP tools.
- In-memory EventStore bridges webhooks → agent via
getCallbackEvents/getInboundMessages. generateBXML+respondToCallback— pre-queue BXML before answer and drive a two-way call.configureCallbackswires a Bandwidth app's webhook URLs at the server automatically.
Account discovery
listApplications,listPhoneNumbers,createApplication— hand-written tools over the Dashboard XML API (whichfrom_openapican't generate).
Build Registration (formerly Express)
- Single
createRegistrationtool kicks off a Bandwidth Build trial account; SMS/email verification finishes in the user's browser.
Hosted mode & host resolution
streamable-http/ssetransports,BW_MCP_BASE_URL, loopback-default bind;setCredentialswithheld over HTTP for safety.BW_ENVIRONMENT=test|uatplus per-host overrides (BW_API_URL,BW_VOICE_URL,BW_MESSAGING_URL), centralized so OpenAPI-derived tools honor them too.- Opt-in
cloudflareddev tunnel (BW_MCP_DEV_TUNNEL) for local callback testing.
Context-window sanity
- Tool profiles (voice / messaging / lookup / onboarding / recordings / full) — curated default instead of dumping 400+ tools.
- Dynamic, tool-aware instructions sent at MCP init.
⚠️ Breaking changes
- Auth model changed from Basic Auth → OAuth2.
BW_USERNAME/BW_PASSWORDare gone; setBW_CLIENT_ID/BW_CLIENT_SECRETinstead. BW_ACCOUNT_IDis now optional — auto-discovered from JWT claims.- MFA tools removed (
generateMessagingCode,generateVoiceCode,verifyCode). The MFA API doesn't support OAuth2 yet; the tools are parked onfeat/mfa-toolsuntil it does. fastmcpupgraded 2.13 → 3.x (patches 3 Snyk vulns). Requiresmcp >= 1.24.
🔒 Security
- Upgraded
fastmcpto 3.x, resolving SNYK-PYTHON-FASTMCP-15871014 / 15871029 / 15871030 (SSRF + command injection). - Secrets redacted from
resource://config; dead Basic Auth helper removed.
Validated
Core surface — auth, discovery, lookup, messaging + media, voice read/state, callback wiring — validated end-to-end against stage and prod. Role-gated tools (number listing, lookup) confirmed working on properly-entitled accounts.
Install: uvx --from git+https://github.com/Bandwidth/mcp-server@v0.3.0 start