piazza-mcp
piazza-mcp
piazza-mcp — это локальный MCP-сервер только для чтения для поиска и чтения настроенных обсуждений Piazza.
Сервер использует пакет piazza-api, созданный сообществом, и неопубликованные внутренние конечные точки Piazza. Это не официальная интеграция Piazza, и она может перестать работать при изменении веб-сайта Piazza. Соблюдайте консервативные лимиты запросов и убедитесь, что этот метод доступа приемлем для вашей учетной записи и учебного заведения.
Требования
Python 3.10–3.14.
uvдля управления зависимостями и окружением.MCP Python SDK 1.x. Сервер использует низкоуровневый API декоратора
Serverверсии 1 и объявляетmcp>=1.28.1,<2.
Инструменты
list-piazza-courses: перечисляет настроенные курсы, доступные для учетной записи.list-piazza-posts: возвращает ограниченные сводки последних сообщений для одного курса.get-piazza-post: возвращает одну ограниченную нормализованную ветку обсуждения.search-piazza-posts: выполняет поиск по одному настроенному курсу и возвращает ограниченные сводки.
Все инструменты доступны только для чтения. Вызовы, ограниченные курсом, ограничены идентификаторами в PIAZZA_COURSES. Возвращаемый текст сообщений — это ограниченный обычный текст, помеченный как недоверенный пользовательский контент. Сервер не публикует, не отвечает, не редактирует, не загружает вложения, не раскрывает списки участников и не выполняет операции преподавателя.
list-piazza-posts принимает limit от 1 до 25 и offset от 0 до 500. Запрашивайте следующую страницу только тогда, когда предыдущий ответ сообщает truncated: true. Поиск принимает запрос длиной не более 200 символов и возвращает не более 25 результатов. Ответы кэшируются в памяти на 60 секунд; после сбоя обновления могут быть возвращены устаревшие кэшированные данные.
Конфигурация
Скопируйте шаблон с удаленными данными и храните полученный файл в тайне:
cp .env.example .env
chmod 600 .envPIAZZA_EMAIL="student@example.edu"
PIAZZA_PASSWORD="replace-with-your-password"
PIAZZA_COURSES='{"abc123":"CMSC 132","xyz789":"CMSC 216"}'PIAZZA_COURSES сопоставляет идентификаторы курсов Piazza с отображаемыми именами. Идентификатор курса — это значение после /class/ в URL-адресе курса Piazza. Переменные окружения процесса имеют приоритет над .env. При запуске установленного колеса вне этого репозитория укажите переменные через окружение процесса.
Никогда не коммитьте .env, не вставляйте учетные данные в подсказки и не включайте учетные данные, файлы cookie, идентификаторы курсов или содержимое сообщений в журналы. Учетные записи, требующие SSO только для учебного заведения, могут не поддерживать поток электронной почты/пароля, используемый неофициальным пакетом.
Запуск и регистрация
uv sync --locked
uv run --frozen piazza-mcpЗарегистрируйте репозиторий в Codex:
codex mcp add piazza-mcp \
-- uv --directory /absolute/path/to/piazza_mcp run --frozen piazza-mcpЛокальный .env репозитория загружается лениво при первом вызове инструмента Piazza. Вы можете обновить регистрацию с помощью:
./scripts/update_mcp_server.shПерезапустите MCP-клиент после изменения каталога инструментов.
Структура проекта
src/piazza_mcp/
server.py MCP protocol boundary and dispatch
config/
env.py lazy checkout-local .env loading
piazza.py credentials and course allowlist
mcp_schemas/
piazza.py structured-output contracts
mcp_tools/
piazza.py tool descriptions, inputs, and annotations
models/
piazza.py bounded Piazza data structures
services/piazza/
client.py timeout-bound unofficial API adapter
normalizer.py HTML cleanup and response normalization
profiler.py privacy-safe aggregate shape diagnostics
service.py allowlisting, limits, caching, and serialization
factory.py lazy configured service construction
tests/
config/
mcp_schemas/
mcp_tools/
server/
services/piazza/Разработка
Инспектор, безопасный для конфиденциальности, загружает не более пяти сводок и одну полную ветку, затем выводит агрегированные счетчики ключей, типов и уровней вложенности без вывода значений сообщений:
uv run --frozen python scripts/inspect_piazza_shapes.pyОн по-прежнему выполняет живые запросы. Запускайте его только тогда, когда вы явно намерены получить доступ к настроенной учетной записи Piazza.
Запустите автономный набор проверок:
uv lock --check
uv run --frozen pytest -q
uv run --frozen python -m compileall -q src/piazza_mcp tests scripts
uv buildОтладьте сервер с помощью MCP Inspector:
npx @modelcontextprotocol/inspector \
uv --directory /absolute/path/to/piazza_mcp run --frozen piazza-mcpThis server cannot be installed
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 Connectors
Browse and manage Reddit posts, comments, and threads. Fetch user activity, explore hot/new/rising…
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Search Stack Exchange questions, fetch Q&A threads as markdown, look up tag FAQs and user profiles.
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/mkslge/piazza-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server