eule-mcpBLOCK
MCP server for office work with mail & calendar (MS365, iCloud, Gmail, IMAP)
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
MCP server for an office assistant — E-Mail/Calendar integration, tasks & resource planning
[!WARNING] This project is under active development. Things will break, APIs will change, and features may be incomplete until v1.0. Use at your own risk — and feel free to contribute! Versioning follows that: while the major version is 0, a breaking change bumps the minor (0.3.0→0.4.0), it does not promote the project to1.0.0. Reaching 1.0 will be a deliberate decision, not a side effect of aBREAKING CHANGEfooter.
Why "Eule"?
Eule is the German word for owl — a symbol of wisdom, sharp vision, and the ability to see clearly in the dark. Like an owl surveying its territory, Eule gives your AI assistant a clear view across your entire office landscape: emails, calendars, tasks, and contacts — all through a single, unified interface.
Concept
Eule is a Model Context Protocol (MCP) server that turns any MCP-compatible AI assistant into a full office agent. Instead of switching between Outlook, task managers, and calendars, your AI assistant connects to all of
ddb1ad836cc6OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add eule-mcp -- npx -y [email protected]
{
"mcpServers": {
"eule-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (63)
42 read · 14 write · 7 destructive. Blast radius: 7 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
account_add | write | |
account_list | read | |
account_remove | destructive | |
auth_accounts | read | |
auth_login | read | |
auth_logout | read | |
auth_probe | read | |
auth_status | read | |
calendar_calendars | read | |
calendar_create | write | |
calendar_delete | destructive | |
calendar_list | read | |
calendar_today | read | |
calendar_update | write | |
chat_list | read | |
chat_read | read | |
chat_send | write | |
config_get | read | |
config_set_oauth | write | |
connector_capabilities | read | |
connector_configure | read | |
contact_add | write | |
contact_list | read | |
contact_search | read | |
credential_rotate | read | |
credential_status | read | |
doc_bulk | read | |
doc_download | read | |
doc_list | read | |
doc_read | read | |
doc_search | read | |
doc_tag | read | |
doc_upload | write | |
file_download | read | |
file_list | read | |
file_read | read | |
file_search | read | |
file_upload | write | |
google_oauth_configure | read | |
google_oauth_remove | destructive | |
m365_password_configure | read | |
m365_password_remove | destructive | |
mail_attachment_get | read | |
mail_bulk_update | write | |
mail_draft | read | |
mail_list | read | |
mail_read | read | |
mail_search | read | |
mail_send | write | |
mail_send_draft | write | |
mail_update | write | |
role_list | read | |
role_remove | destructive | |
role_upsert | read | |
task_add | write | |
task_complete | read | |
task_delete | destructive | |
task_list | read | |
task_lists | read | |
task_search | read | |
task_update | write | |
totp_configure | read | |
totp_remove | destructive |
Trust audit
BLOCKgrade D · trust 64/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (6 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
const raw = yaml.load(readFileSync(CONFIG_PATH, "utf-8"));
console.log(` ${account}: tier ${token.tier}${expired}`);console.log(`\n✅ Success! ${token.account} (tier ${token.tier})`);console.log(` Expires: ${new Date(token.expiresAt).toLocaleString()}`);console.log(`\n✅ Success! ${token.account} (tier ${token.tier})`);console.log(` Expires: ${new Date(token.expiresAt).toLocaleString()}`);account_remove, calendar_delete, google_oauth_remove, m365_password_remove, role_remove, task_delete, totp_remove
.gitleaks.toml
.release-please-manifest.json
const raw = yaml.load(readFileSync("config.example.yaml", "utf-8"));expect(() => resolveAttachmentPaths([join(homedir(), ".ssh", "id_rsa")])).toThrow(
expect(() => secureReadPath("~/.ssh/id_rsa")).toThrow(/Access denied/);expect(() => secureReadPath("~/Downloads/../.ssh/id_rsa")).toThrow(/Access denied/);expect(() => resolveAttachmentPaths(["/etc/passwd"])).toThrow(/Access denied/);
expect(() => secureReadPath("/etc/passwd")).toThrow(/Access denied/);assert!(validate_reference("connector/../../escape").is_err());let logo = include_str!("../../assets/logo.svg");} from "../../types/index.js";
import { assertSecureUrl, escapeICalText, unescapeICalText } from "../../utils/security.js";} from "../../types/index.js";
it("refuses paths outside the sandbox (secret exfiltration guard)", () => {it("blocks reading secrets from ~/.eule (exfiltration guard)", () => {expect(assertSecureUrl("http://127.0.0.1:8080/")).toBe("http://127.0.0.1:8080/");await expect(fetchWithTimeout("http://127.0.0.1:9/never", {}, 1)).rejects.toThrow();sudo apt-get update
Gates applied: no_behavioural_pass.
ddb1ad836cc6full audit observations/trust-audit/mcp-server/metaneutrons__eule-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | ddb1ad836cc6 | BLOCK | D | 64 | first audit |
Questions
What is the eule-mcp MCP server?
MCP server for office work with mail & calendar (MS365, iCloud, Gmail, IMAP)
What tools does eule-mcp expose?
63 in total: 42 read-only, 14 that write, and 7 that can delete or overwrite (account_remove, calendar_delete, google_oauth_remove, m365_password_remove, role_remove). Every one is listed on this page with its risk.
Is eule-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (64/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 7 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does eule-mcp need?
No credential environment variables were found in its source, so it appears to need none.
How does eule-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as eule-mcp at 0.8.0.
How current is this page?
The grade is for one exact copy of the source (ddb1ad836cc6), read on 2026-10-11. The repository is watched and re-audited when it changes.