Connect Cursor to MCP
Connect Cursor IDE to Hanzo IAM’s MCP server with OAuth.
Connect Cursor IDE to Hanzo IAM’s MCP server so you can manage applications, users, and resources from the editor.
Prerequisites
- A running Hanzo IAM instance (HTTPS recommended for production)
- Cursor IDE installed on your computer
- Admin access to your Hanzo IAM instance to create applications
Step 1: Create an application in Hanzo IAM
Create a Hanzo IAM application for Cursor’s OAuth:
- Log in to your Hanzo IAM admin panel
- Navigate to Applications and click Add
- Configure the application with these settings:
-
Name:
cursor-mcp(or your preferred name) -
Display Name:
Cursor IDE MCP Client -
Organization: Select your organization
-
Redirect URIs: Add these OAuth callback URLs:
http://127.0.0.1:*/callback http://localhost:*/callback:::tip The wildcard
*allows Cursor to use any available port for the OAuth callback. :::
-
- Grant Types: Enable
Authorization Codeand optionallyRefresh Token - Enable PKCE: Check this option for enhanced security
- Token Format:
JWT(recommended) - (Optional) Application Type: Set to
Agent - (Optional) Category: Set to
MCPfor better organization :::info See Application categories for Category and Type options. ::: - Click Save and note the Client ID for the next step.
Step 2: Configure Cursor MCP settings
Cursor supports MCP server configuration through its settings. You can configure it either through the UI or by directly editing the configuration file.
Option A: Using Cursor Settings UI
- Open Cursor IDE
- Go to Settings (Cmd+, on macOS or Ctrl+, on Windows/Linux)
- Search for "MCP" in the settings search bar
- Click Edit in settings.json to open the MCP configuration file
Option B: Direct File Edit
The MCP configuration file location depends on your operating system:
- macOS:
~/Library/Application Support/Cursor/User/mcp.json - Windows:
%APPDATA%\Cursor\User\mcp.json - Linux:
~/.config/Cursor/User/mcp.json
Add your Hanzo IAM MCP server configuration:
{
"mcpServers": {
"iam": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-oauth",
"https://your-iam.com/api/mcp"
],
"env": {
"OAUTH_CLIENT_ID": "your-client-id",
"OAUTH_SCOPES": "read:application write:application openid profile email"
}
}
}
}
Replace the following placeholders:
- `your-iam.com` → Your Hanzo IAM instance domain
- `your-client-id` → The Client ID from Step 1
:::note
The `@modelcontextprotocol/server-oauth` package handles OAuth flows automatically. Cursor will open your browser to complete authentication.
:::
### Configuring Scopes
The `OAUTH_SCOPES` environment variable controls what permissions Cursor's AI has. Common scopes include:
- `read:application` - View applications
- `write:application` - Create, update, delete applications
- `read:user` - View users
- `write:user` - Create, update, delete users
- `openid profile email` - Basic user information (required for OAuth)
See [Authorization and Scopes](/docs/how-to-connect/mcp/authorization) for the complete list of available scopes.
## Step 3: Reload Cursor
After saving the configuration:
1. Reload Cursor IDE (Cmd+Shift+P or Ctrl+Shift+P → "Developer: Reload Window")
2. Alternatively, restart Cursor completely
Cursor will automatically detect and load the new MCP server configuration.
## Step 4: Complete the OAuth Flow
When Cursor first connects to your Hanzo IAM MCP server:
1. Cursor will automatically open your default web browser
2. You'll see the Hanzo IAM login page (if not already logged in)
3. After logging in, you'll see a **Consent Screen** asking you to authorize Cursor
4. The consent screen displays the requested scopes (permissions)
5. Click **Authorize** to grant access
6. Your browser will redirect to `http://127.0.0.1:<port>/callback` and show a success message
7. Return to Cursor - the connection is now established
:::tip
The OAuth token is securely stored by the MCP OAuth helper. You won't need to re-authorize unless you revoke the token or change scopes.
:::
## Step 5: Verify the Connection
Test the connection by using Cursor's AI features to interact with Hanzo IAM:
**Example prompts to try in Cursor's chat:**
- "Using the Hanzo IAM MCP server, list all applications"
- "Show me details about the application named 'my-app' from Hanzo IAM"
- "Create a new Hanzo IAM application called 'test-app' in organization 'my-org'"
Cursor's AI will use the MCP tools to execute these commands. You should see responses with data from your Hanzo IAM instance.
**Expected output:**
```text
I've queried the Hanzo IAM MCP server and found the following applications:
1. cursor-mcp (Cursor IDE MCP Client)
2. app-built-in (Hanzo IAM)
...
## Troubleshooting
### Issue: "MCP server not found" in Cursor
**Cause**: The configuration file might not be in the correct location or has syntax errors.
**Solution**:
- Verify the file path for your operating system
- Check that the JSON is valid (no trailing commas, proper quotes)
- Reload Cursor after making changes
### Issue: "Unable to connect to MCP server"
**Cause**: The MCP server URL might be incorrect or unreachable.
**Solution**:
- Verify the URL in your `mcp.json` is correct
- Ensure your Hanzo IAM instance is running and accessible
- Check for HTTPS/HTTP mismatch (use HTTPS in production)
### Issue: "Redirect URI mismatch" error during OAuth
**Cause**: The callback URL doesn't match the configured Redirect URI in Hanzo IAM.
**Solution**:
- In Hanzo IAM, ensure your application has these redirect URIs:
```text
http://127.0.0.1:*/callback
http://localhost:*/callback- The wildcard
*is crucial - it allows any port
Issue: "CORS error" in browser console
Cause: Cross-Origin Resource Sharing (CORS) restrictions.
Solution:
- Hanzo IAM's MCP endpoint should automatically handle CORS for localhost origins
- If you're using a custom domain, ensure CORS is properly configured in Hanzo IAM
Issue: "insufficient_scope" error when using AI features
Cause: The requested operation requires a scope that wasn't granted.
Solution:
- Update the
OAUTH_SCOPESin yourmcp.jsonto include the required scope - Example: Add
write:applicationif you want to create/modify applications - Reload Cursor and re-authorize to get a new token with updated scopes
Issue: OAuth token expired
Cause: Access tokens expire after a certain time.
Solution:
- If you enabled
Refresh Tokengrant type in Step 1, the MCP OAuth helper will automatically refresh expired tokens - Otherwise, you'll need to re-authorize by reloading Cursor
Issue: MCP tools not available in Cursor's AI
Cause: Cursor might not have loaded the MCP server or OAuth hasn't completed.
Solution:
- Check Cursor's developer console (Help → Toggle Developer Tools) for errors
- Try explicitly mentioning "using Hanzo IAM MCP server" in your prompts
- Ensure you've completed the OAuth flow in Step 4
Security Considerations
- PKCE (Proof Key for Code Exchange): Always enable PKCE in your Hanzo IAM application for enhanced security
- Scopes: Follow the principle of least privilege - only grant scopes that Cursor actually needs
- Token Storage: The MCP OAuth helper stores tokens securely in your system's keychain
- HTTPS: Always use HTTPS for production Hanzo IAM instances to protect OAuth flows
- Token Revocation: You can revoke access tokens in Hanzo IAM's admin panel under Tokens
- Code Review: Always review AI-generated code that interacts with Hanzo IAM before executing it
Use Cases
With Cursor connected to Hanzo IAM's MCP server, you can:
- Generate configuration code: Ask Cursor to generate application setup code based on existing Hanzo IAM apps
- Automate user management: Create scripts to bulk-create users or update permissions
- Documentation: Generate documentation for your Hanzo IAM setup automatically
- Testing: Create test applications and clean them up programmatically
- Migration scripts: Build scripts to migrate configurations between Hanzo IAM instances
Next Steps
Now that Cursor is connected to Hanzo IAM:
- Explore available MCP Tools that Cursor can use
- Learn about Authentication methods
- Understand Error Handling for better debugging
- Check out the Integration Example for programmatic access
Related Resources
How is this guide?
Last updated on