mcpField
S

Ssumcp

リモート
github.com/hoeongj科学・教育33 日前に更新
リポジトリ

Ssumcp について

Ssumcpは、52個のMCPツールとREST APIで숭실대학교の公開データや個人データを提供するSpring Bootバックエンドです。学校システムへのアクセスを必要とするクライアントや学内ワークフロー向けで、認証と同意に基づいて個人データや変更操作を扱います。

主な機能

  1. 0152個のMCPツールとREST API
  2. 02公開データと個人データへのアクセス
  3. 03OAuthとセッションに基づくアクセス制御
  4. 04承認が必要な学内操作
  5. 05学校システムとの接続

活用シーン

  1. 01大学の公開情報の検索
  2. 02認証済み個人記録の参照
  3. 03承認後の図書館座席の予約や返却

MCP 対応

MCPクライアントに52個のツールを公開し、学内の公開データや認証済み個人データへのアクセスを提供します。個別確認が必要な操作にも対応し、リモートエンドポイントのほかセルフホストも可能です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://ssumcp.duckdns.org/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

52
パラメーター型必須説明
room_codestringいいえ任意の roomCode フィルター。例:open-reading-2f。
floor_codestringいいえ任意のフロアフィルター:B1、2F、5F、6F、または数字の 2/5/6。
include_layoutbooleanいいえcompact textLayout 行を含めるかどうか。デフォルトは false です。

詳細

ssuMCP

CI Security CodeQL

韓国語 · 英語

崇実大学の公開・個人データを52個のMCPツールとREST APIで提供するSpring Bootバックエンドです。 学校システムとの連携、ユーザーごとの認証状態、操作ごとの同意契約、障害分離と運用監視を、ひとつのサービス境界内で扱います。

ウェブデモ · ドキュメントマップ

プラットフォームにおける役割

サービス責務リポジトリ
ssuAIユーザー画面、同一オリジンのBFF、SSEチャットUXghdtjdwn/ssuAI
ssuAgentLangGraphルーティング、会話状態、HITLオーケストレーションghdtjdwn/ssuAgent
ssuMCPキャンパスのドメインロジック、MCP/REST契約、認証と状態変更現在のリポジトリ
ssu-ai-service分離された埋め込みリクエストゲートウェイghdtjdwn/ssu-ai-service

ssuMCPは、原子的なドメインツールと学校システムとの連携を担います。自然言語の意図解釈と複数ツールの 組み合わせはssuAgentが、画面とブラウザーセッションの境界はssuAIが担います。

アーキテクチャ

ssuMCPサービス・運用アーキテクチャ — 共有サービス層、状態ストア、学校コネクター、GitOpsと可観測性

REST ControllerとMCPの@Toolアダプターは、同じService層を呼び出します。外部の学校システムは *Connectorインターフェースの背後に分離します。デフォルトのprofileは決定的なmockでオフライン開発をサポートしますが、 production profileはすべてのconnectorがreal/rusaint/llmであることを検証し、mockまたは設定漏れがある場合は起動を 拒否します。ランタイム、データ、デプロイの境界について詳しくは、アーキテクチャドキュメントをご覧ください。

主なリクエストフロー
ssuAI REST/BFF 또는 MCP client
  → REST Controller / MCP Tool adapter
  → shared Service layer
  → PostgreSQL · Redis/Redisson · Kafka
  → u-SAINT · LMS · 도서관 · 학교 웹사이트 connector
  • 公開情報の照会は認証なしで利用でき、個人情報の照会はOAuth subjectまたは所有権が確認されたMCPセッションにのみ紐付けます。
  • 座席予約・離席・返却とLMSエクスポートはprepare_* → confirm_actionに分け、ユーザーの承認前には 実行しません。wait_for_library_seatは呼び出し自体が自動予約への同意となり、cancel_library_waitは 明示的な待機キャンセルを直ちに実行する例外です。
  • 予約intentはPostgreSQLの行ロックとclaim leaseを整合性の基準とし、座席ごとのRedisson lockは重複する upstream writeを減らす補助層として使用します。
  • 座席の返却・変更に関するclaimと終了結果は、provider fenceとは独立してコミットします。プロセスがupstream writeの 途中で終了した場合は、現在の予約を再照会し、成功、安全な再実行、元の座席への補償、または部分的な失敗へ収束させます。
  • 運用状態のファンアウトにはKafka、キャッシュ・共有rate limit・リーダー選出にはRedisを使用し、障害時の経路ごとに fail-openまたはfail-closedの方針を明示します。

エンジニアリング上の根拠

課題実装と検証の根拠
MCPツールと静的server cardの契約のずれ52-tool inventory/schema parity test · live tool audit
ユーザーごとのセッション混同と承認のない書き込み権威あるセッション解決 · スコープ付きconfirm契約
外部APIの遅延・429・同時予約障害シナリオ · 予約競合の統合テスト
upstream write後のプロセス中断永続化されたアクションフェーズ+現在の予約情報との照合 — ADR 0099
検索根拠の追跡と埋め込み障害lexical+embedding RRF、ソースメタデータ、lexical fallback — ADR 0020
検証されていないイメージの自動デプロイtest/JaCoCo gate後にmulti-arch imageを公開 — CI workflow · GitOps runbook
運用障害の再現と予防トラブルシューティングの要点 · 負荷テスト

主なスタックはJava 21、Kotlin 2.4、Spring Boot 4.1、Spring AI、PostgreSQL、Redis/Redisson、 Kafka、Resilience4j、Testcontainers、Helm、ArgoCD、Prometheus、Tempo、Lokiです。

연결하기

원격 MCP를 지원하는 클라이언트에는 다음 endpoint를 등록한다.

{
  "mcpServers": {
    "ssuMCP": {
      "url": "https://ssumcp.duckdns.org/mcp"
    }
  }
}

Claude Desktop, Cursor와 클라이언트별 인증 흐름은 MCP 도구·인증 문서에 정리했다. Java 21 이상이 설치된 환경에서는 공개 런처로 self-host할 수 있다.

npx ssumcp
실제 MCP 클라이언트 연동 화면

개인 값과 활성 좌석 식별자는 공개용 이미지에서 비식별화했다. 화면은 한 번의 실제 연동 결과이며, 외부 학교 시스템의 모든 시점 가용성을 보장하지 않는다.

인증된 졸업요건 조회승인 후 도서관 좌석 예약
ChatGPT가 ssuMCP의 졸업사정 데이터를 조회해 남은 요건을 설명하는 화면ChatGPT가 ssuMCP로 좌석 예약을 완료한 화면
LMS 자료 내보내기 준비단기 링크로 ZIP 다운로드
ChatGPT가 LMS 강의자료 내보내기를 준비한 화면내보낸 LMS 자료를 브라우저에서 다운로드하는 화면

로컬 실행과 검증

기본 profile은 mock connector를 사용하므로 실제 학교 계정이나 외부 네트워크가 필요하지 않다.

git clone https://github.com/ghdtjdwn/ssuMCP.git
cd ssuMCP
./gradlew bootRun

검증 명령은 다음과 같다. Docker가 있으면 Testcontainers 기반 PostgreSQL·Redis 통합 테스트도 실행된다. 로컬에서 container test가 skip된 경우 통과로 간주하지 않으며, Docker가 있는 GitHub Actions가 권위 게이트다.

./gradlew test
./gradlew test jacocoTestReport jacocoTestCoverageVerification
./gradlew build

실제 connector와 운영 설정은 .env.example, 배포 runbook을 참고한다. 운영 Actuator는 public ingress와 분리된 내부 management port에서만 제공한다. 실제 자격증명은 저장소에 커밋하지 않는다.

문서

범위와 제약

  • 숭실대학교 공식 서비스가 아니며, 학교 웹페이지나 비공개 API 변경에 따라 connector가 일시적으로 동작하지 않을 수 있다.
  • 개인 도구는 유효한 학교 계정과 해당 provider 인증이 필요하다.
  • 공개 데모와 Grafana는 프로젝트 운영 환경이며 상용 SLA를 제공하지 않는다.

라이선스

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。