brightspace-mcp-server 1.0.0 → 1.0.4
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.
- package/README.md +53 -332
- package/build/setup.js +70 -19
- package/build/setup.js.map +1 -1
- package/build/utils/config-store.d.ts.map +1 -1
- package/build/utils/config-store.js +3 -2
- package/build/utils/config-store.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,372 +1,93 @@
|
|
|
1
1
|
# Brightspace MCP Server
|
|
2
2
|
|
|
3
|
-
> **
|
|
3
|
+
> **By [Rohan Muppa](https://github.com/rohanmuppa), ECE @ Purdue**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Talk to your Brightspace courses with AI. Ask about grades, due dates, announcements, and more. Works with Claude, ChatGPT, and Cursor.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
This is an [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server. MCP lets AI apps like Claude talk to outside tools. This server connects your AI to Brightspace so it can pull your grades, assignments, and course content on demand.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Works with any school that uses Brightspace.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
<p align="center">
|
|
12
|
+
<img src="https://raw.githubusercontent.com/RohanMuppa/brightspace-mcp-server/main/docs/how-it-works.svg" alt="Architecture diagram" width="100%">
|
|
13
|
+
</p>
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Try It
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- "What announcements did my professors post today?"
|
|
20
|
-
- "Who is the instructor for MATH 266?"
|
|
21
|
-
- "Download the lecture slides from Module 3"
|
|
22
|
-
- "What's my grade in all my classes?"
|
|
23
|
-
- "Get me the roster emails for my CS course"
|
|
17
|
+
> "Download my lecture slides and turn them into interactive flashcards"
|
|
18
|
+
> "Grab every assignment rubric and build me a visual dashboard of what I need to hit for an A"
|
|
24
19
|
|
|
25
|
-
##
|
|
20
|
+
## Steps to Install
|
|
26
21
|
|
|
27
|
-
|
|
28
|
-
- Download from https://nodejs.org/ (choose the LTS version)
|
|
29
|
-
- To check if you already have it: Open Terminal (Mac) or Command Prompt (Windows) and type `node --version`
|
|
30
|
-
|
|
31
|
-
2. **An MCP client** (any of these work)
|
|
32
|
-
- [Claude Desktop](https://claude.ai/download)
|
|
33
|
-
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
34
|
-
- [ChatGPT Desktop](https://openai.com/chatgpt/desktop/)
|
|
35
|
-
- [Cursor](https://cursor.com)
|
|
36
|
-
- Or any other app that supports MCP
|
|
37
|
-
|
|
38
|
-
## Setup
|
|
39
|
-
|
|
40
|
-
### Step 1: Clone this repository
|
|
41
|
-
|
|
42
|
-
Open Terminal (Mac) or Command Prompt (Windows) and run:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
git clone https://github.com/RohanMuppa/brightspace-mcp-server.git
|
|
46
|
-
cd brightspace-mcp-server
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Step 2: Install dependencies
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npm install
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
This will take about 1-2 minutes. It will also automatically install Chromium (used for authentication).
|
|
56
|
-
|
|
57
|
-
### Step 3: Set up your credentials
|
|
58
|
-
|
|
59
|
-
Copy the example environment file and fill in your Brightspace credentials:
|
|
60
|
-
|
|
61
|
-
**Mac/Linux:**
|
|
62
|
-
```bash
|
|
63
|
-
cp .env.example .env
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
**Windows (Command Prompt):**
|
|
67
|
-
```cmd
|
|
68
|
-
copy .env.example .env
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Then open `.env` in a text editor and fill in:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
D2L_BASE_URL=https://your-institution.brightspace.com
|
|
75
|
-
D2L_USERNAME=your_username
|
|
76
|
-
D2L_PASSWORD=your_password
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Set `D2L_BASE_URL` to your institution's Brightspace URL. **Purdue students**: use `https://purdue.brightspace.com` and your Purdue career account username. Your credentials stay on your machine and are never sent anywhere except your institution's login page.
|
|
80
|
-
|
|
81
|
-
### Step 4: Build the project
|
|
22
|
+
**You need:** [Node.js 18+](https://nodejs.org/) (download the LTS version)
|
|
82
23
|
|
|
24
|
+
**Purdue students:**
|
|
83
25
|
```bash
|
|
84
|
-
|
|
26
|
+
npx brightspace-mcp-server setup --purdue
|
|
85
27
|
```
|
|
86
28
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
### Step 4: Link the CLI tools
|
|
90
|
-
|
|
29
|
+
**Everyone else:**
|
|
91
30
|
```bash
|
|
92
|
-
|
|
31
|
+
npx brightspace-mcp-server setup
|
|
93
32
|
```
|
|
94
33
|
|
|
95
|
-
|
|
34
|
+
The wizard handles everything: credentials, MFA, and configuring your AI client. When it's done, restart Claude/ChatGPT/Cursor and start asking questions.
|
|
96
35
|
|
|
97
|
-
|
|
36
|
+
That's it! You're ready to go.
|
|
98
37
|
|
|
99
|
-
|
|
100
|
-
brightspace-auth
|
|
101
|
-
```
|
|
38
|
+
## Session Expired?
|
|
102
39
|
|
|
103
|
-
|
|
40
|
+
Sessions re-authenticate automatically. If auto-reauth fails (e.g., you missed the Duo push):
|
|
104
41
|
|
|
105
42
|
```bash
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**What happens:**
|
|
110
|
-
1. A browser window will open and log in automatically using your `.env` credentials
|
|
111
|
-
2. Approve the MFA push notification on your phone (Purdue students: approve the Duo push)
|
|
112
|
-
3. The browser will close automatically once authenticated
|
|
113
|
-
|
|
114
|
-
**Note:** You only need to do this once. The session lasts about 1 hour. When it expires, just run `npm run auth` again.
|
|
115
|
-
|
|
116
|
-
### Step 6: Configure your MCP client
|
|
117
|
-
|
|
118
|
-
Choose the setup instructions for your MCP client:
|
|
119
|
-
|
|
120
|
-
#### Claude Desktop
|
|
121
|
-
|
|
122
|
-
**Config file location:**
|
|
123
|
-
- **Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
124
|
-
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
125
|
-
|
|
126
|
-
Open the config file in a text editor and add this configuration (if the file doesn't exist, create it):
|
|
127
|
-
|
|
128
|
-
```json
|
|
129
|
-
{
|
|
130
|
-
"mcpServers": {
|
|
131
|
-
"brightspace": {
|
|
132
|
-
"command": "node",
|
|
133
|
-
"args": ["/absolute/path/to/brightspace-mcp-server/build/index.js"]
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
43
|
+
npx brightspace-mcp-server auth
|
|
137
44
|
```
|
|
138
45
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
To find the path:
|
|
142
|
-
- **Mac/Linux**: In Terminal, go to the project directory and run `pwd`
|
|
143
|
-
- **Windows**: In Command Prompt, go to the project directory and run `cd`
|
|
144
|
-
|
|
145
|
-
**Example (Mac):**
|
|
146
|
-
```json
|
|
147
|
-
{
|
|
148
|
-
"mcpServers": {
|
|
149
|
-
"brightspace": {
|
|
150
|
-
"command": "node",
|
|
151
|
-
"args": ["/Users/username/brightspace-mcp-server/build/index.js"]
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
```
|
|
46
|
+
## What You Can Ask About
|
|
156
47
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
See `claude-desktop-config.example.json` for the full example.
|
|
170
|
-
|
|
171
|
-
#### Cursor
|
|
172
|
-
|
|
173
|
-
**Config file location (choose one):**
|
|
174
|
-
- **Project-level**: `.cursor/mcp.json` in the project root
|
|
175
|
-
- **Global** (recommended for this server): `~/.cursor/mcp.json`
|
|
176
|
-
|
|
177
|
-
Create or open the config file and add this configuration:
|
|
178
|
-
|
|
179
|
-
```json
|
|
180
|
-
{
|
|
181
|
-
"mcpServers": {
|
|
182
|
-
"brightspace": {
|
|
183
|
-
"command": "node",
|
|
184
|
-
"args": ["/absolute/path/to/brightspace-mcp-server/build/index.js"]
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
**Important:** Replace `/absolute/path/to/brightspace-mcp-server` with the actual path on your computer (use `pwd` on Mac/Linux or `cd` on Windows to find it).
|
|
191
|
-
|
|
192
|
-
**Example (Mac):**
|
|
193
|
-
```json
|
|
194
|
-
{
|
|
195
|
-
"mcpServers": {
|
|
196
|
-
"brightspace": {
|
|
197
|
-
"command": "node",
|
|
198
|
-
"args": ["/Users/username/brightspace-mcp-server/build/index.js"]
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
**Example (Windows):**
|
|
205
|
-
```json
|
|
206
|
-
{
|
|
207
|
-
"mcpServers": {
|
|
208
|
-
"brightspace": {
|
|
209
|
-
"command": "node",
|
|
210
|
-
"args": ["C:\\Users\\username\\brightspace-mcp-server\\build\\index.js"]
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Save the file and **restart Cursor** to load the MCP server.
|
|
217
|
-
|
|
218
|
-
See `cursor-config.example.json` for the full example.
|
|
219
|
-
|
|
220
|
-
#### ChatGPT Desktop
|
|
221
|
-
|
|
222
|
-
ChatGPT Desktop configures MCP servers through its Settings UI, not a JSON file.
|
|
223
|
-
|
|
224
|
-
**Setup steps:**
|
|
225
|
-
1. Open ChatGPT Desktop
|
|
226
|
-
2. Go to **Settings**
|
|
227
|
-
3. Scroll down to find **"MCP Servers"** (may be under a Features or Tools section)
|
|
228
|
-
4. Click **"Add Server"** (or similar button)
|
|
229
|
-
5. Enter the following:
|
|
230
|
-
- **Server name**: `brightspace`
|
|
231
|
-
- **Command**: `node`
|
|
232
|
-
- **Argument**: `/absolute/path/to/brightspace-mcp-server/build/index.js` (replace with your actual path)
|
|
233
|
-
|
|
234
|
-
To find your path:
|
|
235
|
-
- **Mac/Linux**: In Terminal, go to the project directory and run `pwd`
|
|
236
|
-
- **Windows**: In Command Prompt, go to the project directory and run `cd`
|
|
237
|
-
|
|
238
|
-
**Example paths:**
|
|
239
|
-
- Mac: `/Users/username/brightspace-mcp-server/build/index.js`
|
|
240
|
-
- Windows: `C:\Users\username\brightspace-mcp-server\build\index.js`
|
|
241
|
-
|
|
242
|
-
**Note:** ChatGPT Desktop's MCP support may be in beta or rolling out gradually. If you don't see the MCP Servers option yet, check for app updates.
|
|
243
|
-
|
|
244
|
-
See `chatgpt-desktop-config.example.json` for a reference config structure.
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
After configuring your MCP client, **restart it completely** (quit and reopen, not just close the window).
|
|
249
|
-
|
|
250
|
-
### Step 7: Verify it works
|
|
251
|
-
|
|
252
|
-
1. Open your MCP client
|
|
253
|
-
2. Start a new conversation
|
|
254
|
-
3. Try asking: **"What are my courses?"**
|
|
255
|
-
|
|
256
|
-
If it works, you'll see a list of your Brightspace courses!
|
|
257
|
-
|
|
258
|
-
## Available Tools
|
|
259
|
-
|
|
260
|
-
| Tool | Description |
|
|
261
|
-
|------|-------------|
|
|
262
|
-
| `check_auth` | Check if you're logged in to Brightspace |
|
|
263
|
-
| `get_my_courses` | Get all your enrolled courses |
|
|
264
|
-
| `get_upcoming_due_dates` | Get assignments and quizzes due soon |
|
|
265
|
-
| `get_my_grades` | Get your grades for one or all courses |
|
|
266
|
-
| `get_announcements` | Get course announcements |
|
|
267
|
-
| `get_assignments` | Get detailed assignment and quiz information |
|
|
268
|
-
| `get_course_content` | Browse course content (modules, files, links) |
|
|
269
|
-
| `download_file` | Download course files or submission attachments |
|
|
270
|
-
| `get_classlist_emails` | Get email addresses for instructors and TAs |
|
|
271
|
-
| `get_roster` | Get course roster (instructors, TAs, optionally students) |
|
|
272
|
-
|
|
273
|
-
## Purdue Quick Start
|
|
274
|
-
|
|
275
|
-
If you're a Purdue student, here's the TL;DR:
|
|
276
|
-
|
|
277
|
-
1. Clone, `npm install`, `npm run build`, `npm link`
|
|
278
|
-
2. Copy `.env.example` to `.env`, set `D2L_BASE_URL=https://purdue.brightspace.com`, and add your Purdue career account credentials
|
|
279
|
-
3. Run `brightspace-auth` and approve the Duo push
|
|
280
|
-
4. Add the server to Claude Desktop / ChatGPT / Cursor (see config examples above)
|
|
281
|
-
5. Ask "What are my courses?" and you're good to go
|
|
282
|
-
|
|
283
|
-
## Advanced Configuration
|
|
284
|
-
|
|
285
|
-
### Filter courses
|
|
286
|
-
|
|
287
|
-
If you have a lot of courses and want to hide some, you can add course filters to your MCP client config:
|
|
288
|
-
|
|
289
|
-
```json
|
|
290
|
-
{
|
|
291
|
-
"mcpServers": {
|
|
292
|
-
"brightspace": {
|
|
293
|
-
"command": "node",
|
|
294
|
-
"args": ["/absolute/path/to/brightspace-mcp-server/build/index.js"],
|
|
295
|
-
"env": {
|
|
296
|
-
"D2L_INCLUDE_COURSES": "123456,789012",
|
|
297
|
-
"D2L_EXCLUDE_COURSES": "111111,222222",
|
|
298
|
-
"D2L_ACTIVE_ONLY": "true"
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
**Options:**
|
|
306
|
-
- `D2L_INCLUDE_COURSES`: Only show these course IDs (comma-separated). Overrides other filters.
|
|
307
|
-
- `D2L_EXCLUDE_COURSES`: Hide these course IDs (comma-separated).
|
|
308
|
-
- `D2L_ACTIVE_ONLY`: Set to `"false"` to show inactive courses (default: `"true"`).
|
|
309
|
-
|
|
310
|
-
**How to find course IDs:**
|
|
311
|
-
Ask "What are my courses?" and the tool will show the IDs.
|
|
312
|
-
|
|
313
|
-
### Re-authenticate
|
|
314
|
-
|
|
315
|
-
Your Brightspace session expires after about 1 hour. When it does, the server will report "Not authenticated."
|
|
316
|
-
|
|
317
|
-
To log in again:
|
|
318
|
-
```bash
|
|
319
|
-
brightspace-auth
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
You don't need to restart your MCP client after re-authenticating.
|
|
323
|
-
|
|
324
|
-
## Updating
|
|
325
|
-
|
|
326
|
-
To update to the latest version:
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
brightspace-update
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
This pulls the latest code, installs any new dependencies, and rebuilds automatically. Restart your MCP client after updating.
|
|
48
|
+
| Topic | Examples |
|
|
49
|
+
|-------|---------|
|
|
50
|
+
| Grades | "Am I passing all my classes?" · "Compare my grades across all courses" |
|
|
51
|
+
| Assignments | "What's due in the next 48 hours?" · "Summarize every assignment I haven't turned in yet" |
|
|
52
|
+
| Announcements | "Did any professor post something important today?" · "What did my CS prof announce this week?" |
|
|
53
|
+
| Course content | "Find the midterm review slides" · "Download every PDF from Module 5" |
|
|
54
|
+
| Roster | "Who are the TAs for ECE 264?" · "Get me my instructor's email" |
|
|
55
|
+
| Discussions | "What are people saying in the final project thread?" · "Summarize the latest discussion posts" |
|
|
56
|
+
| Planning | "Build me a study schedule based on my upcoming due dates" · "Which class needs the most attention right now?" |
|
|
333
57
|
|
|
334
58
|
## Troubleshooting
|
|
335
59
|
|
|
336
|
-
**"Not authenticated"
|
|
337
|
-
- **Solution**: Run `brightspace-auth` (or `npm run auth` in the project directory). The browser will open and you'll log in again.
|
|
60
|
+
**"Not authenticated"** → Run `npx brightspace-mcp-server auth`
|
|
338
61
|
|
|
339
|
-
**
|
|
340
|
-
- **Solution 1**: Restart your MCP client completely (quit and reopen, not just close the window).
|
|
341
|
-
- **Solution 2**: Check that the path in your MCP config is correct and points to `build/index.js`.
|
|
342
|
-
- **Solution 3**: Make sure you ran `npm run build` after any code changes.
|
|
62
|
+
**AI client not responding** → Quit and reopen it completely (not just close the window)
|
|
343
63
|
|
|
344
|
-
**
|
|
345
|
-
- **Solution**: Make sure you have a default browser set. Try running `npm run auth` again. If it still doesn't work, check that Chromium was installed correctly with `npx playwright install chromium`.
|
|
64
|
+
**Need to redo setup** → Run `npx brightspace-mcp-server setup` again
|
|
346
65
|
|
|
347
|
-
**
|
|
348
|
-
- **Solution 1**: Make sure your `.env` file is in the project root directory (same folder as `package.json`) with your credentials filled in. The auth CLI reads credentials from this file.
|
|
349
|
-
- **Solution 2**: Run `npm run auth` from the project directory (not `brightspace-auth` globally) to ensure the `.env` file is found.
|
|
350
|
-
- **Solution 3**: If Chromium fails to install, run `npx playwright install chromium` manually.
|
|
66
|
+
**Config location** → `~/.brightspace-mcp/config.json` (you can edit this directly)
|
|
351
67
|
|
|
352
68
|
## Security
|
|
353
69
|
|
|
354
|
-
-
|
|
355
|
-
- Session tokens are encrypted
|
|
356
|
-
-
|
|
357
|
-
-
|
|
358
|
-
- All communication with Brightspace uses HTTPS.
|
|
70
|
+
- Credentials stay on your machine at `~/.brightspace-mcp/config.json` (restricted permissions)
|
|
71
|
+
- Session tokens are encrypted (AES-256-GCM)
|
|
72
|
+
- All traffic to Brightspace is HTTPS
|
|
73
|
+
- Nothing is sent anywhere except your school's login page
|
|
359
74
|
|
|
360
|
-
##
|
|
75
|
+
## Built With
|
|
361
76
|
|
|
362
|
-
|
|
77
|
+

|
|
78
|
+

|
|
79
|
+

|
|
80
|
+

|
|
81
|
+

|
|
82
|
+

|
|
83
|
+

|
|
363
84
|
|
|
364
|
-
##
|
|
85
|
+
## Updates
|
|
365
86
|
|
|
366
|
-
|
|
87
|
+
Automatic. Your AI client pulls the latest version every time it starts. No action needed.
|
|
88
|
+
|
|
89
|
+
---
|
|
367
90
|
|
|
368
|
-
|
|
91
|
+
Proudly made for Boilermakers by [Rohan Muppa](https://github.com/rohanmuppa) 🚂
|
|
369
92
|
|
|
370
|
-
|
|
371
|
-
GitHub: [@rohanmuppa](https://github.com/rohanmuppa)
|
|
372
|
-
Project: [brightspace-mcp-server](https://github.com/rohanmuppa/brightspace-mcp-server)
|
|
93
|
+
[Report a bug](https://github.com/rohanmuppa/brightspace-mcp-server/issues) · AGPL-3.0 · Copyright 2026 Rohan Muppa
|
package/build/setup.js
CHANGED
|
@@ -19,6 +19,17 @@ const green = (s) => `\x1b[32m${s}\x1b[0m`;
|
|
|
19
19
|
const dim = (s) => `\x1b[2m${s}\x1b[0m`;
|
|
20
20
|
const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
|
|
21
21
|
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
const SCHOOL_PRESETS = {
|
|
23
|
+
purdue: {
|
|
24
|
+
name: "Purdue University",
|
|
25
|
+
baseUrl: "https://purdue.brightspace.com",
|
|
26
|
+
usernameLabel: "Purdue career account username",
|
|
27
|
+
mfaNote: "Approve the Duo push on your phone.",
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
// Parse --purdue, --osu, etc. from argv
|
|
31
|
+
const schoolFlag = process.argv.find((a) => a.startsWith("--"))?.replace(/^--/, "").toLowerCase();
|
|
32
|
+
const preset = schoolFlag ? SCHOOL_PRESETS[schoolFlag] : undefined;
|
|
22
33
|
// ── Readline helpers ───────────────────────────────────────────────
|
|
23
34
|
function ask(rl, question) {
|
|
24
35
|
return new Promise((resolve) => {
|
|
@@ -149,10 +160,17 @@ function configureMcpClient(configPath) {
|
|
|
149
160
|
config.mcpServers = {};
|
|
150
161
|
}
|
|
151
162
|
// Add/update brightspace entry
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
// On Windows, npx is a .cmd shim that must be invoked through cmd.exe
|
|
164
|
+
const isWindows = process.platform === "win32";
|
|
165
|
+
config.mcpServers["brightspace"] = isWindows
|
|
166
|
+
? {
|
|
167
|
+
command: "cmd",
|
|
168
|
+
args: ["/c", "npx", "-y", "brightspace-mcp-server@latest"],
|
|
169
|
+
}
|
|
170
|
+
: {
|
|
171
|
+
command: "npx",
|
|
172
|
+
args: ["-y", "brightspace-mcp-server@latest"],
|
|
173
|
+
};
|
|
156
174
|
// Ensure parent directory exists
|
|
157
175
|
const dir = path.dirname(configPath);
|
|
158
176
|
if (!fs.existsSync(dir)) {
|
|
@@ -184,8 +202,14 @@ async function main() {
|
|
|
184
202
|
process.exit(0);
|
|
185
203
|
});
|
|
186
204
|
console.log("");
|
|
187
|
-
|
|
188
|
-
|
|
205
|
+
if (preset) {
|
|
206
|
+
console.log(bold(`Brightspace MCP Server — ${preset.name} Setup`));
|
|
207
|
+
console.log("=".repeat(`Brightspace MCP Server — ${preset.name} Setup`.length));
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
console.log(bold("Brightspace MCP Server — Setup Wizard"));
|
|
211
|
+
console.log("======================================");
|
|
212
|
+
}
|
|
189
213
|
console.log("");
|
|
190
214
|
const rl = readline.createInterface({
|
|
191
215
|
input: process.stdin,
|
|
@@ -193,21 +217,31 @@ async function main() {
|
|
|
193
217
|
});
|
|
194
218
|
// ── Step 1: Brightspace URL ──────────────────────────────────────
|
|
195
219
|
let baseUrl = "";
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
220
|
+
if (preset) {
|
|
221
|
+
baseUrl = preset.baseUrl;
|
|
222
|
+
console.log(dim(` Brightspace URL: ${baseUrl}`));
|
|
223
|
+
console.log("");
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
while (!baseUrl) {
|
|
227
|
+
const raw = await ask(rl, "What is your Brightspace URL? (e.g., purdue.brightspace.com): ");
|
|
228
|
+
const normalized = normalizeUrl(raw);
|
|
229
|
+
if (!raw || !isValidUrl(normalized)) {
|
|
230
|
+
console.log(yellow(" Please enter a valid URL (e.g., purdue.brightspace.com)"));
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
baseUrl = normalized;
|
|
202
234
|
}
|
|
203
|
-
baseUrl
|
|
235
|
+
console.log(dim(` → ${baseUrl}`));
|
|
236
|
+
console.log("");
|
|
204
237
|
}
|
|
205
|
-
console.log(dim(` → ${baseUrl}`));
|
|
206
|
-
console.log("");
|
|
207
238
|
// ── Step 2: Username ─────────────────────────────────────────────
|
|
239
|
+
const usernamePrompt = preset
|
|
240
|
+
? `What is your ${preset.usernameLabel}? `
|
|
241
|
+
: "What is your Brightspace username? ";
|
|
208
242
|
let username = "";
|
|
209
243
|
while (!username) {
|
|
210
|
-
username = await ask(rl,
|
|
244
|
+
username = await ask(rl, usernamePrompt);
|
|
211
245
|
if (!username) {
|
|
212
246
|
console.log(yellow(" Username is required."));
|
|
213
247
|
}
|
|
@@ -216,9 +250,12 @@ async function main() {
|
|
|
216
250
|
// ── Step 3: Password (hidden) ────────────────────────────────────
|
|
217
251
|
// Close the rl temporarily since askPassword manages its own
|
|
218
252
|
rl.close();
|
|
253
|
+
const passwordPrompt = preset
|
|
254
|
+
? `What is your ${preset.usernameLabel.replace("username", "password")}? `
|
|
255
|
+
: "What is your Brightspace password? ";
|
|
219
256
|
let password = "";
|
|
220
257
|
while (!password) {
|
|
221
|
-
password = await askPassword(
|
|
258
|
+
password = await askPassword(passwordPrompt);
|
|
222
259
|
if (!password) {
|
|
223
260
|
console.log(yellow(" Password is required."));
|
|
224
261
|
}
|
|
@@ -231,8 +268,9 @@ async function main() {
|
|
|
231
268
|
});
|
|
232
269
|
// ── Step 4: MFA config ───────────────────────────────────────────
|
|
233
270
|
let mfaTotpSecret;
|
|
234
|
-
|
|
235
|
-
|
|
271
|
+
if (preset) {
|
|
272
|
+
// School preset — we know they use Duo
|
|
273
|
+
console.log(dim(` MFA: ${preset.mfaNote}`));
|
|
236
274
|
const totp = await ask(rl2, "Do you have a TOTP secret key? (paste it, or press Enter to use push notifications): ");
|
|
237
275
|
if (totp) {
|
|
238
276
|
mfaTotpSecret = totp;
|
|
@@ -242,6 +280,19 @@ async function main() {
|
|
|
242
280
|
console.log(dim(" → Will use Duo push notifications."));
|
|
243
281
|
}
|
|
244
282
|
}
|
|
283
|
+
else {
|
|
284
|
+
const useMfa = await ask(rl2, "Do you use Duo MFA? (yes/no): ");
|
|
285
|
+
if (/^y(es)?$/i.test(useMfa)) {
|
|
286
|
+
const totp = await ask(rl2, "Do you have a TOTP secret key? (paste it, or press Enter to use push notifications): ");
|
|
287
|
+
if (totp) {
|
|
288
|
+
mfaTotpSecret = totp;
|
|
289
|
+
console.log(dim(" → TOTP secret saved. MFA will be handled automatically."));
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
console.log(dim(" → Will use Duo push notifications."));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
245
296
|
console.log("");
|
|
246
297
|
// ── Step 5: Save config ──────────────────────────────────────────
|
|
247
298
|
const config = {
|
package/build/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG9E,eAAe;AACf,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AACjD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACnD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAChD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAW7D,MAAM,cAAc,GAAiC;IACnD,MAAM,EAAE;QACN,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,gCAAgC;QACzC,aAAa,EAAE,gCAAgC;QAC/C,OAAO,EAAE,qCAAqC;KAC/C;CACF,CAAC;AAEF,wCAAwC;AACxC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAClG,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAEnE,sEAAsE;AAEtE,SAAS,GAAG,CAAC,EAAsB,EAAE,QAAgB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,8DAA8D;QAC7D,OAAO,CAAC,MAAc,CAAC,KAAK,GAAG,CAC9B,KAAU,EACV,YAAkB,EAClB,EAAQ,EACC,EAAE;YACX,IAAI,KAAK,EAAE,CAAC;gBACV,qCAAqC;gBACrC,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;oBACvC,YAAY,EAAE,CAAC;oBACf,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,EAAE;oBAAE,EAAE,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,KAAK,GAAG,IAAI,CAAC;QAEb,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,SAAS;YACT,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,QAAQ;YACR,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,YAAY;YACZ,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,mBAAmB;YACnB,QAAQ,IAAI,EAAE,CAAC;YACf,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AAEtE,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,yBAAyB;IACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9B,wBAAwB;IACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AASD,SAAS,0BAA0B;IACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,IAAI,CACd,EAAE,CAAC,OAAO,EAAE,EACZ,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,IAAI,MAAM,GAAc,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAE3C,kCAAkC;IAClC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;YAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAC,CAAC;YACjF,MAAM,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,+BAA+B;IAC/B,sEAAsE;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,SAAS;QAC1C,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,CAAC;SAC3D;QACH,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,+BAA+B,CAAC;SAC9C,CAAC;IAEN,iCAAiC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AAEtE,SAAS,OAAO;IACd,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAExD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,CAAC,QAAQ,EAChB,CAAC,UAAU,CAAC,EACZ;YACE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;YACtB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,EACD,CAAC,KAAK,EAAE,EAAE;YACR,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CACF,CAAC;QACF,mDAAmD;QACnD,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sEAAsE;AAEtE,KAAK,UAAU,IAAI;IACjB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,4BAA4B,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,GAAG,CACnB,EAAE,EACF,gEAAgE,CACjE,CAAC;YACF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAC,CAAC;gBACjF,SAAS;YACX,CAAC;YACD,OAAO,GAAG,UAAU,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,oEAAoE;IACpE,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,gBAAgB,MAAM,CAAC,aAAa,IAAI;QAC1C,CAAC,CAAC,qCAAqC,CAAC;IAC1C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjB,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,oEAAoE;IACpE,6DAA6D;IAC7D,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,gBAAgB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI;QAC1E,CAAC,CAAC,qCAAqC,CAAC;IAC1C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjB,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,yCAAyC;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,aAAiC,CAAC;IAEtC,IAAI,MAAM,EAAE,CAAC;QACX,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,GAAG,EACH,uFAAuF,CACxF,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,GAAG,EACH,uFAAuF,CACxF,CAAC;YACF,IAAI,IAAI,EAAE,CAAC;gBACT,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;YAChF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,oEAAoE;IACpE,MAAM,MAAM,GAAoB;QAC9B,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,oEAAoE;IACpE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,gDAAgD,CAAC,CAAC;IACjF,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;QAC3B,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,uEAAuE,CAAC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,oEAAoE;IACpE,MAAM,UAAU,GAAG,0BAA0B,EAAE,CAAC;IAChD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,MAAM,GAAG,CAC5B,GAAG,EACH,sEAAsE,CACvE,CAAC;QACF,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC,CAAC;YACxF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,yCAAyC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CACpG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,oEAAoE;IACpE,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,MAAM,GAAG,CAC5B,GAAG,EACH,iEAAiE,CAClE,CAAC;QACF,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5F,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,oEAAoE;IACpE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/utils/config-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAKD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,eAAe,IAAI,eAAe,CAGjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../src/utils/config-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAKD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,eAAe,IAAI,eAAe,CAGjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAQ7D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
|
@@ -16,11 +16,12 @@ export function loadConfigStore() {
|
|
|
16
16
|
return JSON.parse(raw);
|
|
17
17
|
}
|
|
18
18
|
export function saveConfigStore(config) {
|
|
19
|
+
const isWindows = process.platform === "win32";
|
|
19
20
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
20
|
-
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
21
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true, ...(isWindows ? {} : { mode: 0o700 }) });
|
|
21
22
|
}
|
|
22
23
|
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + "\n", {
|
|
23
|
-
mode: 0o600,
|
|
24
|
+
...(isWindows ? {} : { mode: 0o600 }),
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
export function getConfigStorePath() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/utils/config-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAgB9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/utils/config-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAgB9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACpE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "brightspace-mcp-server",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "MCP server for Brightspace (D2L)
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "MCP server for Brightspace (D2L). Check grades, due dates, announcements, rosters and more via Claude, ChatGPT, Cursor, or any MCP client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"license": "AGPL-3.0-only",
|
|
50
50
|
"author": "Rohan Muppa",
|
|
51
|
-
"homepage": "https://github.com/
|
|
51
|
+
"homepage": "https://github.com/RohanMuppa/brightspace-mcp-server",
|
|
52
52
|
"repository": {
|
|
53
53
|
"type": "git",
|
|
54
|
-
"url": "https://github.com/
|
|
54
|
+
"url": "https://github.com/RohanMuppa/brightspace-mcp-server.git"
|
|
55
55
|
},
|
|
56
56
|
"bugs": {
|
|
57
|
-
"url": "https://github.com/
|
|
57
|
+
"url": "https://github.com/RohanMuppa/brightspace-mcp-server/issues"
|
|
58
58
|
},
|
|
59
59
|
"keywords": [
|
|
60
60
|
"mcp",
|