Integrate Sentry error tracking directly into your development workflow with this Model Context Protocol (MCP) server.
Gain insights into your application's stability by accessing Sentry release health data and issue details without leaving your MCP-enabled environment (like VS Code with the Cline extension).
- Release Monitoring: List recent releases and view their associated new issue counts.
- Release Health: Get detailed statistics for specific releases, including crash-free rates and session counts.
- Issue Investigation: Fetch detailed information about specific Sentry issues by their ID.
- Targeted Issue Listing: Retrieve all issues associated with a particular release version.
- Flexible Connection: Works with both Sentry.io (cloud) and self-hosted Sentry instances.
- Server Inspection: Includes a tool to verify configuration and server status.
-
Clone the Repository: Clone this repository to your local machine:
git clone https://github.com/srcgrp/sentry-mcp-server.git cd sentry-mcp-server
-
Install Dependencies & Build: Install the necessary dependencies and build the server:
npm install npm run build
This will create the executable server script in the
build/
directory. -
Configure MCP Client: Add the server to your MCP client's configuration file (e.g.,
cline_mcp_settings.json
for Cline). Make sure to use the absolute path to the builtindex.js
file:{ "mcpServers": { "sentry-local": { // You can choose any name here "command": "node", "args": [ "/path/to/your/cloned/sentry-mcp-server/build/index.js" // <-- IMPORTANT: Use absolute path here ], "env": { // Environment variables can be set here OR loaded from a .env file (see next step) }, "disabled": false, // Ensure it's enabled "autoApprove": [] } // ... other servers } }
Restart your MCP client (e.g., reload VS Code) after modifying the settings.
-
Create
.env
File: In the root directory of the clonedsentry-mcp-server
project, create a.env
file with the following required variables:# Required Sentry Credentials & Configuration SENTRY_AUTH_TOKEN="YOUR_SENTRY_AUTH_TOKEN" # Generate from Sentry > User Settings > API Keys SENTRY_BASE_URL="YOUR_SENTRY_API_ENDPOINT" # e.g., https://sentry.io/api/0/ or https://your-sentry-instance.com/api/0/ SENTRY_ORG_SLUG="your-organization-slug" # Your Sentry organization slug
Replace the placeholder values with your actual Sentry details.
The server relies on these environment variables (typically set in the .env
file):
SENTRY_AUTH_TOKEN
(Required): Your Sentry API authentication token. Grants the server permission to access your Sentry data.SENTRY_BASE_URL
(Required): The base URL for the Sentry API. For Sentry.io cloud users, this is usuallyhttps://sentry.io/api/0/
. For self-hosted instances, use your instance's API endpoint.SENTRY_ORG_SLUG
(Required): The unique identifier (slug) for your organization within Sentry. This is used as the default organization for API calls unless overridden in specific tool arguments.
Here's a breakdown of the tools provided by this server, along with usage examples:
- Description: Inspects the server's current configuration, verifies the connection to Sentry (using the provided token and URL), lists available capabilities, and shows basic environment details. Useful for debugging setup issues.
- Input Schema: None (no arguments required).
- Example Usage (MCP Client):
{ "tool_name": "inspect_sentry", "arguments": {} }
- Example Output:
{ "configuration": { "baseUrl": "https://sentry.io/api/0/", "authTokenConfigured": true, "defaultOrg": "your-organization-slug" }, "capabilities": [ "list_recent_releases", "get_releases", "get_release_health", "get_issue", "get_release_issues" // inspect_sentry is excluded from this list ], "environment": { "nodeVersion": "v18.12.0", "platform": "linux", "memoryUsage": { /* ... */ } } }
- Description: Retrieves a list of the most recent releases for a specified project, sorted by date (newest first). Includes the number of new issues introduced in each release.
- Input Schema:
project_slug
(string, required): The slug of the Sentry project.org_slug
(string, optional): The organization slug. Defaults toSENTRY_ORG_SLUG
from your.env
.count
(number, optional): The maximum number of releases to return. Defaults to 5.
- Example Usage (MCP Client):
{ "tool_name": "list_recent_releases", "arguments": { "project_slug": "your-frontend-project", "count": 3 } }
- Example Output:
[ { "version": "[email protected]", "date": "2023-10-27T10:30:00Z", "new_issues": 2, "type": "desktop" }, { "version": "[email protected]", "date": "2023-10-26T15:00:00Z", "new_issues": 0, "type": "desktop" }, { "version": "[email protected]", "date": "2023-10-25T09:00:00Z", "new_issues": 5, "type": "mobile" } ]
- Description: Fetches all releases for a project, sorted by date (newest first).
- Input Schema:
project_slug
(string, required): The slug of the Sentry project.org_slug
(string, optional): The organization slug. Defaults toSENTRY_ORG_SLUG
.
- Example Usage (MCP Client):
{ "tool_name": "get_releases", "arguments": { "project_slug": "your-backend-service" } }
- Example Output: (Similar structure to
list_recent_releases
, but potentially many more entries)
- Description: Provides health statistics for a specific release version (or the latest release if no version is specified). Includes crash-free rates, session counts, and new issue counts.
- Input Schema:
project_slug
(string, required): The slug of the Sentry project.org_slug
(string, optional): The organization slug. Defaults toSENTRY_ORG_SLUG
.release_version
(string, optional): The specific release version string. If omitted, fetches data for the latest release.
- Example Usage (MCP Client):
{ "tool_name": "get_release_health", "arguments": { "project_slug": "your-frontend-project", "release_version": "[email protected]" } }
- Example Output:
{ "version": "[email protected]", "new_issues": 2, "crash_free_rate": 99.5, // Example value "sessions": 15000, // Example value "stats": { /* Detailed Sentry stats object */ } }
- Description: Retrieves basic details (ID, title, permalink) for a specific Sentry issue using its ID.
- Input Schema:
issue_id
(string, required): The numerical ID of the Sentry issue.org_slug
(string, required): The organization slug where the issue resides.project_slug
(string, required): The project slug where the issue resides.
- Example Usage (MCP Client):
{ "tool_name": "get_issue", "arguments": { "issue_id": "123456789", "org_slug": "your-organization-slug", "project_slug": "your-frontend-project" } }
- Example Output:
{ "id": "123456789", "title": "TypeError: Cannot read properties of undefined (reading 'map')", "permalink": "https://your-organization-slug.sentry.io/issues/123456789/" }
- Description: Fetches a list of all issues associated with a specific release version (or the latest release if no version is specified).
- Input Schema:
project_slug
(string, required): The slug of the Sentry project.org_slug
(string, optional): The organization slug. Defaults toSENTRY_ORG_SLUG
.release_version
(string, optional): The specific release version string. If omitted, fetches issues for the latest release.
- Example Usage (MCP Client):
{ "tool_name": "get_release_issues", "arguments": { "project_slug": "your-backend-service", "release_version": "[email protected]" } }
- Example Output: (List of issue objects, similar structure to the output of
get_issue
)[ { "id": "987654321", "title": "Database connection timeout", "permalink": "..." }, { "id": "987654322", "title": "NullPointerException in UserServic", "permalink": "..." } // ... more issues ]
This project is licensed under the MIT License - see the LICENSE file for details (assuming you will add an MIT license file).
For issues, questions, or feature requests, please open an issue on the GitHub repository.
Contributions are welcome! Please follow standard fork-and-pull-request workflows.