Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Microsoft 365 administration via Graph API application permissions (read-only by default).
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID, MS365_ADMIN_MCP_CLIENT_SECRET, MS365_ADMIN_MCP_KEYVAULT_URL, MS365_ADMIN_MCP_CLOUD_TYPE, MS365_ADMIN_MCP_MAX_TOP, READ_ONLY, ENABLED_TOOLSLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value",
"MS365_ADMIN_MCP_KEYVAULT_URL": "your-value",
"MS365_ADMIN_MCP_CLOUD_TYPE": "your-value",
"MS365_ADMIN_MCP_MAX_TOP": "your-value",
"READ_ONLY": "your-value",
"ENABLED_TOOLS": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add ms-365-admin --env MS365_ADMIN_MCP_TENANT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_SECRET=your-value --env MS365_ADMIN_MCP_KEYVAULT_URL=your-value --env MS365_ADMIN_MCP_CLOUD_TYPE=your-value --env MS365_ADMIN_MCP_MAX_TOP=your-value --env READ_ONLY=your-value --env ENABLED_TOOLS=your-value -- npx -y @okapi-ca/ms-365-admin-mcp-serverCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value",
"MS365_ADMIN_MCP_KEYVAULT_URL": "your-value",
"MS365_ADMIN_MCP_CLOUD_TYPE": "your-value",
"MS365_ADMIN_MCP_MAX_TOP": "your-value",
"READ_ONLY": "your-value",
"ENABLED_TOOLS": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"ms-365-admin": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value",
"MS365_ADMIN_MCP_KEYVAULT_URL": "your-value",
"MS365_ADMIN_MCP_CLOUD_TYPE": "your-value",
"MS365_ADMIN_MCP_MAX_TOP": "your-value",
"READ_ONLY": "your-value",
"ENABLED_TOOLS": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
MS365_ADMIN_MCP_KEYVAULT_URL envMS365_ADMIN_MCP_CLOUD_TYPE envMS365_ADMIN_MCP_MAX_TOP envREAD_ONLY envENABLED_TOOLS envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub okapi-ca, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID, MS365_ADMIN_MCP_CLIENT_SECRET
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.6.3) llegó al registro hace 6 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
A Model Context Protocol (MCP) server for Microsoft 365 administration via Graph API application permissions (client credentials).
Built on the architecture and endpoint-driven design pioneered by Softeria/ms-365-mcp-server, and complementary to it: Softeria's server uses delegated permissions for end-user productivity scenarios, while this one uses application permissions for admin operations — security monitoring, identity audits, incident response, and service health. See Acknowledgments below.
--allow-writes| Document | Purpose |
|---|---|
| docs/USE_CASES.md | 18 typical admin scenarios with sample prompts and tool lists |
| docs/playbooks/ | End-to-end security incident response playbooks |
| agent-skills/ | Drop-in skills for LLM agents (Claude Code et al.) with safety patterns |
| docs/APP_REGISTRATION.md | Step-by-step Azure AD app registration and permission consent |
| docs/HTTP_DEPLOYMENT.md | HTTP transport, JWT validation, Docker, Azure Container Apps |
| docs/AZURE_DEPLOYMENT_SECURITY.md | Threat model, required controls, and checklist for Azure production deploys |
| docs/TROUBLESHOOTING.md | Common errors and how to diagnose them |
| docs/ARCHITECTURE.md | Internal architecture and code generation pipeline |
| docs/RISK_MODEL.md | Risk classification rubric for write tools |
| CONTRIBUTING.md | How to contribute new tools, presets, and fixes |
| SECURITY.md | Vulnerability reporting and operator hardening checklist |
| CHANGELOG.md | Release history |
npm install -g @okapi-ca/ms-365-admin-mcp-server
ms-365-admin-mcp-server --help
docker pull ghcr.io/okapi-ca/ms-365-admin-mcp-server:latest
docker run --rm -i \ -e MS365_ADMIN_MCP_CLIENT_ID=... \ -e MS365_ADMIN_MCP_CLIENT_SECRET=... \ -e MS365_ADMIN_MCP_TENANT_ID=... \ ghcr.io/okapi-ca/ms-365-admin-mcp-server:latest
git clone https://github.com/okapi-ca/ms-365-admin-mcp-server.git
cd ms-365-admin-mcp-server npm install npm run generate npm run build
| Variable | Required | Description |
|---|---|---|
MS365_ADMIN_MCP_CLIENT_ID | Yes | App registration client ID |
MS365_ADMIN_MCP_CLIENT_SECRET | Yes | App registration client secret |
MS365_ADMIN_MCP_TENANT_ID | Yes | Azure AD tenant ID (must be specific) |
MS365_ADMIN_MCP_CLOUD_TYPE | No | global (default) or china |
MS365_ADMIN_MCP_KEYVAULT_URL | No | Azure Key Vault URL (overrides env vars) |
MS365_ADMIN_MCP_MAX_TOP | No | Cap $top query param to limit result size |
READ_ONLY | No | true/1 to force read-only (default behavior) |
ENABLED_TOOLS | No | Regex to filter available tools |
{
"mcpServers": { "ms365-admin": { "command": "node", "args": ["/path/to/ms-365-admin-mcp-server/dist/index.js"], "env": { "MS365_ADMIN_MCP_CLIENT_ID": "your-client-id", "MS365_ADMIN_MCP_CLIENT_SECRET": "your-client-secret", "MS365_ADMIN_MCP_TENANT_ID": "your-tenant-id" } } } }
VS Code consumes the same MCP protocol but uses a different config layout — servers instead of mcpServers, an explicit type field, and inputs for secret prompts. A ready-to-copy sample lives at .vscode/mcp.json.example; copy it to .vscode/mcp.json and VS Code will prompt for the tenant / client / secret on first start, then store them in its secret store (the real mcp.json is gitignored so resolved secrets never reach the repo).
Minimal stdio setup:
{
"inputs": [ { "type": "promptString", "id": "ms365-tenant-id", "description": "Tenant ID" }, { "type": "promptString", "id": "ms365-client-id", "description": "Client ID" }, { "type": "promptString", "id": "ms365-client-secret", "description": "Client secret", "password": true, }, ], "servers": { "ms365-admin": { "type": "stdio", "command": "ms-365-admin-mcp-server", "args": ["--preset", "security,audit,identity,health"], "env": { "MS365_ADMIN_MCP_TENANT_ID": "${input:ms365-tenant-id}", "MS365_ADMIN_MCP_CLIENT_ID": "${input:ms365-client-id}", "MS365_ADMIN_MCP_CLIENT_SECRET": "${input:ms365-client-secret}", }, }, }, }
For remote HTTP deployments, use "type": "http" with a url field (VS Code 1.103+ handles OAuth 2.0 Dynamic Client Registration natively) or fall back to the mcp-remote bridge when the native browser flow is unavailable — see the example file for both shapes.
Tools surface in Agent mode (GitHub Copilot Chat). VS Code asks for per-tool approval; the --preset flag above keeps the catalog manageable. Use Cmd/Ctrl+Shift+P → MCP: List Servers → Show Output to see logs.
Claude.ai, Claude Desktop and cloud sessions serve each connector's tools under a fixed budget of 1 MiB of input schema (compact JSON; tool names and descriptions are not counted). Tools are admitted in alphabetical order and a tool that no longer fits is dropped silently. Claude Code CLI is not affected. The limit is not documented publicly.
In a cloud session linked to a Mac, the claude-device bridge relays every local MCP server under one connector (lcl- - ), so all local servers share that budget, and this server's tools sort after most of them.
Request bodies are therefore advertised shallow (src/advertised-schema.ts): the entity's own fields with their descriptions, nested objects as free-form objects, and no Read-only. fields. Graph validates the body; the server forwards it as sent. With writes enabled the catalog advertises about 595 KB of input schema, and test/advertised-schema.test.ts fails the build above 768 KiB.
If tools still go missing in a cloud session, shrink what this server advertises (read-only mode, --preset, --enabled-tools), disable unused local servers, or register this server as its own connector so it gets a budget of its own.
If the server runs in HTTP / OAuth mode on a remote host (e.g. Azure Container Apps) and the client connects via mcp-remote, the standard flow requires a browser to reach localhost:14543/oauth/callback. When that isn't possible — macOS Platform SSO hijacks the WebKit flow, Claude Code runs in a headless Docker container, the user is on a remote SSH dev env — use the ms-365-admin-mcp-auth bootstrap to pre-seed mcp-remote's token cache instead.
npx -p @okapi-ca/ms-365-admin-mcp-server@latest ms-365-admin-mcp-auth \
--server https://your-mcp-host.azurecontainerapps.io/mcp
The helper prints a URL and a user code; you sign in on any device you trust (phone, another laptop) and the tokens are written to ~/.mcp-auth/mcp-remote- /. Claude Desktop / Claude Code then launches mcp-remote normally and finds the cached tokens without ever opening a browser.
See docs/TROUBLESHOOTING.md for Docker / remote-dev patterns and exit code reference.
--read-only Read-only mode (default)
--allow-writes Enable write operations --enabled-tools Filter tools by regex pattern --preset Use preset categories (comma-separated) --partition Tool partition served on /mcp/ in HTTP mode (default: domains) --list-presets List available presets and exit --list-tools List available tools and exit --list-permissions List required Graph API permissions and exit --verify-login
Solo se muestra el principio; lee el resto en el repo