Skip to main content
Glama
kaneyxx

Weekly Report Checker

by kaneyxx

check_person_report

Verify weekly report submission status for a specific person. Use this tool to check if an individual has submitted their required weekly report.

Instructions

Check if a specific person has submitted their weekly report

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The core handler function for the 'check_person_report' tool. It fetches report data from Google Sheets via get_report_data() and checks the submission status for the specified person, returning a formatted status message.
    @mcp.tool()
    def check_person_report(name: str) -> str:
        """Check if a specific person has submitted their weekly report"""
        report_data = get_report_data()
        
        if name not in report_data:
            return f"找不到 {name} 的資料。請確認名字是否正確。"
        
        if report_data[name]["submitted"]:
            return f"{name} 已於 {report_data[name]['timestamp']} 提交週報({report_data[name]['days_ago']} 天前)。\n內容摘要:{report_data[name]['content'][:100]}..."
        else:
            return f"{name} 尚未提交本週週報。"
  • Key helper function that connects to Google Sheets, fetches weekly report data for predefined list of names (NAME_LIST), processes timestamps and content, and determines submission status within the last ~6-7 days.
    def get_report_data() -> Dict[str, Dict]:
        """Helper function to get report data from Google Sheets"""
        # Connect to Google Sheets
        sa = gspread.service_account(filename=SERVICE_ACCOUNT_FILE)
        sh = sa.open("週報")
        wks = sh.worksheet("週報")
        
        # Get current time
        current_time = datetime.datetime.now()
        
        # Dictionary to store report data for each person
        report_data = {name: {
            "submitted": False,
            "timestamp": None,
            "content": None,
            "days_ago": None
        } for name in NAME_LIST}
        
        # Check each row in the sheet
        for i in range(2, 15):  # Assuming data starts from row 2 and goes to row 14
            try:
                row = wks.get(f"A{i}:F{i}")
                if not row or not row[0][0]:  # Skip empty rows
                    continue
                    
                # Parse the timestamp from the sheet
                item_time = datetime.datetime.strptime(row[0][0], '%m/%d/%Y %H:%M:%S')
                name = row[0][2]  # Assuming name is in column C
                
                # Skip if the name is not in our list
                if name not in report_data:
                    continue
                    
                # Calculate days ago
                delta_sec = (current_time - item_time).total_seconds()
                days_ago = delta_sec / 86400  # Convert seconds to days
                
                # Check if the report was submitted within the last 6 days (518400 seconds + 12 hours buffer)
                if delta_sec < (518400 + 43200):
                    report_data[name] = {
                        "submitted": True,
                        "timestamp": item_time.strftime('%Y-%m-%d %H:%M:%S'),
                        "content": row[0][3] if len(row[0]) > 3 else "No content",  # Assuming content is in column D
                        "days_ago": round(days_ago, 1)
                    }
            except Exception:
                continue
        
        return report_data
  • The @mcp.tool() decorator registers the check_person_report function as an MCP tool.
    @mcp.tool()
  • Predefined list of team members whose reports are checked.
    # Define the name lists
    NAME_LIST = ["陳冠宇", "林柏志", "潘班", "董屹煊", "王宇軒", "許圃瑄", "陳冠言", "黃祈緯", "黃渝凌"]

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kaneyxx/weekly-report-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server