metu-sais-mcp
METU SAIS API & MCP Server
Современный сервер Model Context Protocol (MCP) и сервис FastAPI для информационной системы Student Affairs Information System (SAIS / student.metu.edu.tr) Ближневосточного технического университета (METU / ODTÜ).
Подключает ваших ИИ-ассистентов (таких как OpenCode, Claude Desktop и Cursor) напрямую к METU SAIS с реальной аутентификацией и структурированным разбором данных.
Возможности
Аутентификация SSO: Обрабатывает реальный процесс входа в METU SSO (
/sso/backend/request/user/signin) и проверку токенов сеанса.Прокси-скрапер и HTML-парсер: Автоматически устанавливает аутентифицированные прокси-сеансы (
/proxy/Student_Information/) и преобразует записи студентов в структурированный JSON.MCP-сервер (MCP 2.x SDK): Предоставляет типизированные инструменты через стандартный ввод-вывод (stdio).
REST-сервис FastAPI: Альтернативный HTTP REST-бэкенд для интеграций.
Конфиденциальность и безопасность: Никакого логирования или раскрытия учетных данных. Учетные данные остаются локально в вашем файле
.env, который игнорируется Git.
Related MCP server: SABIS MCP Server
Доступные MCP-инструменты
Tool | Description |
| Получает ID студента, имя, факультет, семестр, GPA/CGPA, академический статус и научного руководителя. |
| Получает еженедельное расписание занятий (дни, часы, коды курсов, названия курсов, аудитории, преподавателей). |
| Получает академическую справку за все семестры с курсами, кредитами, оценками и статистикой GPA по семестрам. |
| Получает активные объявления портала. |
| Создаёт запись соединения в памяти. |
| Выводит список всех сохранённых записей соединений. |
Установка и настройка
1. Предварительные требования
Python >= 3.11
uv (рекомендуется) или
pip
2. Установка зависимостей
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .3. Настройка учетных данных
Скопируйте .env.example в .env и введите свои учетные данные METU:
cp .env.example .envОтредактируйте .env:
SAIS_USERNAME=your_metu_username
SAIS_PASSWORD=your_metu_password
LOCALE=tr
PORT=8300[!NOTE]
.envуказан в.gitignoreи никогда не будет закоммичен.
Использование с OpenCode
В этот репозиторий уже включён файл opencode.json.
Использование на уровне проекта
При запуске OpenCode внутри этого репозитория:
opencodeOpenCode автоматически подключится к MCP-серверу metu-sais.
Глобальное использование (из любой директории)
Чтобы использовать инструменты METU SAIS в любом проекте OpenCode, добавьте сервер в ~/.config/opencode/opencode.jsonc:
{
"mcp": {
"metu-sais": {
"type": "local",
"command": [
"uv",
"--directory",
"/absolute/path/to/metu-sais-mcp",
"run",
"metu-sais-mcp"
],
"enabled": true
}
}
}Проверка подключения
opencode mcp listВы должны увидеть:
● ✓ metu-sais connectedЗапуск MCP-сервера отдельно
Вы можете запустить MCP-сервер напрямую через стандартный ввод-вывод:
uv run metu-sais-mcpЗапуск REST API
Чтобы запустить сервер FastAPI:
uv run uvicorn api.main:app --port 8300 --reloadИнтерактивная документация API будет доступна по адресу:
Swagger UI: http://localhost:8300/docs
Проверка работоспособности: http://localhost:8300/healthz
REST-эндпоинты
GET /api/sais/info— Информация о студентеGET /api/sais/schedule— Расписание занятийGET /api/sais/transcript— История успеваемостиGET /api/sais/announcements— Объявления порталаGET|POST|PUT|DELETE /api/connections— CRUD-управление соединениями
Тестирование
Запустите автоматический набор тестов с помощью pytest:
uv run pytest -vНабор тестов включает:
Модульные тесты для HTML-парсеров (
parse_student_info,parse_schedule,parse_transcript,parse_announcements).Тесты регистрации MCP-инструментов и вызова инструментов.
Тесты REST-эндпоинтов FastAPI.
Живые интеграционные тесты с METU SAIS при настроенных учетных данных.
Структура проекта
├── sais/
│ ├── connector.py # Core SAIS authentication, proxy scraping, and HTML parsers
│ └── connections.py # Shared in-memory connection store
├── sais_mcp/
│ └── server.py # MCP stdio server definition and tool registrations
├── api/
│ └── main.py # FastAPI REST API wrapper
├── tests/
│ ├── test_connector.py # Scraper and HTML parser tests
│ ├── test_mcp_server.py# MCP server tests
│ └── test_api.py # FastAPI tests
├── .env.example # Environment variable template
├── opencode.json # OpenCode MCP configuration
├── pyproject.toml # Package dependencies and CLI entrypoints
└── README.md # Project documentationЛицензия
Лицензия MIT.
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
- FlicenseBqualityDmaintenanceAn MCP server that enables AI agents to authenticate with and interact with Open eClass platform instances, supporting UoA's SSO authentication system for retrieving course information and performing basic platform operations.48
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to securely retrieve academic grades and course information from Sakarya University's SABIS student information system through automated web scraping.2ISC
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to the FAST-NUCES Flex Student Portal, enabling students to query their academic data including attendance, marks, transcript, and fee reports through natural language conversations.5
- FlicenseNot gradedqualityDmaintenanceEnables students to securely access and manage their academic data from Isparta University's OBS system, including grades, transcripts, announcements, and course information through natural language queries.1
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Connect e-commerce and marketing data to AI assistants via MCP.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
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/atesahmet0/metu-sais-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server