feat: requires OAuth-only auth mode for MCP agents
This commit is contained in:
14
README.md
14
README.md
@@ -6,7 +6,7 @@
|
||||
|
||||
- `api`: FastAPI, REST API, HTML-админка, healthcheck.
|
||||
- `worker`: weekly scheduler, который запускает парсинг по `CRAWL_CRON`.
|
||||
- `mcp`: HTTP MCP endpoint со статическим bearer token или OAuth/OIDC access token.
|
||||
- `mcp`: HTTP MCP endpoint с OAuth/OIDC access token для внешних агентов или legacy static token для локального режима.
|
||||
- `postgres`: основная БД.
|
||||
|
||||
Парсер использует фиксированный источник сотрудников, по умолчанию `https://miem.hse.ru/persons`. Для каждой карточки сохраняются ФИО, должности, год начала работы, контакты, идентификаторы, вкладки профиля, секции, публикации, курсы, ВКР, JSON-снапшот и сжатый HTML-снапшот. Ссылки обходятся только из меню профиля самого сотрудника (`person-menu`), например `#sci`, `#teaching`, `#main`.
|
||||
@@ -27,8 +27,8 @@ cp .env.example .env
|
||||
- `CRAWL_LIMIT`: опциональный лимит профилей для тестового запуска.
|
||||
- `ADMIN_USERNAME`, `ADMIN_PASSWORD`: логин и пароль админки.
|
||||
- `SESSION_SECRET`: секрет подписи cookie.
|
||||
- `MCP_TOKEN`: статический bearer token для `/mcp`.
|
||||
- `MCP_AUTH_MODE`: режим авторизации MCP: `token`, `oauth` или `oauth_or_token`.
|
||||
- `MCP_TOKEN`: статический bearer token для legacy/local режима `MCP_AUTH_MODE=token`.
|
||||
- `MCP_AUTH_MODE`: режим авторизации MCP: `oauth` для внешних агентов или `token` для локальной отладки.
|
||||
- `MCP_RESOURCE_URL`: публичный URL MCP endpoint, например `https://example.com/mcp`.
|
||||
- `MCP_OAUTH_ISSUER`: issuer внешнего OIDC-провайдера.
|
||||
- `MCP_OAUTH_AUDIENCE`: ожидаемый `aud` в OAuth access token.
|
||||
@@ -90,7 +90,7 @@ curl -X POST http://localhost:8000/api/crawl-runs --cookie "miem_admin_session=.
|
||||
|
||||
Endpoint: `POST /mcp`, авторизация `Authorization: Bearer <token>`.
|
||||
|
||||
По умолчанию используется статический токен из `MCP_TOKEN`:
|
||||
Для внешних ИИ-агентов используйте `MCP_AUTH_MODE=oauth`. В этом режиме статический `MCP_TOKEN` не принимается: клиент должен передать OAuth/OIDC access token с нужным scope.
|
||||
|
||||
Поддерживаемые tools:
|
||||
|
||||
@@ -100,7 +100,7 @@ Endpoint: `POST /mcp`, авторизация `Authorization: Bearer <token>`.
|
||||
- `list_employee_courses(profile_id_or_url)`
|
||||
- `get_crawl_status()`
|
||||
|
||||
Пример:
|
||||
Пример локального legacy-режима со статическим токеном:
|
||||
|
||||
```bash
|
||||
curl http://localhost:8001/mcp \
|
||||
@@ -109,10 +109,10 @@ curl http://localhost:8001/mcp \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
|
||||
```
|
||||
|
||||
Для OAuth/OIDC настройте внешний authorization server и включите режим `oauth` или `oauth_or_token`:
|
||||
Для production OAuth/OIDC настройте внешний authorization server и включите режим `oauth`:
|
||||
|
||||
```env
|
||||
MCP_AUTH_MODE=oauth_or_token
|
||||
MCP_AUTH_MODE=oauth
|
||||
MCP_RESOURCE_URL=https://example.com/mcp
|
||||
MCP_OAUTH_ISSUER=https://auth.example.com
|
||||
MCP_OAUTH_AUDIENCE=miem-mcp
|
||||
|
||||
Reference in New Issue
Block a user