academic-assistant
Provides integration with GitHub for listing repositories, viewing commits, creating repositories, and pushing code files.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@academic-assistantwhat assignments are due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ Academic Assistant
AI-powered academic assistant that connects your university tools in one chat interface. Ask questions in plain English and it pulls data from GitHub, Brightspace, Outlook, and your local files.
Built for UTRGV students โ works with UTRGV Brightspace (D2L) and @utrgv.edu Office 365 email.
Table of Contents
Related MCP server: AI Personal Hub
Quick Start
# 1. Clone the repo
git clone https://github.com/Miguel121699/academic-assistant.git
cd academic-assistant
# 2. Install Python dependencies
python -m venv .venv
source .venv/bin/activate
pip install -e .
# 3. Install Ollama (free local LLM)
brew install ollama
ollama serve &
ollama pull llama3.1:8b
# 4. Configure credentials
cp .env.example .env
# Edit .env with your API keys (see Module Setup below)
# 5. Run
academic-assistantRequirements
macOS (tested on Apple Silicon)
Python 3.11+
Ollama (free) OR an OpenAI API key ($)
~5GB disk space for the LLM model
Installation
Step 1: Clone the repository
git clone https://github.com/Miguel121699/academic-assistant.git
cd academic-assistantStep 2: Create a virtual environment
python -m venv .venv
source .venv/bin/activateStep 3: Install the package
pip install -e .This installs four commands:
academic-assistantโ Interactive chat agentacademic-serverโ Standalone MCP server (for use with Claude, Kiro, etc.)academic-oauthโ Microsoft OAuth helper (personal accounts)academic-oauth-utrgvโ UTRGV Outlook login (device code flow)
Step 4: Create your config file
cp .env.example .envLLM Setup (Ollama)
Ollama runs AI models locally on your Mac โ completely free, no API key needed.
Install Ollama
# On Apple Silicon Mac:
arch -arm64 brew install ollama
# On Intel Mac:
brew install ollamaOr download from: https://ollama.com/download
Start Ollama
# Start the server (runs in background)
ollama serve &
# Or run in foreground to see logs:
ollama serveDownload the model
# Recommended: Llama 3.1 8B (~5GB download, good tool-calling support)
ollama pull llama3.1:8bOther model options:
# Smaller/faster (3.8GB, less accurate):
ollama pull llama3.2:3b
# Larger/smarter (requires 48GB+ RAM):
ollama pull llama3.1:70b
# Good at coding tasks:
ollama pull deepseek-coder-v2:16bVerify it's working
ollama list
# Should show: llama3.1:8bThat's it! The assistant auto-detects Ollama at http://localhost:11434 and uses it.
Starting Ollama on each session
Ollama doesn't auto-start on boot. Each time you open a new terminal:
ollama serve &Or set it to auto-start:
brew services start ollamaModule Setup
Edit your .env file for each service you want to connect:
nano .envGitHub
What you get: List repos, view commits, create repos, push code files.
Click "Generate new token"
Name it
academic-assistantSet expiration: 90 days (or no expiry)
Repository access: Select "All repositories"
Permissions โ Repository permissions:
Administration: Read and write (to create repos)
Contents: Read and write (to push files)
Metadata: Read-only (default)
Click Generate token
Copy the token (starts with
github_pat_...)
Add to .env:
GITHUB_TOKEN=github_pat_your-token-here
GITHUB_USERNAME=your-github-usernameToken lasts: 90 days (or forever if you chose no expiry). No refresh needed.
Brightspace (UTRGV D2L)
What you get: List courses, view assignments/due dates, check grades, read announcements, see upcoming deadlines.
There are two authentication methods:
Method A: Manual Cookie Copy (works immediately)
Open https://utrgv.brightspace.com in Chrome and log in
Press Cmd+Option+I to open DevTools
Click the Application tab
In the left sidebar: Cookies โ
https://utrgv.brightspace.comFind and copy the Value of these two cookies:
d2lSessionVald2lSecureSessionVal
Add to .env:
BRIGHTSPACE_SESSION_VAL=paste-d2lSessionVal-here
BRIGHTSPACE_SECURE_SESSION_VAL=paste-d2lSecureSessionVal-hereโ ๏ธ Cookies expire every ~24 hours. You'll need to repeat this daily.
Method B: Auto-Login (set and forget)
To skip daily cookie refresh, add your UTRGV credentials:
UTRGV_USERNAME=your.utrgv.username
UTRGV_PASSWORD=your-utrgv-passwordThe assistant will automatically log in via UTRGV Shibboleth SSO when cookies expire and refresh them in .env.
Note: If UTRGV uses Duo MFA, auto-login may require an additional approval step on your phone.
โ ๏ธ Your password is stored in plaintext in .env. The .gitignore ensures it's never committed to git.
Outlook (@utrgv.edu)
What you get: Read/send emails, view/create calendar events โ all from your @utrgv.edu account.
This uses Microsoft's device code flow โ no Azure app registration needed.
One-time setup:
# Make sure you're in the project with venv active:
cd academic-assistant
source .venv/bin/activate
# Run the login command:
academic-oauth-utrgvYou'll see:
============================================================
To sign in with your UTRGV email:
1. Open: https://login.microsoft.com/device
2. Enter code: ABC123XYZ
3. Log in with your @utrgv.edu account
============================================================Steps:
Open https://login.microsoft.com/device in your browser
Type the code shown in your terminal (NOT sent to email โ it's displayed in the terminal)
Sign in with your @utrgv.edu Microsoft account
Approve the permissions
Terminal will say "โ Login successful! Outlook connected."
The tokens are saved to .env automatically.
Token lasts: ~90 days. Auto-refreshes silently each time you use it. Only need to redo academic-oauth-utrgv if you don't use it for 90+ days.
Local Files
What you get: Read, write, list, and search files on your computer.
No configuration needed! The first time the assistant tries to access a folder, you'll see a permission prompt:
๐ File access requested:
Path: /Users/you/Desktop/homework.py
Allow access to /Users/you/Desktop?
(y)es / (n)o / (a)lways:yโ Allow for this session onlynโ Deny accessaโ Allow permanently (saved to.env, never asks again)
To pre-approve directories without prompts, add to .env:
ALLOWED_DIRECTORIES=~/Desktop,~/Documents,~/Downloads,~/projectsRunning the Assistant
# 1. Make sure Ollama is running
ollama serve &
# 2. Activate the environment
cd /path/to/academic-assistant
source .venv/bin/activate
# 3. Start chatting
academic-assistantYou'll see:
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ Academic Assistant โ
โ LLM: Ollama llama3.1:8b (local) โ
โ Services: โ GitHub | โ Brightspace | โ Outlook (@utrgv.edu) โ
โ โ
โ Commands: /reset (new conversation) /quit (exit) /help โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏCommands
/helpโ Show all available tools/resetโ Clear conversation history (start fresh)/quitor/exitโ Exit the assistant
Example prompts
"What assignments are due this week?"
"List my courses"
"Show my unread emails"
"What's on my calendar tomorrow?"
"List my GitHub repos"
"Create a private repo called homework-6"
"Find all PDF files on my Desktop"
"Read the file at ~/Documents/CS3340/lab1.py"
Daily Usage
Here's what you need each day:
Step | Command | When needed |
Start Ollama |
| Every new terminal session |
Activate env |
| Every new terminal session |
Run assistant |
| When you want to chat |
Refresh Brightspace cookies | See Method A | Every ~24h (unless using auto-login) |
One-liner to start everything:
cd ~/path/to/academic-assistant && ollama serve & source .venv/bin/activate && academic-assistantTroubleshooting
"Connection refused" or Ollama not responding
# Check if Ollama is running:
curl http://localhost:11434/api/tags
# If not, start it:
ollama serve &
# Verify model is downloaded:
ollama listBrightspace says "Session expired"
Your cookies expired. Either:
Re-copy cookies from browser (Method A)
Or add
UTRGV_USERNAME/UTRGV_PASSWORDto.envfor auto-refresh
Outlook says "Token refresh failed"
Re-run the device code flow:
academic-oauth-utrgvGitHub shows "401 Unauthorized"
Your token expired or lacks permissions. Generate a new one at https://github.com/settings/tokens
LLM makes up fake data
Known issue with small local models. The assistant has guardrails to catch most hallucinations. If you see clearly fake data (fictional course names, made-up assignments), just ignore it and rephrase your question. Upgrading to a larger model or OpenAI fixes this.
Agent asks for my password in chat
Never type credentials into the chat. This is the local LLM hallucinating an auth prompt. Hit Enter to skip it or Ctrl+C and restart. The CLI has filters to catch these, but small models occasionally get through.
Using OpenAI Instead of Ollama
If you have an OpenAI API key, the assistant uses GPT-4o which is significantly better at tool-calling and never hallucinates fake data.
Get a key at https://platform.openai.com/api-keys
Add to
.env:OPENAI_API_KEY=sk-your-key-hereRestart
academic-assistant
The banner will show LLM: OpenAI gpt-4o and you don't need Ollama running.
Cost: ~$0.01-0.05 per conversation (very cheap for personal use).
Priority: If both are configured, OpenAI is used over Ollama.
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Academic Assistant โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Agent Loop (OpenAI or Ollama) โ โ
โ โ - Receives user message โ โ
โ โ - Decides which tools to call โ โ
โ โ - Feeds results back to LLM โ โ
โ โ - Returns final answer โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโดโโโโ โโโโโโโโโโโโ โโโโโโโโโโ โ
โ โ GitHub โ โBrightspace โ โ Outlook โ โ Files โ โ
โ โ Tools โ โ Tools โ โ Tools โ โ Tools โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโ โ
โ โ โ โ โ โ
โโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโ
โ โ โ โ
GitHub API D2L Valence MS Graph API Local FS
(cookies) (device code)Available Tools (21 total)
GitHub (5 tools)
Tool | Description |
| List your repositories |
| Get repo details + recent commits |
| Create a new repository |
| Create/update a file in a repo |
| List recent commits |
Brightspace (6 tools)
Tool | Description |
| List enrolled courses |
| List assignments for a course |
| Full assignment details + rubric |
| Current grades for a course |
| Course announcements |
| All upcoming due dates across courses |
Outlook (5 tools)
Tool | Description |
| List emails (with filtering) |
| Full email content |
| Send an email |
| Upcoming calendar events |
| Create a calendar event |
Local Files (5 tools)
Tool | Description |
| List files in a folder |
| Read a text file |
| Write/create a file |
| Search files by name pattern |
| Get file size, date, type |
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseCqualityFmaintenanceA powerful MCP server that enables AI assistants to interact with Microsoft Graph API for managing Outlook emails, Calendar events, OneDrive files, and Contacts through natural language commands.Last updated3554
- Flicense-qualityDmaintenanceUnified personal assistant MCP server that connects local files, GitHub repositories, YouTube playlists, Gmail, and Steam data. Enables querying and managing personal data across multiple platforms through natural language via LM Studio integration.Last updated1
- FlicenseAqualityBmaintenanceAn MCP server that gives desktop AI apps access to your Waterloo LEARN courses, enabling listing courses, getting announcements, content, grades, and upcoming events through natural language.Last updated51
- Alicense-qualityCmaintenanceMCP server that turns UPB Virtual (Moodle) into a structured knowledge source, enabling AI assistants to query courses, assignments, deadlines, announcements, and sync materials via REST API.Last updatedMIT
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
GibsonAI MCP server: manage your databases with natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Miguel121699/academic-assistant'
If you have feedback or need assistance with the MCP directory API, please join our Discord server