Skip to main content
Glama

ssuAI

CI Security

한국어 · English

공개 캠퍼스 정보, 개인 학사·LMS·도서관 데이터, 승인 기반 AI 작업을 하나의 웹 경험으로 연결한 Next.js 애플리케이션이다. 브라우저에 비밀 값을 노출하지 않으면서 대시보드와 SSE 챗봇을 제공한다.

라이브 앱 · 챗봇 · 플랫폼 사례 연구 · 문서 지도

ssuAI 홈 — 오늘의 브리핑과 사용자가 구성할 수 있는 위젯 대시보드

플랫폼에서 맡는 역할

서비스

책임

저장소

ssuAI

사용자 화면, same-origin BFF, 인증 상태와 SSE/HITL UX

현재 저장소

ssuAgent

LangGraph 라우팅, 대화 상태, HITL 오케스트레이션

ghdtjdwn/ssuAgent

ssuMCP

캠퍼스 도메인 로직, MCP/REST 계약, 인증과 상태 변경

ghdtjdwn/ssuMCP

ssu-ai-service

격리된 임베딩 요청 게이트웨이

ghdtjdwn/ssu-ai-service

이 저장소는 프론트엔드와 BFF 경계만 소유한다. 학교 시스템 연동과 데이터 정합성은 ssuMCP, 자연어 라우팅과 대화 checkpoint는 ssuAgent의 책임이다.

Related MCP server: ku-portal-mcp

제품 흐름

사용자 경로

제공 기능

신뢰 경계

공개 조회

학식, 공지, 시설, 학사일정, 도서 검색, 실시간 좌석 현황

credential 없는 GET/SSE만 backend origin으로 직접 호출 가능

연결된 대시보드

시간표, 성적, 졸업요건, 채플, 장학, LMS 과제, 대출

access token은 메모리, refresh와 provider session은 same-origin 경로

AI 챗봇

도메인 handoff, 도구 진행 상태, 스트리밍 답변

서버 route가 agent key와 검증된 principal을 주입

상태 변경

좌석 예약·반납, LMS 자료 내보내기

prepare 결과를 보여준 뒤 사용자 승인으로만 resume/confirm

홈, 학사, 도서관, 캠퍼스, 챗봇은 데스크톱 사이드바와 모바일 하단 탐색을 공유한다. 디자인 결정과 접근성 기준은 UI redesign ADR에 기록했다.

실명과 개인 학사·재정·대출·좌석 값은 공개 이미지에서 비식별화했다.

도서관 실시간 좌석

학사 대시보드

도서관 좌석 현황과 도서 검색 화면

졸업요건, 성적과 채플 현황 화면

캠퍼스 정보

서비스 연결 상태

학식, 공지, 학사일정과 시설 검색 화면

u-SAINT, LMS와 도서관 연결 화면

좌석 예약 승인 요청

승인 후 완료

챗봇이 좌석 예약 실행 전 사용자 승인을 요청하는 화면

사용자 승인 후 좌석 예약을 완료한 화면

아키텍처

ssuAI 프론트엔드 아키텍처 — 공개 직접 호출과 same-origin 인증·에이전트 프록시 경계

공개 GET/SSE는 선택적으로 backend origin을 직접 호출해 Vercel 함수 hop을 줄인다. 쿠키·Bearer·API key가 필요한 요청과 /api/agent/*는 항상 same-origin 서버 경로를 통과한다. 이 분리는 public CORS를 인증 surface로 확장하지 않으면서도 공개 데이터의 지연을 줄인다. 상세 흐름은 프론트엔드 아키텍처에 있다.

엔지니어링 근거

문제

구현과 검증 근거

공개 성능 최적화가 인증 경계를 넓힐 위험

공개 GET/SSE allow-list와 server-only proxy 분리 — ADR 0087 · boundary tests

SSO redirect에서 브라우저 쿠키가 유실되는 문제

1회용 code를 200 응답에서 교환 — ADR 0089 · return-page tests

UI 연결 표시와 실제 MCP 권한의 불일치

backend grant를 단일 근거로 사용하고 session 발급을 single-flight 처리 — ADR 0099

스트림 중단 뒤 HITL 상태 또는 최종 링크 유실

thread-stable SSE, resume endpoint, 제한된 안전 링크 렌더링 — chat tests · message tests

브라우저가 agent key나 principal을 조작할 위험

server route가 bearer를 검증하고 신뢰 값만 전달 — agent proxy · proxy tests

변경이 UI에서만 우연히 동작하는 문제

lint, TypeScript, Vitest, production build를 모두 요구 — CI workflow

주요 스택은 Next.js 16, React 19, TypeScript 6, TanStack Query, Tailwind CSS, Radix UI, Vitest, Testing Library와 Vercel이다.

로컬 실행과 검증

Node.js 20과 pnpm 9를 사용한다. 로컬 backend 없이 공개 ssuMCP를 대상으로 실행할 수도 있다.

git clone https://github.com/ghdtjdwn/ssuAI.git
cd ssuAI
cp .env.example .env.local
pnpm install --frozen-lockfile
pnpm dev

로컬 ssuMCP 없이 공개 backend를 사용할 때는 .env.local의 active localhost 값을 다음처럼 바꾼다.

NEXT_PUBLIC_SSUAI_API_BASE=https://ssumcp.duckdns.org
NEXT_PUBLIC_BACKEND_ORIGIN=https://ssumcp.duckdns.org
pnpm lint
pnpm typecheck
pnpm test
pnpm build

환경 변수와 server-only/public 구분은 .env.example에 있다. 운영 proxy target과 secret 변경은 Vercel 설정과 함께 검증해야 하며, localhost 기본값으로 운영 구성을 추정하지 않는다.

문서

범위와 제약

  • 숭실대학교 공식 서비스가 아니며, 외부 학교 시스템의 가용성을 보장하지 않는다.

  • 개인 화면과 상태 변경은 유효한 학교 계정 및 provider 연결이 필요하다.

  • CI는 코드의 빌드·테스트를 검증하며 Vercel 환경 변수나 외부 서비스의 종단 동작까지 증명하지 않는다.

라이선스

MIT

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (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.

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/ghdtjdwn/ssuAI'

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