Skip to main content
Glama
vickykr26941

newrelic-mcp-server

by vickykr26941
README.md
# New Relic MCP Server

A Model Context Protocol (MCP) server that provides New Relic observability tools for integration with Cursor and other MCP-compatible AI assistants.

## Features

This MCP server provides comprehensive New Relic tools organized into the following categories:

### Discovery (Entity and Account Management)
- `convert_time_period_to_epoch_ms` - Convert time periods to epoch milliseconds
- `get_entity` - Fetch entities by GUID or search by name
- `list_related_entities` - List related entities (1 hop away)
- `list_available_new_relic_accounts` - List all available accounts
- `list_dashboards` - List dashboards for an account
- `get_dashboard` - Get dashboard details
- `list_entity_types` - List all entity types
- `search_entity_with_tag` - Search entities by tag

### Data Access
- `execute_nrql_query` - Execute NRQL queries against NRDB
- `natural_language_to_nrql_query` - Convert natural language to NRQL and execute

### Alerting
- `list_alert_conditions` - List alert conditions for a policy
- `search_incident` - Search alert incidents
- `list_alert_policies` - List alert policies
- `list_recent_issues` - List open issues
- `list_synthetic_monitors` - List synthetic monitors

### Incident Response
- `analyze_deployment_impact` - Analyze deployment performance impact
- `generate_alert_insights_report` - Generate alert analysis report
- `generate_user_impact_report` - Generate user impact report
- `get_entity_error_groups` - Get error groups from Errors Inbox
- `list_change_events` - List deployment and config changes

### Performance Analytics
- `analyze_entity_logs` - Analyze logs for patterns and anomalies
- `analyze_golden_metrics` - Analyze throughput, response time, error rate
- `analyze_kafka_metrics` - Analyze Kafka consumer lag, throughput
- `analyze_threads` - Analyze JVM thread metrics
- `analyze_transactions` - Identify slow and error-prone transactions
- `list_garbage_collection_metrics` - Get GC and memory metrics
- `list_recent_logs` - List recent log entries

### Advanced Analysis
- `comprehensive_entity_analysis` - Full entity health analysis
- `correlate_metrics_and_events` - Correlate metrics with events
- `analyze_service_dependencies` - Analyze service dependencies
- `generate_slo_report` - Generate SLO compliance report

## Prerequisites

- Python 3.10+ (required by MCP SDK)
- New Relic account with API access
- New Relic User API Key

## Installation

1. **Clone the repository:**
   ```bash
   cd /Users/vickykumar/projects/newrelic-mcp
   ```

2. **Create and activate a virtual environment (Python 3.10+ required):**
   ```bash
   python3.11 -m venv venv  # or python3.10, python3.12, etc.
   source venv/bin/activate  # On Windows: venv\Scripts\activate
   ```

3. **Install dependencies:**
   ```bash
   pip install -r requirements.txt
   ```

4. **Configure environment variables:**
   ```bash
   cp env.example .env
   ```
   
   Edit `.env` and set your New Relic credentials:
   ```
   NEW_RELIC_API_KEY=NRAK-your-api-key-here
   NEW_RELIC_ACCOUNT_ID=your-account-id
   ```

## Getting Your New Relic API Key

1. Go to [New Relic API Keys](https://one.newrelic.com/api-keys)
2. Click "Create a key"
3. Select "User" as the key type
4. Give it a name (e.g., "MCP Server")
5. Copy the key (starts with `NRAK-`)

## Usage with Cursor

### Option 1: Add to Cursor MCP Settings (Recommended)

1. Open Cursor Settings (⌘/Ctrl + ,)
2. Search for "MCP" or navigate to Features → MCP Servers
3. Click "Add MCP Server" or edit your `~/.cursor/mcp.json`
4. Add the following configuration:

```json
{
  "mcpServers": {
    "newrelic": {
      "command": "/Users/vickykumar/projects/newrelic-mcp/venv/bin/python",
      "args": ["/Users/vickykumar/projects/newrelic-mcp/server.py"],
      "env": {
        "NEW_RELIC_API_KEY": "NRAK-your-api-key",
        "NEW_RELIC_ACCOUNT_ID": "your-account-id",
        "NEW_RELIC_REGION": "US"
      }
    }
  }
}
```

> **Note**: Update the paths if your project is located elsewhere.

### Option 2: Using the startup script

Create a wrapper script for easier configuration:

```bash
#!/bin/bash
# save as: run-newrelic-mcp.sh

export NEW_RELIC_API_KEY="NRAK-your-api-key"
export NEW_RELIC_ACCOUNT_ID="your-account-id"

cd /Users/vickykumar/projects/newrelic-mcp
./venv/bin/python server.py
```

Then configure Cursor to use this script:

```json
{
  "mcpServers": {
    "newrelic": {
      "command": "/Users/vickykumar/projects/newrelic-mcp/run-newrelic-mcp.sh",
      "args": []
    }
  }
}
```

## Example Queries in Cursor

Once configured, you can ask the AI assistant to:

### Discovery
- "List all my New Relic accounts"
- "Find all APM applications with the tag environment=production"
- "Show me the entities related to my payment service"

### Data Access
- "Execute this NRQL query: SELECT count(*) FROM Transaction SINCE 1 hour ago"
- "Show me errors from the last 30 minutes"
- "What's the throughput trend for my API?"

### Alerting
- "List all open incidents"
- "Show me alert policies for my account"
- "What synthetic monitors are failing?"

### Incident Response
- "Analyze the impact of the last deployment on my checkout service"
- "Generate an alert insights report for issue ID xyz123"
- "What error groups are affecting my service?"

### Performance Analytics
- "Analyze the golden metrics for entity ABC123"
- "Show me slow transactions in my payment service"
- "What are the error patterns in my application logs?"

### Advanced Analysis
- "Run a comprehensive health analysis on my API service"
- "Generate an SLO report for my checkout service with 99.9% target"
- "Correlate metrics with recent deployments"

## Testing the Server

You can test the server manually:

```bash
# Activate virtual environment
source venv/bin/activate

# Set environment variables
export NEW_RELIC_API_KEY="NRAK-your-key"
export NEW_RELIC_ACCOUNT_ID="your-account-id"

# Run the server (it will wait for MCP protocol messages on stdin)
python server.py
```

## Troubleshooting

### Server not starting
- Check that Python 3.9+ is installed
- Verify the virtual environment is activated
- Ensure all dependencies are installed

### Authentication errors
- Verify your API key is correct and starts with `NRAK-`
- Check that the account ID is correct
- Ensure the API key has the necessary permissions

### No data returned
- Verify the entity GUID is correct
- Check the time window (some queries default to 60 minutes)
- Ensure your account has data for the requested time period

### Cursor not finding the server
- Check the path in your MCP configuration
- Ensure the server script is executable
- Look at Cursor logs for MCP-related errors

## Environment Variables

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `NEW_RELIC_API_KEY` | Yes | - | Your New Relic User API Key |
| `NEW_RELIC_ACCOUNT_ID` | Yes | - | Default New Relic Account ID |
| `NEW_RELIC_REGION` | No | `US` | Region: `US` or `EU` |
| `MAX_LOOKBACK_MINUTES` | No | `10080` | Max lookback period (7 days) |
| `MAX_RESULT_LIMIT` | No | `2000` | Max results per query |
| `DEFAULT_LIMIT` | No | `100` | Default result limit |

## Architecture

```
newrelic-mcp/
├── server.py              # Main MCP server entry point
├── requirements.txt       # Python dependencies
├── .env                   # Environment configuration
├── .env.example          # Example configuration
└── app/
    ├── __init__.py
    ├── config.py          # Configuration management
    ├── nr_client.py       # New Relic GraphQL client
    └── tools/
        ├── __init__.py
        ├── discovery.py       # Entity/account tools
        ├── data_access.py     # NRQL query tools
        ├── alerting.py        # Alert/incident tools
        ├── incident_response.py   # Incident analysis
        ├── performance_analytics.py  # Performance tools
        └── advanced_analysis.py   # Advanced analysis
```

## License

MIT License - See LICENSE file for details.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.