Skip to content

Commit 28538f9

Browse files
authored
chore: Use Annotated (#12)
1 parent 721ecb1 commit 28538f9

File tree

1 file changed

+17
-31
lines changed

1 file changed

+17
-31
lines changed

mcp_email_server/app.py

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from datetime import datetime
2+
from typing import Annotated
23

34
from mcp.server.fastmcp import FastMCP
45

@@ -35,16 +36,16 @@ async def add_email_account(email: EmailSettings) -> None:
3536

3637
@mcp.tool(description="Paginate emails, page start at 1, before and since as UTC datetime.")
3738
async def page_email(
38-
account_name: str,
39-
page: int = 1,
40-
page_size: int = 10,
41-
before: datetime | None = None,
42-
since: datetime | None = None,
43-
subject: str | None = None,
44-
body: str | None = None,
45-
text: str | None = None,
46-
from_address: str | None = None,
47-
to_address: str | None = None,
39+
account_name: Annotated[str, "The name of the email account."],
40+
page: Annotated[int, "The page number to retrieve (starting from 1)."] = 1,
41+
page_size: Annotated[int, "The number of emails to retrieve per page."] = 10,
42+
before: Annotated[datetime | None, "Retrieve emails before this datetime (UTC)."] = None,
43+
since: Annotated[datetime | None, "Retrieve emails since this datetime (UTC)."] = None,
44+
subject: Annotated[str | None, "Filter emails by subject."] = None,
45+
body: Annotated[str | None, "Filter emails by body."] = None,
46+
text: Annotated[str | None, "Filter emails by text."] = None,
47+
from_address: Annotated[str | None, "Filter emails by sender address."] = None,
48+
to_address: Annotated[str | None, "Filter emails by recipient address."] = None,
4849
) -> EmailPageResponse:
4950
handler = dispatch_handler(account_name)
5051

@@ -65,28 +66,13 @@ async def page_email(
6566
description="Send an email using the specified account. Recipient should be a list of email addresses.",
6667
)
6768
async def send_email(
68-
account_name: str,
69-
recipients: list[str],
70-
subject: str,
71-
body: str,
72-
cc: list[str] | None = None,
73-
bcc: list[str] | None = None,
69+
account_name: Annotated[str, "The name of the email account to send from."],
70+
recipients: Annotated[list[str], "A list of recipient email addresses."],
71+
subject: Annotated[str, "The subject of the email."],
72+
body: Annotated[str, "The body of the email."],
73+
cc: Annotated[list[str] | None, "A list of CC email addresses."] = None,
74+
bcc: Annotated[list[str] | None, "A list of BCC email addresses."] = None,
7475
) -> None:
7576
handler = dispatch_handler(account_name)
7677
await handler.send_email(recipients, subject, body, cc, bcc)
7778
return
78-
79-
80-
if __name__ == "__main__":
81-
import asyncio
82-
83-
asyncio.run(
84-
send_email(**{
85-
"account_name": "jizhongsheng957@gmail.com",
86-
"recipients": ["jizhongsheng957@gmail.com"],
87-
"subject": "问候",
88-
"body": "你好",
89-
"cc": ["9573586@qq.com"],
90-
"bcc": ["jzs9573586@qq.com"],
91-
})
92-
)

0 commit comments

Comments
 (0)