Add an EWS connector type: on-premises Exchange mailboxes
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- authentication, backend
Línea de trabajo
Start by reading how the EMAIL and ODATA connector types are wired: the ConnectorType enum, the migration 20261030100000_add_email_connector_type, and the engine that dispatches on type. Then check how fast-xml-parser and the outbound SSRF guard (SSRF_ALLOWED_HOSTS) are used. This is design work with an NTLMv2 implementation, so agree the scope with maintainers first. Done means an EWS type with the listed tools, passing the NTLM test vectors and the in-process EWS server tests.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
The catalog cannot reach a mailbox on an on-premises Exchange server. The Outlook connector uses Microsoft Graph, which only exists for Microsoft 365 and Outlook.com. The Email (IMAP/SMTP) connector needs IMAP and SMTP to be enabled and reachable, cannot attach files to outgoing mail (so it cannot really forward), and on AnythingMCP Cloud its SMTP ports are blocked by the hosting network. Companies that run Exchange 2016, 2019 or Subscription Edition themselves, without Microsoft 365, have nothing to install.
Exchange Web Services (EWS) is on by default on those servers, because Outlook uses it. It runs over HTTPS on port 443, replies and forwards on the server (with the original's attachments), files sent mail itself and gives access to calendars and contacts later.
Microsoft is retiring EWS in Exchange Online (off by default since 1 October 2026, permanently on 1 April 2027) but not in Exchange Server. This connector is for on-premises Exchange; Exchange Online stays on the Outlook (Graph) connector.
Proposal
A new connector type EWS with its own engine and a fixed tool set, as the EMAIL and ODATA types have. The generic SOAP engine is not a fit: a WSDL import would make the model write nested EWS XML, and it has no NTLM.
Schema change
ConnectorTypegains the valueEWS.- Migration:
ALTER TYPE "ConnectorType" ADD VALUE 'EWS';in a new timestamped folder, same shape as20261030100000_add_email_connector_type. - No new tables or columns, and no new
AuthType. Non-secret settings live inconnector.config.ews(server, auth method, domain, shared mailbox, certificate options); the username and password live in the encryptedauthConfig(BASIC_AUTH).
Built-in tools
Prefixed per connector: list folders, search messages, get message, get attachment, set flags (read/unread, flagged), set categories, move messages, delete (to Deleted Items, never a hard delete), save draft (new, reply, reply all or forward), send message and send draft. Reads are annotated read-only, delete is destructive, the two sending tools are open-world. Delete and both sending tools are created switched off, and results that carry mail content say that it is untrusted text from the sender, as on the Email connector.
Authentication
- NTLMv2 (what the EWS virtual directory offers by default) and Basic (only when an administrator enabled it), chosen from the server's
WWW-Authenticateanswer or fixed in the settings. Kerberos and OAuth are out of scope. - NTLM is implemented in the backend, with the message integrity code and the TLS channel binding that Extended Protection asks for. No maintained npm NTLM client supports channel binding, and Node's
cryptono longer offers MD4. - No new runtime dependency: SOAP requests are templates, answers are parsed with the existing
fast-xml-parser.
Behaviour in both deployment modes
- Cloud: HTTPS only, the outbound SSRF guard applies (private, loopback and link-local addresses refused), the certificate must be valid. The Exchange server has to be reachable from the internet; the connector page shows the outbound address to allow.
- Self-hosted: the same guard with the admin allowlist (
SSRF_ALLOWED_HOSTS/ Admin → Settings) for an internal server, and an opt-in "accept self-signed certificate" switch for an internal certificate authority. - One HTTPS connection per tool call, closed afterwards; connect and response timeouts and a response size cap. Credentials never reach a log line or an error message.
Tests
Unit tests against the published NTLM test vectors, request XML validated against Microsoft's EWS schemas, and an in-process EWS server (HTTPS, NTLM and Basic, in-memory mailbox) for the tool flows inside Jest. A live spec, gated behind RUN_EWS_LIVE=1, checks a real server read-only.
Catalog and docs
A catalog adapter "Exchange (EWS)" in category email with a setup guide (service account, shared mailbox rights, auth method, firewall), and docs/connectors/ews.md.
Later
Calendar (availability, events), contacts, Autodiscover.
- Lenguaje dominante
- TypeScript
- Estrellas
- 856
- Forks
- 82
- Merge medio
- 4 h 32 min
- PR fusionados (30 d)
- 468
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de HelpCode-ai/anythingmcp
-
[Adapter] Magic HourAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
HelpCode-ai/anythingmcp#1659 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
HelpCode-ai/anythingmcp#1507 ·
Los mantenedores suelen responder en 1 día
-
Upload the new social previewPosiblemente ocupada @helpcodeai la tomó hace 10 días. Abierto
HelpCode-ai/anythingmcp#1455 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Adapter: TGStatPosiblemente ocupada @abinyads-dev la tomó hace 8 días. Abiertoadapter-request good first issue help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
HelpCode-ai/anythingmcp#1413 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Adapter: Hepsiburada MarketplacePosiblemente ocupada @averyreynolds la tomó hace 9 días. Abiertoadapter-request good first issue help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
HelpCode-ai/anythingmcp#1412 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de HelpCode-ai/anythingmcp
Issues similares
-
Resources: Update work of urumqiPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
railmapgen/rmp-gallery#4176 ·
Los mantenedores suelen responder en 2 días
-
GraphQL custom headers duplicate differently cased default headersPosiblemente ocupada @yxr-2025 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
elie222/rakazo#4625 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement sharing & sync
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día