Skip to main content
Glama
README.md
<div align="center">

# πŸŽ“ Eagle Flightplan

**An AI-ready degree & schedule planner for University of Northwestern – St. Paul students.**

[](https://github.com/HenryGetz/unw-planner/actions/workflows/ci.yml)



*Ask your AI assistant what classes you still need, find open sections that fit your life, avoid time conflicts, and map out every semester to graduation.*

</div>

> [!NOTE]
> **Independent Project:** `unw-planner` is built for UNW students and is not affiliated with, endorsed by, or supported by the University of Northwestern – St. Paul, Ellucian, or Rate My Professors.

---

## ✨ What It Does

Instead of clicking through half a dozen student portals, connect `unw-planner` to your favorite AI tool (like Claude Desktop or Cursor) and plan your degree in plain English:

- **Checks what you have left** β€” Reads your degree progress and remaining requirements automatically.
- **Finds real, open classes** β€” Matches your remaining credits against the live UNW course catalog and open sections.
- **Prevents time conflicts** β€” Builds conflict-free schedules for next semester or your entire path to graduation.
- **Factors in professor ratings** β€” Uses Rate My Professors scores as a gentle tie-breaker when multiple sections fit.

---

## 🧠 How Your AI Uses It

```mermaid
flowchart LR
    S["πŸŽ“ You (Student)<br/>Chat in plain English"] <--> AI["πŸ€– AI Assistant<br/>Claude, Cursor, etc."]
    AI <--> MCP["⚑ unw-planner<br/>MCP Server"]

    MCP --> A["πŸ“‹ Degree Progress<br/>Remaining credits & requirements"]
    MCP --> B["πŸ” Live Course Search<br/>Open sections, seats & times"]
    MCP --> C["πŸ—“οΈ Schedule Builder<br/>Conflict checks & multi-term plans"]
    MCP --> D["⭐ Professor Insights<br/>Rate My Professors preference"]

    A & B & C & D --> Plan["βœ… Tailored Semester Plan<br/>Tweak interactively anytime"]
    Plan -.->|"Swap a class, avoid 8 AMs, balance credits"| AI
```

---

## πŸš€ Quick Start

### 1. Install in one command

Requires **Python 3.11+** and a **UNW student account**.

```bash
pipx install git+https://github.com/HenryGetz/unw-planner.git
```

### 2. Sign in with your UNW account

Run the login setup once to connect your **UNW Microsoft account**:

```bash
unwplanner login
```

- **Local & private:** Your session stays on your own computerβ€”credentials and session cookies are stored locally and refreshed automatically so you aren't prompted every time.
- **Two-factor friendly:** Supports your standard Microsoft phone approval (or an authenticator TOTP code if you prefer).

### 3. Connect to your AI tool

Add `unw-planner` to your AI client's MCP config (for example, Claude Desktop's `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "unw-planner": {
      "command": "unwplanner-mcp"
    }
  }
}
```

Restart your AI app, and you're ready to plan.

---

## πŸ’¬ Try Asking Your AI

| Goal | Example Prompt |
| :--- | :--- |
| **Audit check** | *"What classes do I still need to graduate, and which ones are offered this fall?"* |
| **Schedule build** | *"Build me a conflict-free 16-credit Fall schedule with no classes before 9:30 AM."* |
| **Professor match** | *"Are there multiple sections for my stats requirement? Pick the highest-rated professor."* |
| **Multi-term map** | *"Lay out every semester from now until Spring 2028 so I don't miss any prerequisites."* |
| **Quick swap** | *"Move my Tuesday afternoon class to Thursday morning and re-check for conflicts."* |

---

&lt;details&gt;
&lt;summary&gt;πŸ› οΈ Using the CLI or developing locally?&lt;/summary&gt;

Everything `unw-planner` exposes to your AI is also available from the terminal via `unwplanner --help`. Check the project's `docs/` folder for standalone CLI commands, logging details, and contributor setup.

&lt;/details&gt;

TDQS

A3.6/5.0

Scored across 20 tools

Disambiguation4/5

Most tools target a clearly distinct resource or action, and the descriptions explicitly draw boundaries where overlap exists (unw_audit vs unw_remaining is 'authoritative what-is-left', unw_search vs unw_candidates is 'wraps the resolver', unw_plan_draft vs unw_roadmap is 'single-term with pins vs multi-term'). The remaining soft overlaps β€” unw_register_preview re-checking seats/conflicts/prereqs that unw_search and unw_conflicts already surface, and unw_banner_plans vs the local draft tools β€” are workable but could still cause misselection.

Naming Consistency4/5

Nearly all names share the unw_ prefix and snake_case noun-oriented pattern, with the five banner_plan tools forming an internally consistent verb-suffixed cluster. Minor deviations: unw_search is the lone bare verb, unw_plan_draft uses a noun+noun order unlike its sibling unw_roadmap, and unw_register_preview vs unw_registration_window use different stems for the same domain.

Tool Count4/5

Twenty tools is slightly above the comfortable range, but the surface spans several genuinely separate concerns (auth, audit, catalog search, RMP, drafting, Banner worksheet CRUD, registration checks), and each tool maps to a real operation. The only marginal additions are the near-paired audit/remaining and search/candidates tools.

Completeness4/5

The lifecycle is well covered: state check, profile, audit and unmet requirements, term catalog and course detail, candidate resolution, ratings, conflict checking, single- and multi-term planning, Banner worksheet create/add/remove/delete, and registration eligibility previews. The notable gap is that nothing ever performs a real add/drop/register or waitlist action β€” a deliberate safety boundary, but it leaves an agent at a dead end for the final registration step, and there is no schedule export.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues