Skip to main content
Glama
aongzera

MyCourseVille MCP Server

by aongzera

MyCourseVille MCP Server

MyCourseVille アカウントに AI エージェントからアクセスできるようにする MCP サーバーです: 期限と説明付きの新しい課題、コース教材、公開済みの成績に加え、「前回から何が変わったか」のフィードも提供します。

自分のアカウントデータを扱うための個人用ツールです。ポーリング間隔は控えめにし、認証情報をコミットしないでください。

しくみ

MCV には公式の OAuth2 API (/api/v1/public/get/*) がありますが、client_id/client_secret を取得するにはアプリの登録が必要で、しかもエンドポイント名は公開ドキュメント化されていません。このサーバーはその代わりに、MCV の Web クライアントが行うのとまったく同じ方法でログインします(既定は IT Chula SSO ボタン、または標準の MCV フォーム)。ログイン後は、サイトがブラウザに配信するのと同じサーバーサイドレンダリングのコースページを読み取ります。教材はコースホーム、期限は /assignment、成績は /portfolio-<student id> です。docs/ENDPOINTS.md を参照してください。

取得したデータはローカルの SQLite スナップショットに保存されます。同期のたびにそのスナップショットとの差分を調べて events ログに追記します。このログは whats_new が読むもので、サーバーは前回確認した後に現れた項目を教えてくれます。バックグラウンドのポーラー(ポーリング処理)が一定間隔で更新するため、チャットを開いていなくても新しい課題を検出できます。

「新しい」について: MCV は投稿日時のタイムスタンプを確実には公開しないため、このサーバーが最初に項目を観測した時刻である first_seen を代理としています。初回の同期は、学期全体を新しい項目として報告するのではなく、すべてを黙ってバックフィルします。

Related MCP server: UofT Student Helper MCP Server

セットアップ

uv sync --extra dev
cp .env.example .env      # then fill in MCV_USERNAME / MCV_PASSWORD
uv run mcv-mcp --selftest

--selftest はログインして一度同期し、見つけたコース、課題、教材、成績の件数を表示します。エージェントを接続する前に、これを動作させてください。

Claude Code に登録する:

claude mcp add mcv -- uv --directory C:\Users\velys\Documents\mcp_mcv run mcv-mcp

そして、次のように尋ねます: "今週の締め切りは?""昨日から MCV で何か新しいことはある?""Comp Prog の最新スライドをダウンロードして。"

ツール

ツール

説明

whats_new

指定した時点より後の新しい/変更された課題、教材、成績

list_upcoming_deadlines

今後 N 日以内に期限が来るもの(期限が早い順)

list_courses

履修中のコース。オプションで学期を1つに絞ることもできる

list_assignments

期限と説明付きの課題一覧

get_assignment

1つの課題の詳細情報

list_materials

コースに投稿されたファイル(フォルダ、名前、URL)

download_material

ファイルをローカルに保存。PDFのテキストを抽出して読める

list_grades

公開済みの成績

sync_now

強制更新(full=true ですべての学期)

auth_status

診断情報: ログイン状態、最終同期、行数

設定

環境変数

デフォルト

説明

MCV_USERNAME / MCV_PASSWORD

MCV の認証情報

MCV_LOGIN_METHOD

itchula

itchula は IT Chula SSO ボタン用、mcv は標準フォーム用

MCV_POLL_MINUTES

30

ポーリング間隔(最小 10 分)

MCV_POLL_ENABLED

1

0 に設定するとバックグラウンドポーリングを無効化

MCV_STATE_DIR

%LOCALAPPDATA%\mcv_mcp

DB、クッキー、ダウンロードの保存先

状態はリポジトリの外に保存されます。クッキーは永続化されるため、再起動しても再ログインは不要です。

ポーラーを別プロセスで実行する場合(例: タスクスケジューラ):

uv run python -m mcv_mcp.poller

レイアウト

src/mcv_mcp/
  config.py    settings, URLs, state paths
  client.py    Chula SSO login, cookie persistence, throttled AJAX transport
  parsers.py   HTML -> dicts (pure functions, fixture-tested)
  store.py     SQLite snapshot + event log
  sync.py      orchestration + background poller
  server.py    MCP tool definitions

MCV のマークアップが唯一の壊れやすい部分で、それはparsers.py に限定されています。パーサーが0行を返すようなことが起きる場合、新しい fixture を取得して(docs/ENDPOINTS.md を参照)、そこでセレクターを修正してください。

ステータス

実際のアカウントで動作確認済みです。ログイン、すべてのパーサー、ダウンロード、変更検出はエンドツーエンドで検証しています。代表的な同期では 9コース、20課題(すべて期限をパース可能)、112教材、69 の採点項目が取得できました。次の同期では変化はゼロ件で、差分ログはまだ実際に何かが変わるまでは静かです。

既知の制限:

  • 成績の公開はプッシュではなくポーリングで検出されます。 新しい成績は、ポーリング間隔(既定 30 分)以内に grade_changed イベントとして現れます。

  • 現在の学期のみが同期対象です。sync_nowfull=true を渡さない限り。

  • MCV のマークアップが壊れやすい部分です。 パーサーが 0 行を返すには、fixture を取得してセレクタを修正してください — 、docs/ENDPOINTS.md を参照してください。

開発

uv run pytest
Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

  • Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.

  • Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.

View all MCP Connectors

Latest Blog Posts

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/aongzera/mcv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server