Spaces:
Sleeping
Sleeping
| from mcp.server.fastmcp import FastMCP | |
| import logging | |
| import os | |
| # Initialize the server | |
| mcp = FastMCP("Math-Education-Server") | |
| current_dir = os.path.dirname(os.path.abspath(__file__)) | |
| # Path to your collected resource | |
| MARKDOWN_FILE = r"resource\jemh114-min (1).md" | |
| def get_local_resource(): | |
| """Helper to read the markdown file safely.""" | |
| if os.path.exists(MARKDOWN_FILE): | |
| with open(MARKDOWN_FILE, "r", encoding="utf-8") as f: | |
| return f.read() | |
| return "Resource file not found." | |
| # --- Task 1: Generate a Summary --- | |
| async def generate_chapter_summary(chapter_name: str) -> str: | |
| """ | |
| Provides the source material for a chapter. | |
| The AI should use this to create a summary. | |
| """ | |
| raw_data = get_local_resource() | |
| # We use XML-style tags. Senior engineers do this because | |
| # LLMs (especially Claude) are trained to handle tagged data perfectly. | |
| return f""" | |
| <source_material> | |
| {raw_data[:4000]} | |
| </source_material> | |
| SYSTEM_INSTRUCTION: You are a Mathematics Expert. | |
| 1. Read the text inside <source_material>. | |
| 2. Create a summary with 3 bullet points. | |
| 3. List all formulas found in LaTeX format. | |
| 4. Do not repeat the raw text; only provide the summary. | |
| """ | |
| # --- Task 2: Quiz Generator --- | |
| async def generate_quiz(chapter_name: str, difficulty: str = "medium") -> str: | |
| """ | |
| Extracts formulas from the markdown and asks the LLM to build a quiz. | |
| """ | |
| raw_data = get_local_resource() | |
| # Using the LLM's ability to pick out formulas from the raw text provided | |
| return ( | |
| f"Here is the raw material for {chapter_name}:\n" | |
| f"{raw_data}\n" | |
| f"Difficulty: {difficulty}\n" | |
| "Task: Create a 3-question quiz using the formulas found in the text." | |
| ) | |
| if __name__ == "__main__": | |
| # FastMCP handles the --transport sse argument automatically | |
| # if you use mcp.run() | |
| mcp.run() |