@rustrak/mcp 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +128 -63
  2. package/package.json +23 -4
package/README.md CHANGED
@@ -1,24 +1,49 @@
1
- # @rustrak/mcp
2
-
3
- MCP (Model Context Protocol) server for Rustrak. Lets AI assistants (Claude Desktop, Cursor, etc.) manage your error tracking directly — list projects, inspect issues, view stack traces, resolve errors, and manage tokens without leaving your AI tool.
4
-
5
- ## Features
6
-
7
- - **18 tools** covering projects, issues, events, tokens, and alert channels
8
- - **stdio transport** — runs as a local process, no network port needed
9
- - **Secure** — API token loaded from env vars, never passed as tool argument
10
- - **Safe destructive actions** — `delete_issue` and `revoke_token` annotated with `destructiveHint`
11
- - **Graceful errors** — all API errors returned as `isError: true` content, never thrown
1
+ <div align="center">
2
+ <a href="https://abians.github.io/rustrak">
3
+ <img src="https://raw.githubusercontent.com/AbianS/rustrak/main/apps/docs/public/logo.svg" alt="Rustrak" width="64" height="64" />
4
+ </a>
5
+ <h1>@rustrak/mcp</h1>
6
+ <p>MCP server that gives AI assistants full control of your <a href="https://abians.github.io/rustrak">Rustrak</a> error tracking</p>
7
+
8
+ <p>
9
+ <a href="https://www.npmjs.com/package/@rustrak/mcp">
10
+ <img src="https://img.shields.io/npm/v/@rustrak/mcp?style=flat-square&color=cb3837" alt="npm version" />
11
+ </a>
12
+ <a href="https://www.npmjs.com/package/@rustrak/mcp">
13
+ <img src="https://img.shields.io/npm/dw/@rustrak/mcp?style=flat-square" alt="weekly downloads" />
14
+ </a>
15
+ <a href="https://github.com/AbianS/rustrak/blob/main/LICENSE">
16
+ <img src="https://img.shields.io/npm/l/@rustrak/mcp?style=flat-square" alt="license" />
17
+ </a>
18
+ <a href="https://github.com/AbianS/rustrak/actions/workflows/ci.yml">
19
+ <img src="https://img.shields.io/github/actions/workflow/status/AbianS/rustrak/ci.yml?style=flat-square&label=CI" alt="CI" />
20
+ </a>
21
+ </p>
22
+
23
+ <p>
24
+ <a href="https://abians.github.io/rustrak/sdks/mcp">Documentation</a>
25
+ ·
26
+ <a href="https://github.com/AbianS/rustrak">GitHub</a>
27
+ ·
28
+ <a href="https://github.com/AbianS/rustrak/issues">Report a Bug</a>
29
+ </p>
30
+ </div>
31
+
32
+ ---
33
+
34
+ `@rustrak/mcp` is a [Model Context Protocol](https://modelcontextprotocol.io) server for [Rustrak](https://abians.github.io/rustrak) — the self-hosted, Sentry-compatible error tracker. Connect it to Claude Desktop, Cursor, Continue.dev, or any MCP-compatible AI assistant and get 18 tools to list projects, inspect issues, view stack traces, resolve errors, and manage tokens without leaving your AI tool.
35
+
36
+ **[Full documentation →](https://abians.github.io/rustrak/sdks/mcp)**
12
37
 
13
38
  ## Quick Start
14
39
 
15
40
  ### 1. Generate an API token
16
41
 
17
- In the Rustrak web UI: **Settings → Tokens → Create token**. Save the full token value — it is shown only once.
42
+ In the Rustrak web UI: **Settings → Tokens → Create token**. Save the token value — it is shown only once.
18
43
 
19
- ### 2. Configure in Claude Desktop
44
+ ### 2. Add to your AI client
20
45
 
21
- Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
46
+ **Claude Desktop** `~/Library/Application Support/Claude/claude_desktop_config.json`:
22
47
 
23
48
  ```json
24
49
  {
@@ -35,18 +60,16 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
35
60
  }
36
61
  ```
37
62
 
38
- ### 3. Local monorepo (development)
39
-
40
- Build first, then configure with a `node` command pointing to the dist:
63
+ **Cursor** — `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):
41
64
 
42
65
  ```json
43
66
  {
44
67
  "mcpServers": {
45
68
  "rustrak": {
46
- "command": "node",
47
- "args": ["packages/mcp/dist/index.js"],
69
+ "command": "npx",
70
+ "args": ["-y", "@rustrak/mcp"],
48
71
  "env": {
49
- "RUSTRAK_API_URL": "http://localhost:8080",
72
+ "RUSTRAK_API_URL": "https://your-rustrak-instance.example.com",
50
73
  "RUSTRAK_API_TOKEN": "your-40-char-hex-token"
51
74
  }
52
75
  }
@@ -54,27 +77,61 @@ Build first, then configure with a `node` command pointing to the dist:
54
77
  }
55
78
  ```
56
79
 
57
- Or use the project-level `.mcp.json` at the repo root (Claude Code picks this up automatically).
80
+ **Continue.dev** `~/.continue/config.json`:
81
+
82
+ ```json
83
+ {
84
+ "experimental": {
85
+ "modelContextProtocolServers": [
86
+ {
87
+ "transport": {
88
+ "type": "stdio",
89
+ "command": "npx",
90
+ "args": ["-y", "@rustrak/mcp"],
91
+ "env": {
92
+ "RUSTRAK_API_URL": "https://your-rustrak-instance.example.com",
93
+ "RUSTRAK_API_TOKEN": "your-40-char-hex-token"
94
+ }
95
+ }
96
+ }
97
+ ]
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### 3. Ask your AI anything
103
+
104
+ ```
105
+ "List all unresolved issues in project 1"
106
+ "Show me the stack trace for issue abc-123"
107
+ "Resolve all TypeError issues from the last deployment"
108
+ "Create a CI pipeline token and give me the value"
109
+ "How many events does issue xyz have?"
110
+ ```
58
111
 
59
112
  ## Environment Variables
60
113
 
61
- | Variable | Required | Default | Description |
62
- |----------|----------|---------|-------------|
63
- | `RUSTRAK_API_TOKEN` | ✅ | | 40-char hex API token. Server exits if missing. |
64
- | `RUSTRAK_API_URL` | ✅ | | Base URL of your Rustrak server. Server exits if missing. |
114
+ | Variable | Required | Description |
115
+ |---|---|---|
116
+ | `RUSTRAK_API_URL` | ✅ | Base URL of your Rustrak server (e.g. `https://errors.example.com`) |
117
+ | `RUSTRAK_API_TOKEN` | ✅ | 40-char hex API token create one in Settings Tokens |
118
+
119
+ The server exits immediately with a clear error message if either variable is missing.
65
120
 
66
- ## Available Tools
121
+ ## Available Tools (18)
67
122
 
68
123
  ### Projects
124
+
69
125
  | Tool | Description |
70
- |------|-------------|
126
+ |---|---|
71
127
  | `list_projects` | List all projects |
72
128
  | `get_project` | Get project details including DSN |
73
129
  | `create_project` | Create a new project |
74
130
 
75
131
  ### Issues
132
+
76
133
  | Tool | Description |
77
- |------|-------------|
134
+ |---|---|
78
135
  | `list_issues` | List issues with filters (open / resolved / muted / all) |
79
136
  | `get_issue` | Get a single issue with full details |
80
137
  | `resolve_issue` | Mark an issue as resolved |
@@ -83,69 +140,45 @@ Or use the project-level `.mcp.json` at the repo root (Claude Code picks this up
83
140
  | `delete_issue` | ⚠️ Permanently delete an issue and all its events |
84
141
 
85
142
  ### Events
143
+
86
144
  | Tool | Description |
87
- |------|-------------|
145
+ |---|---|
88
146
  | `list_events` | List raw events for an issue (cursor pagination) |
89
147
  | `get_event` | Get a single event with full Sentry envelope data |
90
148
 
91
149
  ### Tokens
150
+
92
151
  | Tool | Description |
93
- |------|-------------|
152
+ |---|---|
94
153
  | `list_tokens` | List API tokens (masked) |
95
154
  | `create_token` | Create a new API token (full value shown once) |
96
155
  | `revoke_token` | ⚠️ Permanently revoke an API token |
97
156
 
98
157
  ### Alerts
158
+
99
159
  | Tool | Description |
100
- |------|-------------|
160
+ |---|---|
101
161
  | `list_alert_channels` | List notification channels (Slack, email, webhook) |
102
162
  | `test_alert_channel` | Send a test notification to a channel |
103
163
  | `list_alert_rules` | List alert rules for a project |
104
164
 
105
- > ⚠️ Tools marked as destructive will prompt for confirmation in supported clients.
106
-
107
- ## Example prompts
108
-
109
- Once connected, you can ask your AI assistant things like:
110
-
111
- - _"List all unresolved issues in project 1"_
112
- - _"Show me the stack trace for issue abc-123"_
113
- - _"Resolve all TypeError issues from the last deployment"_
114
- - _"Create a token called 'CI pipeline' and give me the value"_
115
- - _"How many events does issue xyz have?"_
116
-
117
- ## Development
118
-
119
- ```bash
120
- # Build
121
- pnpm --filter @rustrak/mcp build
122
-
123
- # Run tests (33 tests)
124
- pnpm --filter @rustrak/mcp test
125
-
126
- # Type check
127
- pnpm --filter @rustrak/mcp typecheck
128
-
129
- # Watch mode
130
- pnpm --filter @rustrak/mcp dev
131
- ```
165
+ > ⚠️ Destructive tools (`delete_issue`, `revoke_token`) are annotated with `destructiveHint` — supported clients will prompt for confirmation before executing.
132
166
 
133
167
  ## Architecture
134
168
 
135
169
  ```
136
- AI Client (Claude Desktop / Cursor)
170
+ AI Client (Claude Desktop / Cursor / Continue)
137
171
  │ stdio (JSON-RPC)
138
172
 
139
173
  ┌─────────────────────┐
140
- │ @rustrak/mcp │
141
- │ McpServer │
174
+ │ @rustrak/mcp │ ← This package
142
175
  │ ├── projects │
143
176
  │ ├── issues │
144
177
  │ ├── events │
145
178
  │ ├── tokens │
146
179
  │ └── alerts │
147
180
  └──────────┬──────────┘
148
- │ HTTP (Bearer token)
181
+ │ HTTP (Bearer token via @rustrak/client)
149
182
 
150
183
  ┌─────────────────────┐
151
184
  │ Rustrak Server │
@@ -153,6 +186,38 @@ AI Client (Claude Desktop / Cursor)
153
186
  └─────────────────────┘
154
187
  ```
155
188
 
189
+ The server runs as a local process over stdio — no open network port, no daemon. The API token is read from environment variables and never exposed as a tool argument.
190
+
191
+ ## Related Packages
192
+
193
+ | Package | Description |
194
+ |---|---|
195
+ | [`@rustrak/client`](https://www.npmjs.com/package/@rustrak/client) | TypeScript HTTP client for the Rustrak API — used internally by this package |
196
+
197
+ ## What is Rustrak?
198
+
199
+ [Rustrak](https://abians.github.io/rustrak) is a self-hosted error tracking server written in Rust that is fully compatible with any Sentry SDK. No code changes needed if you're migrating from Sentry. Runs on ~50 MB of memory as a single binary or Docker image.
200
+
201
+ - [Getting Started](https://abians.github.io/rustrak/getting-started/overview)
202
+ - [Self-Hosting Guide](https://abians.github.io/rustrak/configuration/production)
203
+ - [GitHub](https://github.com/AbianS/rustrak)
204
+
205
+ ## Development
206
+
207
+ ```bash
208
+ # Build
209
+ pnpm --filter @rustrak/mcp build
210
+
211
+ # Run tests (33 tests)
212
+ pnpm --filter @rustrak/mcp test
213
+
214
+ # Type check
215
+ pnpm --filter @rustrak/mcp typecheck
216
+
217
+ # Watch mode
218
+ pnpm --filter @rustrak/mcp dev
219
+ ```
220
+
156
221
  ## License
157
222
 
158
- GPL-3.0
223
+ [GPL-3.0](https://github.com/AbianS/rustrak/blob/main/LICENSE)
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "@rustrak/mcp",
3
- "version": "0.1.0",
4
- "description": "MCP server for Rustrak error tracking — wraps @rustrak/client",
3
+ "version": "0.1.2",
4
+ "description": "MCP server that gives AI assistants (Claude, Cursor, Continue) full control of your Rustrak error tracking",
5
+ "homepage": "https://abians.github.io/rustrak/sdks/mcp",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/AbianS/rustrak.git",
9
+ "directory": "packages/mcp"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/AbianS/rustrak/issues"
13
+ },
5
14
  "publishConfig": {
6
15
  "access": "public"
7
16
  },
@@ -26,13 +35,23 @@
26
35
  "mcp",
27
36
  "model-context-protocol",
28
37
  "error-tracking",
29
- "claude"
38
+ "sentry",
39
+ "self-hosted",
40
+ "claude",
41
+ "cursor",
42
+ "ai",
43
+ "monitoring",
44
+ "observability"
30
45
  ],
46
+ "author": "AbianS",
31
47
  "license": "GPL-3.0",
48
+ "engines": {
49
+ "node": ">=18"
50
+ },
32
51
  "dependencies": {
33
52
  "@modelcontextprotocol/sdk": "1.29.0",
34
53
  "zod": "4.4.3",
35
- "@rustrak/client": "0.1.1"
54
+ "@rustrak/client": "0.1.3"
36
55
  },
37
56
  "devDependencies": {
38
57
  "@types/node": "25.8.0",