Skip to main content
Glama
h3ro-dev

Cursor Admin MCP Server

by h3ro-dev

Cursor Admin MCP Server

by Utlyze.com

npm version npm downloads License: MIT Build Status Test Coverage

šŸŽ® The Team Analytics Power-Up for Your AI Assistant

Brought to you by Utlyze - Zero Latency Operations Through AI Employees

Related MCP server: Cost Management MCP

šŸš€ Quick Install

npx -y cursor-admin-mcp

That's it. Your AI assistant just leveled up.

šŸŽÆ What You Get

Think of this as equipping your AI with X-ray vision for your development team:

  • šŸ¢ Team Roster - Instantly know who's on the team and their roles

  • šŸ“Š Usage Analytics - See who's actually coding vs. who's in meetings

  • šŸ’° Credit Tracker - Know exactly where your AI credits are going

  • šŸ“ˆ Productivity Metrics - Lines added, AI acceptance rates, favorite models

  • šŸ” Deep Insights - Which developer uses which tools, when they're most active

šŸ’Ŗ Why This Matters

Stop asking your team for status updates. Your AI can now tell you:

  • "Who wrote the most code this week?"

  • "What's our AI spending trend?"

  • "Which team member has the highest AI acceptance rate?"

  • "Show me usage patterns for the last month"

šŸ“ø See It In Action

You: "Show me team usage for this week"

AI: Here's your team's activity for the last 7 days:

šŸ‘„ TEAM MEMBERS
1. James Brady (Owner) - james@jamesbrady.org
2. Cody Vincent - vincent.cody298@gmail.com
3. 2 other members

šŸ“Š USAGE STATISTICS
• Most Active: Cody Vincent (641 AI requests)
• Most Productive: Cody Vincent (29,477 lines added)
• Top Models: claude-4-opus, gpt-4, claude-sonnet
• Active Days: 2/4 members coding daily

šŸ’° SPENDING: $1,957.32 total
• James Brady: $1,848.57 (94.4%)
• Cody Vincent: $73.76 (3.8%)
• Others: $34.99 (1.8%)

Installation

Prerequisites

  • Node.js 16+

  • A Cursor team admin API key (get it from your team settings)

Install from npm

npm install -g cursor-admin-mcp

Install from source

git clone https://github.com/h3ro-dev/cursor-admin-mcp.git
cd cursor-admin-mcp
npm install
npm run build

Configuration

1. Set up your API key

Create a .env file in the project root (or set the environment variable):

CURSOR_API_KEY=key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. Configure in Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "cursor-admin": {
      "command": "npx",
      "args": ["cursor-admin-mcp"],
      "env": {
        "CURSOR_API_KEY": "key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

3. Configure in Cursor

Add to your Cursor settings:

{
  "mcpServers": {
    "cursor-admin": {
      "command": "node",
      "args": ["/path/to/cursor-admin-mcp/dist/index.js"],
      "env": {
        "CURSOR_API_KEY": "key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Available Tools

1. get_team_members

Get a list of all team members with their information.

Example usage in Claude/Cursor:

"Show me all team members"
"List everyone on the team with their roles"

Returns:

[
  {
    "name": "John Doe",
    "email": "john@example.com",
    "role": "admin"
  },
  {
    "name": "Jane Smith",
    "email": "jane@example.com",
    "role": "member"
  }
]

2. get_daily_usage_data

Retrieve detailed usage metrics for a specified date range (max 90 days).

Parameters:

  • startDate: Start date in epoch milliseconds

  • endDate: End date in epoch milliseconds

Example usage in Claude/Cursor:

"Show me usage data for the last 7 days"
"What was our team's AI acceptance rate last month?"
"Which models did we use most this week?"

Returns:

[
  {
    "date": "2024-01-15",
    "linesAdded": 1523,
    "linesDeleted": 342,
    "acceptanceRate": 0.82,
    "requestTypes": {
      "completion": 234,
      "chat": 56,
      "edit": 23
    },
    "mostUsedModels": ["gpt-4", "claude-3"],
    "mostUsedExtensions": ["copilot", "cursor-tab"],
    "clientVersion": "0.42.0"
  }
]

3. get_spending_data

Get team spending information with optional filtering and pagination.

Optional Parameters:

  • searchTerm: Filter by search term

  • sortBy: Field to sort by

  • sortDirection: "asc" or "desc"

  • page: Page number

  • pageSize: Items per page

Example usage in Claude/Cursor:

"Show me team spending"
"Who are the top spenders this month?"
"Search for John's spending data"

Returns:

{
  "members": [
    {
      "email": "john@example.com",
      "name": "John Doe",
      "spending": 125.50
    }
  ],
  "total": 1250.00,
  "page": 1,
  "pageSize": 10
}

Development

Setup

# Clone the repository
git clone https://github.com/h3ro-dev/cursor-admin-mcp.git
cd cursor-admin-mcp

# Install dependencies
npm install

# Copy environment file
cp .env.example .env
# Edit .env and add your CURSOR_API_KEY

# Run in development mode
npm run dev

Testing

# Run tests
npm test

# Run tests with coverage
npm test -- --coverage

# Run tests in watch mode
npm run test:watch

Building

# Build the project
npm run build

# Run the built version
npm start

Project Structure

cursor-admin-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts          # MCP server implementation
│   └── cursor-client.ts  # Cursor API client
ā”œā”€ā”€ tests/
│   └── cursor-client.test.ts  # Test suite
ā”œā”€ā”€ examples/
│   └── (example scripts)
ā”œā”€ā”€ docs/
│   └── (additional documentation)
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ jest.config.js
ā”œā”€ā”€ .env.example
ā”œā”€ā”€ .gitignore
└── README.md

Examples

Basic Usage

// The MCP server handles all the communication
// Just use natural language in Claude/Cursor:

"Show me all team members and their roles"
"Get usage data for January 2024"
"What's our team's total spending this month?"
"Show me the AI acceptance rate trend for the last 30 days"

Advanced Queries

// Complex date ranges
"Compare usage between last week and this week"

// Specific metrics
"Which team members have the highest AI suggestion acceptance rate?"

// Spending analysis
"Show me spending sorted by amount for team members whose name contains 'John'"

Error Handling

The server includes comprehensive error handling:

  • Invalid API Key: Clear error message if authentication fails

  • Rate Limiting: Respects Cursor API rate limits

  • Date Validation: Ensures date ranges don't exceed 90 days

  • Network Errors: Graceful handling of connection issues

  • Invalid Parameters: Detailed validation messages

Security

  • API keys are never logged or exposed

  • All communication uses HTTPS

  • Basic authentication as per Cursor API requirements

  • Environment variables for sensitive data

Contributing

Contributions are welcome! Please:

  1. Fork the repository

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

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Development Guidelines

  • Write tests for new features

  • Update documentation

  • Follow TypeScript best practices

  • Ensure all tests pass

  • Add examples for new functionality

Troubleshooting

API Key Issues

If you get authentication errors:

  1. Verify your API key starts with key_

  2. Ensure you're a team admin

  3. Check the key hasn't been revoked

Connection Issues

If the server won't connect:

  1. Check your internet connection

  2. Verify the Cursor API is accessible

  3. Check for any firewall restrictions

Date Range Errors

If you get date range errors:

  1. Ensure your date range is within 90 days

  2. Use epoch milliseconds for dates

  3. Verify endDate > startDate

License

MIT License - see LICENSE file for details

Acknowledgments

Support


Built by Utlyze

Utlyze - Zero Latency Operations Through AI Employees

We're pioneering the future of work by creating AI employees that seamlessly integrate with your existing workflows. The Cursor Admin MCP Server is just one example of how we're making teams more efficient through intelligent automation.

Visit Utlyze.com | Contact Us | LinkedIn

Made with ā¤ļø by the Utlyze team for the Cursor community

Available Tools

3 tools
get_daily_usage_dataC

Get detailed daily usage metrics for the team including lines added/deleted, AI suggestions, and model usage

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateYesStart date in epoch milliseconds
endDateYesEnd date in epoch milliseconds

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 read operation ('Get'), implying it's non-destructive, but doesn't mention any behavioral traits like authentication requirements, rate limits, data freshness, or pagination. For a tool that likely accesses sensitive usage data, this lack of context is a significant gap.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose and includes specific metric examples. It avoids redundancy and wastes no words, though it could be slightly more structured by separating usage guidance from the purpose statement.

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 complexity of usage metrics and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values look like (e.g., format, granularity), potential side effects, or error conditions. For a data-fetching tool with no structured output documentation, this leaves the agent under-informed.

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 schema description coverage is 100%, with both parameters clearly documented as epoch milliseconds for date ranges. The description adds marginal value by implying date-range filtering ('daily usage metrics'), but doesn't provide additional syntax, format details, or constraints beyond what the schema already specifies. Baseline 3 is appropriate when 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 verb 'Get' and specifies the resource 'detailed daily usage metrics for the team', including concrete examples like 'lines added/deleted, AI suggestions, and model usage'. It distinguishes from sibling tools by focusing on usage metrics rather than spending data or team members, though it doesn't explicitly name the alternatives.

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_spending_data' or 'get_team_members'. It doesn't mention prerequisites, exclusions, or specific contexts where this tool is preferred, leaving the agent to infer usage based on the purpose alone.

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

get_spending_dataC

Get team member spending information with optional filtering and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
searchTermNoSearch term for filtering
sortByNoField to sort by
sortDirectionNoSort direction
pageNoPage number
pageSizeNoNumber of items per page

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'optional filtering and pagination', which hints at read-only behavior and some operational traits, but it doesn't cover critical aspects like rate limits, authentication needs, error handling, or what the output looks like (e.g., format, structure). For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Get team member spending information') and adds brief context ('with optional filtering and pagination'). There's no wasted wording, and it's appropriately sized for the tool's complexity, though it could be slightly more structured if it included more usage details.

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 tool has no annotations, no output schema, and 5 parameters, the description is incomplete. It covers the basic purpose and hints at behavior but fails to address key contextual elements like output format, error conditions, or how it differs from sibling tools. For a data retrieval tool with filtering and pagination, more detail is needed to guide the agent 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?

The schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds minimal value beyond the schema by mentioning 'optional filtering and pagination', which loosely relates to parameters like 'searchTerm', 'page', and 'pageSize', but doesn't provide additional meaning or context. Given the high schema coverage, a baseline score of 3 is appropriate as the description doesn't compensate with extra insights.

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 resource ('team member spending information'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from its siblings like 'get_daily_usage_data' or 'get_team_members', which might also retrieve related data. The description is specific about what data is retrieved but lacks sibling distinction.

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 mentions 'optional filtering and pagination', which implies some context for usage, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_daily_usage_data' or 'get_team_members'. There's no mention of prerequisites, exclusions, or specific scenarios that warrant its use over siblings, leaving the agent with minimal direction.

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

get_team_membersB

Get list of team members with their names, emails, and roles

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?

No annotations are provided, so the description carries the full burden. It states it 'gets' a list, implying a read operation, but doesn't disclose behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or handles errors. The description is minimal and lacks context beyond the basic action.

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's 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.

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 minimally adequate. It explains what data is retrieved but lacks details on behavior, usage context, or output format. For a read-only tool with no parameters, this is the bare minimum, leaving gaps in understanding how to effectively use it.

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 parameters need documentation. The description doesn't add parameter details, but since there are no parameters, this is acceptable. Baseline is 4 for 0 parameters, as the description doesn't need to compensate for any gaps.

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 resource ('list of team members') with specific attributes (names, emails, roles). It's specific enough to understand what data is retrieved, though it doesn't explicitly differentiate from sibling tools like 'get_daily_usage_data' or 'get_spending_data' since those appear to be about different resources.

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. It doesn't mention context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name and description alone.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.0
    • First observedget_daily_usage_data
    • First observedget_spending_data
    • First observedget_team_members

TDQS

B3.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: get_daily_usage_data focuses on usage metrics, get_spending_data on financial data, and get_team_members on personnel information. There is no overlap in functionality or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with 'get_' as the prefix, followed by a descriptive noun phrase (e.g., daily_usage_data, spending_data, team_members). This uniformity makes the tools predictable and easy to understand.

Tool Count3/5

With only 3 tools, the set feels thin for an admin server, as it lacks operations like update, create, or delete for team members or spending. While the tools cover key read-only functions, the scope suggests more administrative actions would be expected.

Completeness2/5

The toolset is severely incomplete for an admin domain, offering only read operations (get) without any ability to modify data, manage users, or handle configurations. This creates significant gaps that will limit agent effectiveness in administrative tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • The Polar Signals MCP server enables AI assistants to connect directly with performance profiling data, allowing users to analyze application performance through natural language queries. Key capabilities include querying CPU performance and memory usage, exploring profiling metadata like profile types and labels, and providing AI-driven code optimization suggestions directly within development environments like Claude Code or Cursor.

  • MCP server for building and testing AI agents with multi-model experimentation and insights.

  • An MCP server that integrates with Discord to provide AI-powered features.

  • The Ramp MCP server enables users to securely connect Ramp with AI assistants like ChatGPT and Claude to query financial data and take actions using natural language. It transforms Ramp's developer API into a SQL interface that LLMs can query, allowing admins to analyze spend trends, identify cost savings, and run complex SQL analyses on comprehensive datasets (transactions, purchase orders, vendors, users), while all users can manage cards, view transactions, request reimbursements, and get expense policy answers.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides detailed information about your development environment to the Cursor code editor, enabling more context-aware assistance.
    7
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server for unified cost tracking and analysis across AWS, OpenAI, and Anthropic. It enables users to query expenditures, compare costs across providers, and analyze usage trends through natural language.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables SQL analytics on DuckDB and MotherDuck databases, allowing AI assistants and IDEs to query and analyze data.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that wraps Cursor Enterprise API to enable AI agents to answer questions about team spending, usage, and model adoption.
    17
    42
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/h3ro-dev/cursor-admin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server