11from datetime import datetime
2+ from typing import Annotated
23
34from 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." )
3738async 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)
6768async 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