Skip to main content
Glama

ms365-mcp

Сервер MCP для Microsoft 365, рассчитанный на небольшие локальные модели.

Большинство MCP-серверов созданы для моделей уровня frontier с большими контекстными окнами, поэтому они предоставляют всё, что предлагает API вендора, и позволяют модели разбираться самой. Эталонный сервер Microsoft 365 предоставляет 326 инструментов, сгенерированных из спецификации Graph OpenAPI от Microsoft.

Это не работает для модели 8B с контекстом 8k, где весь список инструментов находится в системном промпте, и модель начинает выбирать наугад где-то после двадцати пяти инструментов. Этот сервер использует противоположный подход:

  • Четырнадцать инструментов, написанных вручную, с жёстким потолком в двадцать. Список инструментов — это бюджет, а не перечень возможностей.

  • Описания, написанные для небольшой модели, а не взятые из метаданных API.

  • Сначала черновик. Ровно один инструмент может передать сообщение другому человеку, он принимает идентификатор черновика, а не получателя, и помечен как разрушительный.

  • Каждый инструмент сам объявляет свой эффект через аннотации MCP readOnlyHint и destructiveHint, чтобы хост мог классифицировать его, не угадывая по имени инструмента.

Создан для Edge Harness и полезен любому MCP-клиенту.

Статус

Ранняя стадия. Пока не пригоден к использованию. План состоит из десяти коммитов; см. docs/PLAN.md для полной последовательности и обоснования каждого решения.

Каркас, лицензия, CI

готово

Протокол MCP через stdio

готово

Поверхность из четырнадцати инструментов

объявлены, обработчики — заглушки

Вход

не начато

Microsoft Graph

не начато

Related MCP server: google-nice-mcp

Просмотр поверхности инструментов

--list-tools ничего не запускает и не требует учётной записи, поэтому он отвечает на вопрос «что будет предложено хосту?» до того, как что-либо будет подключено:

.venv/bin/python -m ms365_mcp --list-tools

Добавьте --json для машиночитаемой версии.

   read  whoami          Return the display name, email address and timezone…
   read  resolve_person  Look up a person by name or partial name and return…
   read  list_messages   List messages in a mail folder, newest first, as se…
  write  create_draft    Create a draft message. This does NOT send anything…
! write  send_draft      Send a draft that already exists, by its id. This r…
   ...
14 tools, 6 that change something, 4 marked destructive (!)

Сегодня обработчики — это заглушки: вызов возвращает предложение о том, что инструмент объявлен, но не реализован. Поверхность намеренно фиксируется до того, как что-либо будет построено, потому что имена инструментов, описания и классы эффектов — это то, что хост классифицирует, а модель получает в промпте, и их дорого менять позже.

Использование из Edge Harness

Harness запускает этот сервер как подпроцесс через stdio, поэтому он работает под собственным интерпретатором и не разделяет зависимости с хостом. Это не случайно: в harness есть локальный пакет mcp/, а официальный SDK на PyPI также называется mcp, поэтому установка этого сервера в виртуальное окружение harness затеняет собственный пакет harness.

Его запись в реестре там — ms365-own, и нажатие Check в параметрах запуска Agent Lab перечисляет каждый инструмент с его классом эффекта. Все четырнадцать классифицируются как declared, что означает, что harness взял их из аннотаций этого сервера, а не угадывал по именам инструментов, и запись не требует переопределений.

В режиме черновика по умолчанию в harness send_draft скрыт, а остальные тринадцать доступны, поэтому запуск не может связаться с человеком.

Безопасность

Этот репозиторий публичен и не содержит никаких учётных данных.

Аутентификация использует поток кода устройства Microsoft. Полученный кэш токенов записывается в каталог конфигурации операционной системы с правами только для владельца, никогда в этот репозиторий или его рабочее дерево. .gitignore в любом случае покрывает имена файлов токенов и кэша, а pre-commit хук сканирует подготовленные изменения на предмет строк, похожих на учётные данные, так что их коммит требует осознанных усилий, а не случайности.

Строка, заканчивающаяся на # pragma: allowlist secret, пропускается хуком. Это существует для того, чтобы собственные тесты этого репозитория могли содержать поддельные учётные данные, и оставляет маркер, который рецензент может увидеть в диффе, чего не делает --no-verify. Используйте это только для данных, которые заведомо поддельны.

Разработка

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest -q

Включите хук сканирования секретов один раз для каждого клона:

git config core.hooksPath .githooks

Лицензия

MIT. См. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A production-ready MCP server that provides secure, delegated access to Microsoft 365 services including Email, SharePoint, OneDrive, and Calendar. It enables AI models to search messages, browse files, manage calendar events, and parse document contents using OAuth 2.1 authentication.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Lightweight MCP server that enables AI agents to manage Microsoft Outlook email, calendar, and files using PKCE authentication with only a Client ID.
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

View all MCP Connectors

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/sunnycho100/ms365-mcp'

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