Skip to main content
Glama
mehmetfiskindal

Cursor Pro Limits MCP Server

Cursor Pro Limits MCP Server

A Model Context Protocol (MCP) server for monitoring Cursor Pro usage limits and API quotas. This server helps you track your daily usage across different AI services and stay within your Cursor Pro limits.

Features

  • πŸ“Š Real-time Usage Monitoring: Track Sonnet 4.5, Gemini, and GPT-5 request usage

  • 🚨 Alert System: Get warnings when approaching limits

  • πŸ“ˆ Usage Statistics: Detailed breakdown of current usage vs. limits

  • πŸ”§ Easy Integration: Works with any MCP-compatible client

  • 🎯 TypeScript: Fully typed with strict TypeScript configuration

Related MCP server: cursor-usage

Cursor Pro Limits (Monthly)

Based on Cursor Pro subscription limits:

Pro Tier

  • Sonnet 4.5: 225 requests/month

  • Gemini: 550 requests/month

  • GPT-5: 500 requests/month

  • Total: 1,275 requests/month

Pro+ Tier

  • Sonnet 4.5: 675 requests/month

  • Gemini: 1,650 requests/month

  • GPT-5: 1,500 requests/month

  • Total: 3,825 requests/month

Ultra Tier

  • Sonnet 4.5: 4,500 requests/month

  • Gemini: 11,000 requests/month

  • GPT-5: 10,000 requests/month

  • Total: 25,500 requests/month

Installation

npm install cursor-pro-limits-mcp

Usage

As an MCP Server

  1. Configure your MCP client to use this server:

{
  "mcpServers": {
    "cursor-pro-limits": {
      "command": "npx",
      "args": ["cursor-pro-limits-mcp"]
    }
  }
}
  1. Available Tools:

get_usage_stats

Get comprehensive usage statistics for all services.

// Returns current usage, limits, percentages, and remaining requests

get_service_usage

Get detailed usage for a specific service.

Parameters:

  • service: "sonnet45" | "gemini" | "gpt5" | "total"

check_alerts

Check for services approaching or exceeding limits.

update_usage

Update usage statistics (for testing or manual updates).

Parameters:

  • sonnet45Requests (optional): Number of Sonnet 4.5 requests

  • geminiRequests (optional): Number of Gemini requests

  • gpt5Requests (optional): Number of GPT-5 requests

  • totalRequests (optional): Total number of requests

set_subscription_tier

Set the subscription tier (pro, pro-plus, ultra).

Parameters:

  • tier: Subscription tier ("pro", "pro-plus", or "ultra")

get_subscription_info

Get current subscription tier and limits information.

Programmatic Usage

import { CursorLimitsMonitor } from 'cursor-pro-limits-mcp';

// Create monitor for Pro tier (default)
const monitor = new CursorLimitsMonitor('pro');

// Get current usage stats
const stats = monitor.getUsageStats();
console.log(`Sonnet 4.5: ${stats.limits.sonnet45Requests}/${stats.quotas.maxSonnet45Requests}`);

// Check for alerts
const alerts = monitor.checkAlerts();
if (alerts.length > 0) {
  console.log('Warning: Approaching limits!');
}

// Update usage (e.g., from API response)
monitor.updateLimits({
  sonnet45Requests: 150,
  geminiRequests: 300,
  gpt5Requests: 200,
  totalRequests: 650
});

// Switch to Pro+ tier for higher limits
monitor.updateTier('pro-plus');
console.log(`Switched to ${monitor.getCurrentTier()} tier`);

Development

Prerequisites

  • Node.js 18.0.0 or higher

  • npm or yarn

Setup

# Clone the repository
git clone <repository-url>
cd cursor-pro-limits-mcp

# Install dependencies
npm install

# Build the project
npm run build

Available Scripts

# Build TypeScript
npm run build

# Watch mode for development
npm run dev

# Start the server
npm start

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

# Format code
npm run format

# Check formatting
npm run format:check

# Clean build directory
npm run clean

Code Quality

This project uses:

  • TypeScript with strict configuration

  • ESLint for code linting

  • Prettier for code formatting

  • No any types - fully typed codebase

API Reference

Types

interface CursorProLimits {
  sonnet45Requests: number;
  geminiRequests: number;
  gpt5Requests: number;
  totalRequests: number;
  lastUpdated: Date;
}

interface UsageStats {
  limits: CursorProLimits;
  quotas: CursorProQuotas;
  usagePercentages: {
    sonnet45: number;
    gemini: number;
    gpt5: number;
    total: number;
  };
  remaining: {
    sonnet45: number;
    gemini: number;
    gpt5: number;
    total: number;
  };
}

Methods

CursorLimitsMonitor

  • getUsageStats(): Get comprehensive usage statistics

  • getServiceUsage(service): Get usage for specific service

  • checkAlerts(): Check for services approaching limits

  • updateLimits(limits): Update usage statistics

  • onUpdate(callback): Subscribe to usage updates

Contributing

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Make your changes

  4. Run tests and linting: npm run lint && npm run format:check

  5. Commit your changes: git commit -m 'Add amazing feature'

  6. Push to the branch: git push origin feature/amazing-feature

  7. Open a Pull Request

License

MIT License - see LICENSE file for details.

Support

For issues and questions:

  • Open an issue on GitHub

  • Check the documentation

  • Review the TypeScript types for API reference

Available Tools

6 tools
check_alertsB

Check for services approaching or exceeding limits

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Check') but doesn't describe what 'approaching or exceeding limits' means operationally, whether this is a read-only operation, what permissions are needed, or how results are returned. This leaves significant gaps for a tool that likely interacts with system limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized for a zero-parameter tool and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is minimally adequate but lacks detail on what 'check' entails (e.g., returns alerts, thresholds, or just status). Given the sibling tools suggest a usage/limits context, more specificity about behavioral aspects would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't add parameter details, maintaining focus on the tool's purpose without redundancy. Baseline 4 is correct for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('services approaching or exceeding limits'), making it immediately understandable. It doesn't explicitly distinguish from siblings like 'get_service_usage' or 'get_usage_stats', but the focus on 'limits' provides some differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_service_usage' or 'get_usage_stats'. The description implies usage for monitoring limit thresholds but doesn't specify prerequisites, frequency, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_usageC

Get usage statistics for a specific service

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceYesService to check usage for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't clarify authentication needs, rate limits, error conditions, or what the statistics include (e.g., time range, metrics). This leaves significant gaps for a tool that likely returns data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that returns usage statistics. It doesn't explain what the statistics include (e.g., counts, dates, units), potential limitations, or how to interpret results, leaving the agent with insufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'service' parameter fully documented via its enum and description. The tool description adds no additional parameter information beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'usage statistics for a specific service', making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'get_usage_stats', which appears to be a similar usage-related tool, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_usage_stats' or 'check_alerts'. It lacks context about prerequisites, timing, or exclusions, leaving the agent with minimal usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_subscription_infoB

Get current subscription tier and limits

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves information ('Get'), implying a read-only operation, but doesn't mention potential side effects, authentication requirements, rate limits, or error handling. This leaves significant gaps in understanding how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate as a basic read operation. However, it lacks details on return values (e.g., format of subscription info), error cases, or dependencies, which could be important for an AI agent to use it correctly in a broader context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter details, as there are none to explain. A baseline score of 4 is appropriate since the schema fully covers the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('current subscription tier and limits'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_service_usage' or 'get_usage_stats', which might also retrieve subscription-related information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_service_usage' or 'get_usage_stats'. It lacks context about prerequisites, such as whether authentication is needed, or exclusions, such as when other tools might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usage_statsB

Get current Cursor Pro usage statistics and limits

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't mention any constraints like authentication requirements, rate limits, or whether the data is real-time or cached. This leaves significant gaps for a tool that likely accesses sensitive usage information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without any fluff. It's front-loaded with the core action and resource, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't specify what 'usage statistics and limits' include (e.g., API calls, storage, user counts) or the format of the response, which is critical for an agent to use this tool effectively in a context with sibling tools that might overlap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose. A baseline of 4 is applied since the schema fully handles the parameter aspect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'current Cursor Pro usage statistics and limits', making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_service_usage' or 'get_subscription_info', which likely provide related but different information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_service_usage' or 'get_subscription_info'. It lacks context about what specific statistics or limits are included, leaving the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_subscription_tierC

Set the subscription tier (pro, pro-plus, ultra)

ParametersJSON Schema
NameRequiredDescriptionDefault
tierYesSubscription tier

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It doesn't disclose if this is a mutation requiring admin rights, if it's reversible, what side effects occur, or error conditions. For a write operation with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and includes all necessary tier values without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on permissions, side effects, return values, or error handling. Given the complexity of changing subscription tiers, more context is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'tier' fully documented in the schema including its enum values. The description adds no additional parameter semantics beyond restating the tier options, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the resource ('subscription tier'), with specific tier values listed. It distinguishes from siblings like 'get_subscription_info' (read vs write) but doesn't explicitly differentiate from other write operations like 'update_usage'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites, permissions needed, or when not to use it (e.g., vs 'update_usage'). It's a basic functional statement without contextual usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_usageB

Update usage statistics (for testing or manual updates)

ParametersJSON Schema
NameRequiredDescriptionDefault
sonnet45RequestsNoNumber of Sonnet 4.5 requests
geminiRequestsNoNumber of Gemini requests
gpt5RequestsNoNumber of GPT-5 requests
totalRequestsNoTotal number of requests

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but lacks critical behavioral details. 'Update' implies mutation, but it doesn't disclose permissions needed, whether changes are reversible, rate limits, or what the response looks like. The testing/manual context hints at caution but is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasteβ€”every word contributes to purpose and context. It's appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, response format, and error handling, leaving significant gaps for an agent to use it safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no parameter-specific information beyond the general purpose, meeting the baseline for high schema coverage without adding extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('usage statistics'), and specifies the context ('for testing or manual updates'). It distinguishes from sibling tools like 'get_usage_stats' (read) and 'set_subscription_tier' (different resource). However, it doesn't explicitly contrast with all siblings like 'check_alerts'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('for testing or manual updates'), suggesting this is not for routine operations. However, it doesn't provide explicit when-to-use rules, alternatives (e.g., vs. 'set_subscription_tier'), or prerequisites, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • First observedcheck_alerts
    • First observedget_service_usage
    • First observedget_subscription_info
    • First observedget_usage_stats
    • First observedset_subscription_tier
    • First observedupdate_usage

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes, but 'get_usage_stats' and 'get_service_usage' could be confused as both retrieve usage data. The descriptions clarify that one is for overall Cursor Pro usage and the other for specific services, but the naming overlap might cause misselection. Other tools like 'check_alerts' and 'set_subscription_tier' are clearly unique.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case, such as 'check_alerts', 'get_service_usage', and 'set_subscription_tier'. There are no deviations in naming conventions, making the set predictable and easy to parse for an agent.

Tool Count5/5

With 6 tools, this server is well-scoped for managing Cursor Pro limits and subscriptions. Each tool serves a clear function, such as monitoring usage, checking alerts, and handling subscription tiers, without unnecessary bloat or missing essentials for the domain.

Completeness4/5

The toolset covers key aspects like monitoring usage, checking limits, and managing subscriptions, but lacks operations for historical data or detailed analytics. Minor gaps exist, such as no tool for listing all services or viewing past alerts, but agents can work around these with the provided tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    Provides comprehensive telemetry and usage analytics for Claude Code sessions, including token usage tracking, cost monitoring, and tool usage patterns. Enables users to monitor their Claude usage with detailed metrics, warnings, and trend analysis.
    12
    -
  • A
    license
    A
    quality
    Not graded
    maintenance
    Provides real-time visibility into Claude Pro and Max subscription usage limits directly within Claude Code by utilizing local OAuth tokens. It enables users to monitor session and weekly usage across different models and receive alerts regarding rate-limiting status.
    4
    -
  • A
    license
    A
    quality
    C
    maintenance
    Real-time Claude.ai subscription awareness for AI coding assistants. Surfaces live utilization, forecasts limits, gates expensive operations, and measures real per-task cost.
    5
    6 npm
    6
    MIT