Skip to main content

August 8, 2025

The Clerk team has been hard at work shipping new features to help you build secure applications faster. Here’s a rundown of the highlights:

MCP Server Support for Express

Securely connect AI tools to your app

Clerk now supports the Model Context Protocol (MCP) in Express.js applications. This lets your users authorize AI applications like Claude and Cursor to access their data in your app through secure OAuth flows.

Implementation requires as little as 50 lines of code in a single file. The setup uses Clerk's OAuth provider with built-in MCP handlers for authentication, protected resources, and server metadata. Once running, AI tools connect with just a URL configuration. No stdio tools, command execution, or additional dependencies needed.

  • Minimal code: Complete server in ~50 lines using Clerk's MCP tools (shown below)
  • Standard OAuth: Uses RFC-compliant OAuth flows with automatic token management
  • Framework-agnostic: Works with existing Express apps and middleware

The following snippet shows a complete implementation of an MCP server for Express.js that surfaces the get_clerk_user_data tool that can be used by agents to get information about the current user:

Check out the complete implementation and open source example or follow our MCP integration guide to connect your first AI client.

Build custom flows with React and Clerk Billing

Clerk Billing now provides five React hooks that give you complete control over checkout flows, subscription management, and payment processing for both user and organization billing contexts. This means you can now build fully custom billing experiences that match your application's design and user flow requirements.

These hooks handle the complex billing logic behind the scenes while exposing clean, composable APIs:

  • useCheckout() manages the checkout process
  • usePlans() fetches your configured billing plans
  • usePaymentMethods() provides access to saved payment methods
  • useSubscription() gives you real-time access to billing status
  • usePaymentElement() controls the payment form rendered by the <PaymentElement /> component

Get started by exploring the custom billing flows changelog, or dive into the billing hooks documentation to implement your first custom checkout flow.

Other features, fixes, and improvements

Resources

Interested in diving deeper into how to use Clerk in your project? Check out these hand-picked educational resources:

Author
Brian Morrison II

Share this article