TutorX-MCP / .vscode /PythonImportHelper-v2-Completion.json
Meet Patel
Refactor TutorX MCP server to integrate Mistral OCR for document processing, update concept graph tools for LLM-driven responses, and enhance learning path generation with Gemini. Transitioned various tools to utilize LLM for improved educational interactions and streamlined API responses.
a806ca2
raw
history blame
94.3 kB
[
{
"label": "runpy",
"kind": 6,
"isExtraImport": true,
"importPath": "runpy",
"description": "runpy",
"detail": "runpy",
"documentation": {}
},
{
"label": "annotations",
"importPath": "__future__",
"description": "__future__",
"isExtraImport": true,
"detail": "__future__",
"documentation": {}
},
{
"label": "os",
"kind": 6,
"isExtraImport": true,
"importPath": "os",
"description": "os",
"detail": "os",
"documentation": {}
},
{
"label": "site",
"kind": 6,
"isExtraImport": true,
"importPath": "site",
"description": "site",
"detail": "site",
"documentation": {}
},
{
"label": "sys",
"kind": 6,
"isExtraImport": true,
"importPath": "sys",
"description": "sys",
"detail": "sys",
"documentation": {}
},
{
"label": "zip",
"importPath": "builtins",
"description": "builtins",
"isExtraImport": true,
"detail": "builtins",
"documentation": {}
},
{
"label": "str",
"importPath": "builtins",
"description": "builtins",
"isExtraImport": true,
"detail": "builtins",
"documentation": {}
},
{
"label": "os.path",
"kind": 6,
"isExtraImport": true,
"importPath": "os.path",
"description": "os.path",
"detail": "os.path",
"documentation": {}
},
{
"label": "cElementTree",
"importPath": "xml.etree",
"description": "xml.etree",
"isExtraImport": true,
"detail": "xml.etree",
"documentation": {}
},
{
"label": "pyxnat",
"kind": 6,
"isExtraImport": true,
"importPath": "pyxnat",
"description": "pyxnat",
"detail": "pyxnat",
"documentation": {}
},
{
"label": "google.generativeai",
"kind": 6,
"isExtraImport": true,
"importPath": "google.generativeai",
"description": "google.generativeai",
"detail": "google.generativeai",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "List",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Literal",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Union",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "TypeVar",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Callable",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "List",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "List",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "List",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Dict",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Any",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "List",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "Optional",
"importPath": "typing",
"description": "typing",
"isExtraImport": true,
"detail": "typing",
"documentation": {}
},
{
"label": "wraps",
"importPath": "functools",
"description": "functools",
"isExtraImport": true,
"detail": "functools",
"documentation": {}
},
{
"label": "logging",
"kind": 6,
"isExtraImport": true,
"importPath": "logging",
"description": "logging",
"detail": "logging",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "Path",
"importPath": "pathlib",
"description": "pathlib",
"isExtraImport": true,
"detail": "pathlib",
"documentation": {}
},
{
"label": "json",
"kind": 6,
"isExtraImport": true,
"importPath": "json",
"description": "json",
"detail": "json",
"documentation": {}
},
{
"label": "concept_graph",
"importPath": "resources",
"description": "resources",
"isExtraImport": true,
"detail": "resources",
"documentation": {}
},
{
"label": "concept_graph",
"importPath": "resources",
"description": "resources",
"isExtraImport": true,
"detail": "resources",
"documentation": {}
},
{
"label": "curriculum_standards",
"importPath": "resources",
"description": "resources",
"isExtraImport": true,
"detail": "resources",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"isExtraImport": true,
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"isExtraImport": true,
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "random",
"kind": 6,
"isExtraImport": true,
"importPath": "random",
"description": "random",
"detail": "random",
"documentation": {}
},
{
"label": "datetime",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "timezone",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "datetime",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "timedelta",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "datetime",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "datetime",
"importPath": "datetime",
"description": "datetime",
"isExtraImport": true,
"detail": "datetime",
"documentation": {}
},
{
"label": "get_concept",
"importPath": "resources.concept_graph",
"description": "resources.concept_graph",
"isExtraImport": true,
"detail": "resources.concept_graph",
"documentation": {}
},
{
"label": "get_all_concepts",
"importPath": "resources.concept_graph",
"description": "resources.concept_graph",
"isExtraImport": true,
"detail": "resources.concept_graph",
"documentation": {}
},
{
"label": "CONCEPT_GRAPH",
"importPath": "resources.concept_graph",
"description": "resources.concept_graph",
"isExtraImport": true,
"detail": "resources.concept_graph",
"documentation": {}
},
{
"label": "re",
"kind": 6,
"isExtraImport": true,
"importPath": "re",
"description": "re",
"detail": "re",
"documentation": {}
},
{
"label": "SequenceMatcher",
"importPath": "difflib",
"description": "difflib",
"isExtraImport": true,
"detail": "difflib",
"documentation": {}
},
{
"label": "base64",
"kind": 6,
"isExtraImport": true,
"importPath": "base64",
"description": "base64",
"detail": "base64",
"documentation": {}
},
{
"label": "io",
"kind": 6,
"isExtraImport": true,
"importPath": "io",
"description": "io",
"detail": "io",
"documentation": {}
},
{
"label": "asyncio",
"kind": 6,
"isExtraImport": true,
"importPath": "asyncio",
"description": "asyncio",
"detail": "asyncio",
"documentation": {}
},
{
"label": "aiohttp",
"kind": 6,
"isExtraImport": true,
"importPath": "aiohttp",
"description": "aiohttp",
"detail": "aiohttp",
"documentation": {}
},
{
"label": "GeminiFlash",
"importPath": "model",
"description": "model",
"isExtraImport": true,
"detail": "model",
"documentation": {}
},
{
"label": "uuid",
"kind": 6,
"isExtraImport": true,
"importPath": "uuid",
"description": "uuid",
"detail": "uuid",
"documentation": {}
},
{
"label": "BlobServiceClient",
"importPath": "azure.storage.blob",
"description": "azure.storage.blob",
"isExtraImport": true,
"detail": "azure.storage.blob",
"documentation": {}
},
{
"label": "ContentSettings",
"importPath": "azure.storage.blob",
"description": "azure.storage.blob",
"isExtraImport": true,
"detail": "azure.storage.blob",
"documentation": {}
},
{
"label": "BlobServiceClient",
"importPath": "azure.storage.blob",
"description": "azure.storage.blob",
"isExtraImport": true,
"detail": "azure.storage.blob",
"documentation": {}
},
{
"label": "ContentSettings",
"importPath": "azure.storage.blob",
"description": "azure.storage.blob",
"isExtraImport": true,
"detail": "azure.storage.blob",
"documentation": {}
},
{
"label": "load_dotenv",
"importPath": "dotenv",
"description": "dotenv",
"isExtraImport": true,
"detail": "dotenv",
"documentation": {}
},
{
"label": "load_dotenv",
"importPath": "dotenv",
"description": "dotenv",
"isExtraImport": true,
"detail": "dotenv",
"documentation": {}
},
{
"label": "FastMCP",
"importPath": "mcp.server.fastmcp",
"description": "mcp.server.fastmcp",
"isExtraImport": true,
"detail": "mcp.server.fastmcp",
"documentation": {}
},
{
"label": "FastMCP",
"importPath": "mcp.server.fastmcp",
"description": "mcp.server.fastmcp",
"isExtraImport": true,
"detail": "mcp.server.fastmcp",
"documentation": {}
},
{
"label": "uvicorn",
"kind": 6,
"isExtraImport": true,
"importPath": "uvicorn",
"description": "uvicorn",
"detail": "uvicorn",
"documentation": {}
},
{
"label": "FastAPI",
"importPath": "fastapi",
"description": "fastapi",
"isExtraImport": true,
"detail": "fastapi",
"documentation": {}
},
{
"label": "HTTPException",
"importPath": "fastapi",
"description": "fastapi",
"isExtraImport": true,
"detail": "fastapi",
"documentation": {}
},
{
"label": "UploadFile",
"importPath": "fastapi",
"description": "fastapi",
"isExtraImport": true,
"detail": "fastapi",
"documentation": {}
},
{
"label": "File",
"importPath": "fastapi",
"description": "fastapi",
"isExtraImport": true,
"detail": "fastapi",
"documentation": {}
},
{
"label": "Form",
"importPath": "fastapi",
"description": "fastapi",
"isExtraImport": true,
"detail": "fastapi",
"documentation": {}
},
{
"label": "CORSMiddleware",
"importPath": "fastapi.middleware.cors",
"description": "fastapi.middleware.cors",
"isExtraImport": true,
"detail": "fastapi.middleware.cors",
"documentation": {}
},
{
"label": "concept_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "lesson_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "quiz_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "interaction_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "ocr_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "learning_path_tools",
"importPath": "tools",
"description": "tools",
"isExtraImport": true,
"detail": "tools",
"documentation": {}
},
{
"label": "concept_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "lesson_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "quiz_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "interaction_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "ocr_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "learning_path_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "concept_graph_tools",
"importPath": "mcp_server.tools",
"description": "mcp_server.tools",
"isExtraImport": true,
"detail": "mcp_server.tools",
"documentation": {}
},
{
"label": "assess_skill_tool",
"importPath": "tools.concept_tools",
"description": "tools.concept_tools",
"isExtraImport": true,
"detail": "tools.concept_tools",
"documentation": {}
},
{
"label": "generate_lesson_tool",
"importPath": "tools.lesson_tools",
"description": "tools.lesson_tools",
"isExtraImport": true,
"detail": "tools.lesson_tools",
"documentation": {}
},
{
"label": "generate_quiz_tool",
"importPath": "tools.quiz_tools",
"description": "tools.quiz_tools",
"isExtraImport": true,
"detail": "tools.quiz_tools",
"documentation": {}
},
{
"label": "setup",
"importPath": "setuptools",
"description": "setuptools",
"isExtraImport": true,
"detail": "setuptools",
"documentation": {}
},
{
"label": "find_packages",
"importPath": "setuptools",
"description": "setuptools",
"isExtraImport": true,
"detail": "setuptools",
"documentation": {}
},
{
"label": "unittest",
"kind": 6,
"isExtraImport": true,
"importPath": "unittest",
"description": "unittest",
"detail": "unittest",
"documentation": {}
},
{
"label": "patch",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "MagicMock",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "patch",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "MagicMock",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "patch",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "MagicMock",
"importPath": "unittest.mock",
"description": "unittest.mock",
"isExtraImport": true,
"detail": "unittest.mock",
"documentation": {}
},
{
"label": "requests",
"kind": 6,
"isExtraImport": true,
"importPath": "requests",
"description": "requests",
"detail": "requests",
"documentation": {}
},
{
"label": "TutorXClient",
"importPath": "client",
"description": "client",
"isExtraImport": true,
"detail": "client",
"documentation": {}
},
{
"label": "assess_skill",
"importPath": "main",
"description": "main",
"isExtraImport": true,
"detail": "main",
"documentation": {}
},
{
"label": "generate_quiz",
"importPath": "main",
"description": "main",
"isExtraImport": true,
"detail": "main",
"documentation": {}
},
{
"label": "get_concept_graph",
"importPath": "main",
"description": "main",
"isExtraImport": true,
"detail": "main",
"documentation": {}
},
{
"label": "pytest",
"kind": 6,
"isExtraImport": true,
"importPath": "pytest",
"description": "pytest",
"detail": "pytest",
"documentation": {}
},
{
"label": "ClientSession",
"importPath": "mcp",
"description": "mcp",
"isExtraImport": true,
"detail": "mcp",
"documentation": {}
},
{
"label": "ClientSession",
"importPath": "mcp",
"description": "mcp",
"isExtraImport": true,
"detail": "mcp",
"documentation": {}
},
{
"label": "sse_client",
"importPath": "mcp.client.sse",
"description": "mcp.client.sse",
"isExtraImport": true,
"detail": "mcp.client.sse",
"documentation": {}
},
{
"label": "sse_client",
"importPath": "mcp.client.sse",
"description": "mcp.client.sse",
"isExtraImport": true,
"detail": "mcp.client.sse",
"documentation": {}
},
{
"label": "process_text_query",
"importPath": "utils.multimodal",
"description": "utils.multimodal",
"isExtraImport": true,
"detail": "utils.multimodal",
"documentation": {}
},
{
"label": "process_voice_input",
"importPath": "utils.multimodal",
"description": "utils.multimodal",
"isExtraImport": true,
"detail": "utils.multimodal",
"documentation": {}
},
{
"label": "process_handwriting",
"importPath": "utils.multimodal",
"description": "utils.multimodal",
"isExtraImport": true,
"detail": "utils.multimodal",
"documentation": {}
},
{
"label": "generate_question",
"importPath": "utils.assessment",
"description": "utils.assessment",
"isExtraImport": true,
"detail": "utils.assessment",
"documentation": {}
},
{
"label": "evaluate_student_answer",
"importPath": "utils.assessment",
"description": "utils.assessment",
"isExtraImport": true,
"detail": "utils.assessment",
"documentation": {}
},
{
"label": "gradio",
"kind": 6,
"isExtraImport": true,
"importPath": "gradio",
"description": "gradio",
"detail": "gradio",
"documentation": {}
},
{
"label": "numpy",
"kind": 6,
"isExtraImport": true,
"importPath": "numpy",
"description": "numpy",
"detail": "numpy",
"documentation": {}
},
{
"label": "sseclient",
"kind": 6,
"isExtraImport": true,
"importPath": "sseclient",
"description": "sseclient",
"detail": "sseclient",
"documentation": {}
},
{
"label": "upload_to_azure",
"importPath": "mcp_server.utils.azure_upload",
"description": "mcp_server.utils.azure_upload",
"isExtraImport": true,
"detail": "mcp_server.utils.azure_upload",
"documentation": {}
},
{
"label": "api_app",
"importPath": "mcp_server",
"description": "mcp_server",
"isExtraImport": true,
"detail": "mcp_server",
"documentation": {}
},
{
"label": "mcp",
"importPath": "mcp_server",
"description": "mcp_server",
"isExtraImport": true,
"detail": "mcp_server",
"documentation": {}
},
{
"label": "argparse",
"kind": 6,
"isExtraImport": true,
"importPath": "argparse",
"description": "argparse",
"detail": "argparse",
"documentation": {}
},
{
"label": "socket",
"kind": 6,
"isExtraImport": true,
"importPath": "socket",
"description": "socket",
"detail": "socket",
"documentation": {}
},
{
"label": "bin_dir",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "bin_dir = os.path.dirname(abs_file)\nbase = bin_dir[: -len(\"Scripts\") - 1] # strip away the bin part from the __file__, plus the path separator\n# prepend bin to PATH (this file is inside the bin directory)\nos.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"tutorx-mcp\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "base",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "base = bin_dir[: -len(\"Scripts\") - 1] # strip away the bin part from the __file__, plus the path separator\n# prepend bin to PATH (this file is inside the bin directory)\nos.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"tutorx-mcp\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path)",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "os.environ[\"PATH\"]",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "os.environ[\"PATH\"] = os.pathsep.join([bin_dir, *os.environ.get(\"PATH\", \"\").split(os.pathsep)])\nos.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"tutorx-mcp\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "os.environ[\"VIRTUAL_ENV\"]",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "os.environ[\"VIRTUAL_ENV\"] = base # virtual env is right above bin directory\nos.environ[\"VIRTUAL_ENV_PROMPT\"] = \"tutorx-mcp\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "os.environ[\"VIRTUAL_ENV_PROMPT\"]",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "os.environ[\"VIRTUAL_ENV_PROMPT\"] = \"tutorx-mcp\" or os.path.basename(base) # noqa: SIM222\n# add the virtual environments libraries to the host python import mechanism\nprev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "prev_length",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "prev_length = len(sys.path)\nfor lib in \"..\\\\Lib\\\\site-packages\".split(os.pathsep):\n path = os.path.realpath(os.path.join(bin_dir, lib))\n site.addsitedir(path)\nsys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "sys.path[:]",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]\nsys.real_prefix = sys.prefix\nsys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "sys.real_prefix",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "sys.real_prefix = sys.prefix\nsys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "sys.prefix",
"kind": 5,
"importPath": ".venv.Scripts.activate_this",
"description": ".venv.Scripts.activate_this",
"peekOfCode": "sys.prefix = base",
"detail": ".venv.Scripts.activate_this",
"documentation": {}
},
{
"label": "cmp",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def cmp(a, b):\n return (a > b) - (a < b)\nfrom builtins import zip\nfrom builtins import str\nimport os\nimport os.path as op\nimport sys\nfrom xml.etree import cElementTree as ET\nimport pyxnat\nPROJ_ATTRS = [",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_attrs",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_attrs(src_obj, dest_obj, attr_list):\n \"\"\" Copies list of attributes form source to destination\"\"\"\n src_attrs = src_obj.attrs.mget(attr_list)\n src_list = dict(list(zip(attr_list, src_attrs)))\n # NOTE: For some reason need to set te again b/c a bug somewhere sets te\n # to sequence name\n te_key = 'xnat:mrScanData/parameters/te'\n if te_key in src_list:\n src_list[te_key] = src_obj.attrs.get(te_key)\n dest_obj.attrs.mset(src_list)",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_attributes",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_attributes(src_obj, dest_obj):\n '''Copy attributes from src to dest'''\n src_type = src_obj.datatype()\n types = {'xnat:projectData': PROJ_ATTRS,\n 'xnat:subjectData': SUBJ_ATTRS,\n 'xnat:mrSessionData': MR_EXP_ATTRS,\n 'xnat:petSessionData': PET_EXP_ATTRS,\n 'xnat:ctSessionData': CT_EXP_ATTRS,\n 'xnat:mrScanData': MR_SCAN_ATTRS,\n 'xnat:petScanData': PET_SCAN_ATTRS,",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "subj_compare",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def subj_compare(item1, item2):\n '''Compare sort of items'''\n return cmp(item1.label(), item2.label())\ndef copy_file(src_f, dest_r, cache_d):\n '''\n Copy file from XNAT file source to XNAT resource destination,\n using local cache in between'''\n f_label = src_f.label()\n loc_f = cache_d + '/' + f_label\n # Make subdirectories",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_file",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_file(src_f, dest_r, cache_d):\n '''\n Copy file from XNAT file source to XNAT resource destination,\n using local cache in between'''\n f_label = src_f.label()\n loc_f = cache_d + '/' + f_label\n # Make subdirectories\n loc_d = op.dirname(loc_f)\n if not op.exists(loc_d):\n os.makedirs(loc_d)",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_res_zip",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_res_zip(src_r, dest_r, cache_d):\n '''\n Copy a resource from XNAT source to XNAT destination using local cache\n in between\n '''\n try:\n # Download zip of resource\n print('INFO:Downloading resource as zip...')\n cache_z = src_r.get(cache_d, extract=False)\n # Upload zip of resource",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "is_empty_resource",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def is_empty_resource(_res):\n '''Check if resource contains any files'''\n f_count = 0\n for f_in in _res.files().fetchall('obj'):\n f_count += 1\n break\n return f_count == 0\n# copy_project and copy_subject are untested\n# def copy_project(src_proj, dst_proj, proj_cache_dir):\n# '''Copy XNAT project from source to destination'''",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_session",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_session(src_sess, dst_sess, sess_cache_dir):\n '''Copy XNAT session from source to destination'''\n print('INFO:uploading session attributes as xml')\n # Write xml to file\n if not op.exists(sess_cache_dir):\n os.makedirs(sess_cache_dir)\n sess_xml = src_sess.get()\n xml_path = op.join(sess_cache_dir, 'sess.xml')\n write_xml(sess_xml, xml_path)\n sess_type = src_sess.datatype()",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_scan",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_scan(src_scan, dst_scan, scan_cache_dir):\n '''Copy scan from source XNAT to destination XNAT'''\n scan_type = src_scan.datatype()\n if scan_type == '':\n scan_type = 'xnat:otherDicomScanData'\n dst_scan.create(scans=scan_type)\n copy_attributes(src_scan, dst_scan)\n # Process each resource of scan\n for src_res in src_scan.resources().fetchall('obj'):\n res_label = src_res.label()",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "copy_res",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def copy_res(src_res, dst_res, res_cache_dir, use_zip=False):\n '''Copy resource from source XNAT to destination XNAT'''\n # Create cache dir\n if not op.exists(res_cache_dir):\n os.makedirs(res_cache_dir)\n # Prepare resource and check for empty\n is_empty = False\n print(dst_res._uri)\n if not dst_res.exists():\n dst_res.create()",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "write_xml",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def write_xml(xml_str, file_path, clean_tags=True):\n \"\"\"Writing XML.\"\"\"\n root = ET.fromstring(xml_str)\n # We only want the tags and attributes relevant to root, no children\n if clean_tags:\n # Remove ID\n if 'ID' in root.attrib:\n del root.attrib['ID']\n # Remove sharing tags\n tag = '{http://nrg.wustl.edu/xnat}sharing'",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "create_parser",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def create_parser():\n import argparse\n \"\"\"Parse commandline arguments.\"\"\"\n arg_parser = argparse.ArgumentParser(\n description='Downloads a given experiment/session from an XNAT instance '\n 'and uploads it to an independent one. Only DICOM resources '\n 'will be imported.',\n formatter_class=argparse.RawTextHelpFormatter)\n arg_parser.add_argument(\n '--h1', '--source_config', dest='source_config',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "main",
"kind": 2,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "def main(args):\n x1 = pyxnat.Interface(config=args.source_config)\n x2 = pyxnat.Interface(config=args.dest_config)\n columns = ['subject_label', 'label']\n e1 = x1.array.experiments(experiment_id=args.experiment_id,\n columns=columns).data[0]\n p = x2.select.project(args.project_id)\n s = p.subject(e1['subject_label'])\n if not s.exists():\n s.create()",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "PROJ_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "PROJ_ATTRS = [\n 'xnat:projectData/name',\n 'xnat:projectData/description',\n 'xnat:projectData/keywords',\n]\nSUBJ_ATTRS = [\n 'xnat:subjectData/group',\n 'xnat:subjectData/src',\n 'xnat:subjectData/investigator/firstname',\n 'xnat:subjectData/investigator/lastname',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "SUBJ_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "SUBJ_ATTRS = [\n 'xnat:subjectData/group',\n 'xnat:subjectData/src',\n 'xnat:subjectData/investigator/firstname',\n 'xnat:subjectData/investigator/lastname',\n 'xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/dob',\n 'xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/yob',\n 'xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/age',\n 'xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/gender',\n 'xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/handedness',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "MR_EXP_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "MR_EXP_ATTRS = [\n 'xnat:experimentData/date',\n 'xnat:experimentData/visit_id',\n 'xnat:experimentData/time',\n 'xnat:experimentData/note',\n 'xnat:experimentData/investigator/firstname',\n 'xnat:experimentData/investigator/lastname',\n 'xnat:imageSessionData/scanner/manufacturer',\n 'xnat:imageSessionData/scanner/model',\n 'xnat:imageSessionData/operator',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "OTHER_DICOM_SCAN_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "OTHER_DICOM_SCAN_ATTRS = [\n 'xnat:imageScanData/type',\n 'xnat:imageScanData/UID',\n 'xnat:imageScanData/note',\n 'xnat:imageScanData/quality',\n 'xnat:imageScanData/condition',\n 'xnat:imageScanData/series_description',\n 'xnat:imageScanData/documentation',\n 'xnat:imageScanData/frames',\n 'xnat:imageScanData/startTime',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "MR_SCAN_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "MR_SCAN_ATTRS = [\n 'xnat:imageScanData/type',\n 'xnat:imageScanData/UID',\n 'xnat:imageScanData/note',\n 'xnat:imageScanData/quality',\n 'xnat:imageScanData/condition',\n 'xnat:imageScanData/series_description',\n 'xnat:imageScanData/documentation',\n 'xnat:imageScanData/frames',\n 'xnat:imageScanData/startTime',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "SC_SCAN_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "SC_SCAN_ATTRS = [\n 'xnat:imageScanData/type',\n 'xnat:imageScanData/UID',\n 'xnat:imageScanData/note',\n 'xnat:imageScanData/quality',\n 'xnat:imageScanData/condition',\n 'xnat:imageScanData/series_description',\n 'xnat:imageScanData/documentation',\n 'xnat:imageScanData/frames',\n 'xnat:imageScanData/scanner/manufacturer',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "PET_EXP_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "PET_EXP_ATTRS = [\n 'xnat:experimentData/date',\n 'xnat:experimentData/visit_id',\n 'xnat:experimentData/time',\n 'xnat:experimentData/note',\n 'xnat:experimentData/investigator/firstname',\n 'xnat:experimentData/investigator/lastname',\n 'xnat:imageSessionData/scanner/manufacturer',\n 'xnat:imageSessionData/scanner/model',\n 'xnat:imageSessionData/operator',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "CT_EXP_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "CT_EXP_ATTRS = [\n 'xnat:experimentData/date',\n 'xnat:experimentData/visit_id',\n 'xnat:experimentData/time',\n 'xnat:experimentData/note',\n 'xnat:experimentData/investigator/firstname',\n 'xnat:experimentData/investigator/lastname',\n 'xnat:imageSessionData/scanner/manufacturer',\n 'xnat:imageSessionData/scanner/model',\n 'xnat:imageSessionData/operator',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "PET_SCAN_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "PET_SCAN_ATTRS = [\n 'xnat:imageScanData/type',\n 'xnat:imageScanData/UID',\n 'xnat:imageScanData/note',\n 'xnat:imageScanData/quality',\n 'xnat:imageScanData/condition',\n 'xnat:imageScanData/series_description',\n 'xnat:imageScanData/documentation',\n 'xnat:imageScanData/frames',\n 'xnat:imageScanData/scanner/manufacturer',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "CT_SCAN_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "CT_SCAN_ATTRS = [\n 'xnat:imageScanData/type',\n 'xnat:imageScanData/UID',\n 'xnat:imageScanData/note',\n 'xnat:imageScanData/quality',\n 'xnat:imageScanData/condition',\n 'xnat:imageScanData/series_description',\n 'xnat:imageScanData/documentation',\n 'xnat:imageScanData/frames',\n 'xnat:imageScanData/scanner/manufacturer',",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "PROC_ATTRS",
"kind": 5,
"importPath": ".venv.Scripts.sessionmirror",
"description": ".venv.Scripts.sessionmirror",
"peekOfCode": "PROC_ATTRS = [\n 'proc:genProcData/validation/status',\n 'proc:genProcData/procstatus',\n 'proc:genProcData/proctype',\n 'proc:genProcData/procversion',\n 'proc:genProcData/walltimeused',\n 'proc:genProcData/memused'\n]\ndef copy_attrs(src_obj, dest_obj, attr_list):\n \"\"\" Copies list of attributes form source to destination\"\"\"",
"detail": ".venv.Scripts.sessionmirror",
"documentation": {}
},
{
"label": "ModelError",
"kind": 6,
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"peekOfCode": "class ModelError(Exception):\n \"\"\"Custom exception for model-related errors\"\"\"\n pass\ndef fallback_to_15_flash(method: Callable[..., T]) -> Callable[..., T]:\n \"\"\"\n Decorator to automatically fall back to 1.5 if 2.0 fails.\n Only applies when the instance's version is '2.0'.\n \"\"\"\n @wraps(method)\n async def wrapper(self: 'GeminiFlash', *args: Any, **kwargs: Any) -> T:",
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "GeminiFlash",
"kind": 6,
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"peekOfCode": "class GeminiFlash:\n \"\"\"\n Google Gemini Flash model implementation with automatic fallback from 2.0 to 1.5.\n \"\"\"\n SUPPORTED_VERSIONS = ['2.0', '1.5']\n def __init__(self, version: str = '2.0', api_key: Optional[str] = None, _is_fallback: bool = False):\n \"\"\"\n Initialize the Gemini Flash model.\n Args:\n version: Model version ('2.0' or '1.5')",
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "fallback_to_15_flash",
"kind": 2,
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"peekOfCode": "def fallback_to_15_flash(method: Callable[..., T]) -> Callable[..., T]:\n \"\"\"\n Decorator to automatically fall back to 1.5 if 2.0 fails.\n Only applies when the instance's version is '2.0'.\n \"\"\"\n @wraps(method)\n async def wrapper(self: 'GeminiFlash', *args: Any, **kwargs: Any) -> T:\n if self.version != '2.0' or not self._should_fallback:\n return await method(self, *args, **kwargs)\n try:",
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "logger",
"kind": 5,
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"peekOfCode": "logger = logging.getLogger(__name__)\nT = TypeVar('T')\nclass ModelError(Exception):\n \"\"\"Custom exception for model-related errors\"\"\"\n pass\ndef fallback_to_15_flash(method: Callable[..., T]) -> Callable[..., T]:\n \"\"\"\n Decorator to automatically fall back to 1.5 if 2.0 fails.\n Only applies when the instance's version is '2.0'.\n \"\"\"",
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "T",
"kind": 5,
"importPath": "mcp_server.model.gemini_flash",
"description": "mcp_server.model.gemini_flash",
"peekOfCode": "T = TypeVar('T')\nclass ModelError(Exception):\n \"\"\"Custom exception for model-related errors\"\"\"\n pass\ndef fallback_to_15_flash(method: Callable[..., T]) -> Callable[..., T]:\n \"\"\"\n Decorator to automatically fall back to 1.5 if 2.0 fails.\n Only applies when the instance's version is '2.0'.\n \"\"\"\n @wraps(method)",
"detail": "mcp_server.model.gemini_flash",
"documentation": {}
},
{
"label": "get_concept",
"kind": 2,
"importPath": "mcp_server.resources.concept_graph",
"description": "mcp_server.resources.concept_graph",
"peekOfCode": "def get_concept(concept_id: str) -> Dict[str, Any]:\n \"\"\"Get a specific concept by ID or return None if not found.\"\"\"\n return CONCEPT_GRAPH.get(concept_id)\ndef get_all_concepts() -> Dict[str, Any]:\n \"\"\"Get all concepts in the graph.\"\"\"\n return {\"concepts\": list(CONCEPT_GRAPH.values())}\ndef get_concept_graph() -> Dict[str, Any]:\n \"\"\"Get the complete concept graph.\"\"\"\n return CONCEPT_GRAPH",
"detail": "mcp_server.resources.concept_graph",
"documentation": {}
},
{
"label": "get_all_concepts",
"kind": 2,
"importPath": "mcp_server.resources.concept_graph",
"description": "mcp_server.resources.concept_graph",
"peekOfCode": "def get_all_concepts() -> Dict[str, Any]:\n \"\"\"Get all concepts in the graph.\"\"\"\n return {\"concepts\": list(CONCEPT_GRAPH.values())}\ndef get_concept_graph() -> Dict[str, Any]:\n \"\"\"Get the complete concept graph.\"\"\"\n return CONCEPT_GRAPH",
"detail": "mcp_server.resources.concept_graph",
"documentation": {}
},
{
"label": "get_concept_graph",
"kind": 2,
"importPath": "mcp_server.resources.concept_graph",
"description": "mcp_server.resources.concept_graph",
"peekOfCode": "def get_concept_graph() -> Dict[str, Any]:\n \"\"\"Get the complete concept graph.\"\"\"\n return CONCEPT_GRAPH",
"detail": "mcp_server.resources.concept_graph",
"documentation": {}
},
{
"label": "CONCEPT_GRAPH",
"kind": 5,
"importPath": "mcp_server.resources.concept_graph",
"description": "mcp_server.resources.concept_graph",
"peekOfCode": "CONCEPT_GRAPH = {\n \"python\": {\n \"id\": \"python\",\n \"name\": \"Python Programming\",\n \"description\": \"Fundamentals of Python programming language\",\n \"prerequisites\": [],\n \"related\": [\"functions\", \"oop\", \"data_structures\"]\n },\n \"functions\": {\n \"id\": \"functions\",",
"detail": "mcp_server.resources.concept_graph",
"documentation": {}
},
{
"label": "get_curriculum_standards",
"kind": 2,
"importPath": "mcp_server.resources.curriculum_standards",
"description": "mcp_server.resources.curriculum_standards",
"peekOfCode": "def get_curriculum_standards(country_code: str = \"us\") -> Dict[str, Any]:\n \"\"\"\n Get curriculum standards for a specific country.\n Args:\n country_code: ISO country code (e.g., 'us', 'uk', 'in', 'sg', 'ca')\n Returns:\n Dictionary containing curriculum standards for the specified country\n \"\"\"\n country_code = country_code.lower()\n if country_code not in CURRICULUM_STANDARDS:",
"detail": "mcp_server.resources.curriculum_standards",
"documentation": {}
},
{
"label": "CURRICULUM_STANDARDS",
"kind": 5,
"importPath": "mcp_server.resources.curriculum_standards",
"description": "mcp_server.resources.curriculum_standards",
"peekOfCode": "CURRICULUM_STANDARDS = {\n \"us\": {\n \"name\": \"Common Core State Standards (US)\",\n \"subjects\": {\n \"math\": {\n \"k-5\": [\"Counting & Cardinality\", \"Operations & Algebraic Thinking\", \"Number & Operations\"],\n \"6-8\": [\"Ratios & Proportional Relationships\", \"The Number System\", \"Expressions & Equations\"],\n \"9-12\": [\"Number & Quantity\", \"Algebra\", \"Functions\", \"Modeling\", \"Geometry\", \"Statistics & Probability\"]\n },\n \"ela\": {",
"detail": "mcp_server.resources.curriculum_standards",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_graph_tools",
"description": "mcp_server.tools.concept_graph_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))",
"detail": "mcp_server.tools.concept_graph_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_graph_tools",
"description": "mcp_server.tools.concept_graph_tools",
"peekOfCode": "parent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources",
"detail": "mcp_server.tools.concept_graph_tools",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_graph_tools",
"description": "mcp_server.tools.concept_graph_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources import concept_graph\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\[email protected]()",
"detail": "mcp_server.tools.concept_graph_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_graph_tools",
"description": "mcp_server.tools.concept_graph_tools",
"peekOfCode": "parent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources import concept_graph\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\[email protected]()\nasync def get_concept_graph_tool(concept_id: Optional[str] = None) -> dict:",
"detail": "mcp_server.tools.concept_graph_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.concept_graph_tools",
"description": "mcp_server.tools.concept_graph_tools",
"peekOfCode": "MODEL = GeminiFlash()\[email protected]()\nasync def get_concept_graph_tool(concept_id: Optional[str] = None) -> dict:\n \"\"\"\n Get the complete concept graph or a specific concept, fully LLM-driven.\n For a specific concept, use Gemini to generate a JSON object with explanation, related concepts, prerequisites, and summary.\n For the full graph, use Gemini to generate a JSON object with a list of all concepts and their relationships.\n \"\"\"\n if concept_id:\n prompt = (",
"detail": "mcp_server.tools.concept_graph_tools",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_tools",
"description": "mcp_server.tools.concept_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))",
"detail": "mcp_server.tools.concept_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_tools",
"description": "mcp_server.tools.concept_tools",
"peekOfCode": "parent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources",
"detail": "mcp_server.tools.concept_tools",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_tools",
"description": "mcp_server.tools.concept_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources.concept_graph import get_concept, get_all_concepts\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\[email protected]()",
"detail": "mcp_server.tools.concept_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.concept_tools",
"description": "mcp_server.tools.concept_tools",
"peekOfCode": "parent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources.concept_graph import get_concept, get_all_concepts\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\[email protected]()\nasync def get_concept_tool(concept_id: str = None) -> dict:",
"detail": "mcp_server.tools.concept_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.concept_tools",
"description": "mcp_server.tools.concept_tools",
"peekOfCode": "MODEL = GeminiFlash()\[email protected]()\nasync def get_concept_tool(concept_id: str = None) -> dict:\n \"\"\"\n Get a specific concept or all concepts from the knowledge graph, fully LLM-driven.\n If a concept_id is provided, use Gemini to generate a JSON object with explanation, key points, and example.\n \"\"\"\n if not concept_id:\n return {\"error\": \"concept_id is required for LLM-driven mode\"}\n prompt = (",
"detail": "mcp_server.tools.concept_tools",
"documentation": {}
},
{
"label": "calculate_similarity",
"kind": 2,
"importPath": "mcp_server.tools.interaction_tools",
"description": "mcp_server.tools.interaction_tools",
"peekOfCode": "def calculate_similarity(text1: str, text2: str) -> float:\n \"\"\"Calculate the similarity ratio between two texts.\"\"\"\n return 0.0 # No longer used, LLM-driven\[email protected]()\nasync def text_interaction(query: str, student_id: str) -> dict:\n \"\"\"\n Process a text query from a student and provide an educational response, fully LLM-driven.\n Use Gemini to generate a JSON object with a response and suggested actions/resources.\n \"\"\"\n prompt = (",
"detail": "mcp_server.tools.interaction_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.interaction_tools",
"description": "mcp_server.tools.interaction_tools",
"peekOfCode": "MODEL = GeminiFlash()\ndef calculate_similarity(text1: str, text2: str) -> float:\n \"\"\"Calculate the similarity ratio between two texts.\"\"\"\n return 0.0 # No longer used, LLM-driven\[email protected]()\nasync def text_interaction(query: str, student_id: str) -> dict:\n \"\"\"\n Process a text query from a student and provide an educational response, fully LLM-driven.\n Use Gemini to generate a JSON object with a response and suggested actions/resources.\n \"\"\"",
"detail": "mcp_server.tools.interaction_tools",
"documentation": {}
},
{
"label": "get_prerequisites",
"kind": 2,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "def get_prerequisites(concept_id: str, visited: Optional[set] = None) -> List[Dict[str, Any]]:\n \"\"\"\n Get all prerequisites for a concept recursively.\n Args:\n concept_id: ID of the concept to get prerequisites for\n visited: Set of already visited concepts to avoid cycles\n Returns:\n List of prerequisite concepts in order\n \"\"\"\n if visited is None:",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "generate_learning_path",
"kind": 2,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "def generate_learning_path(concept_ids: List[str], student_level: str = \"beginner\") -> Dict[str, Any]:\n \"\"\"\n Generate a personalized learning path for a student.\n Args:\n concept_ids: List of concept IDs to include in the learning path\n student_level: Student's current level (beginner, intermediate, advanced)\n Returns:\n Dictionary containing the learning path\n \"\"\"\n if not concept_ids:",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "parent_dir = current_dir.parent.parent\nsys.path.insert(0, str(parent_dir))\nimport sys\nimport os\nfrom pathlib import Path\n# Add the parent directory to the Python path\ncurrent_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "current_dir = Path(__file__).parent\nparent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources.concept_graph import CONCEPT_GRAPH\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\ndef get_prerequisites(concept_id: str, visited: Optional[set] = None) -> List[Dict[str, Any]]:",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "parent_dir",
"kind": 5,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "parent_dir = current_dir.parent\nsys.path.insert(0, str(parent_dir))\n# Import from local resources\nfrom resources.concept_graph import CONCEPT_GRAPH\n# Import MCP\nfrom mcp_server.mcp_instance import mcp\nfrom mcp_server.model.gemini_flash import GeminiFlash\nMODEL = GeminiFlash()\ndef get_prerequisites(concept_id: str, visited: Optional[set] = None) -> List[Dict[str, Any]]:\n \"\"\"",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.learning_path_tools",
"description": "mcp_server.tools.learning_path_tools",
"peekOfCode": "MODEL = GeminiFlash()\ndef get_prerequisites(concept_id: str, visited: Optional[set] = None) -> List[Dict[str, Any]]:\n \"\"\"\n Get all prerequisites for a concept recursively.\n Args:\n concept_id: ID of the concept to get prerequisites for\n visited: Set of already visited concepts to avoid cycles\n Returns:\n List of prerequisite concepts in order\n \"\"\"",
"detail": "mcp_server.tools.learning_path_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.lesson_tools",
"description": "mcp_server.tools.lesson_tools",
"peekOfCode": "MODEL = GeminiFlash()\[email protected]()\nasync def generate_lesson_tool(topic: str, grade_level: int, duration_minutes: int) -> dict:\n \"\"\"\n Generate a lesson plan for the given topic, grade level, and duration, fully LLM-driven.\n Use Gemini to generate a JSON object with objectives, activities, materials, assessment, differentiation, and homework.\n \"\"\"\n prompt = (\n f\"Generate a detailed lesson plan as a JSON object for the topic '{topic}', grade {grade_level}, duration {duration_minutes} minutes. \"\n f\"Include fields: objectives (list), activities (list), materials (list), assessment (dict), differentiation (dict), and homework (dict).\"",
"detail": "mcp_server.tools.lesson_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.ocr_tools",
"description": "mcp_server.tools.ocr_tools",
"peekOfCode": "MODEL = GeminiFlash()\nasync def mistral_ocr_request(document_url: str) -> dict:\n \"\"\"\n Send OCR request to Mistral OCR service using document URL.\n Args:\n document_url: URL of the document to process\n Returns:\n OCR response from Mistral\n \"\"\"\n try:",
"detail": "mcp_server.tools.ocr_tools",
"documentation": {}
},
{
"label": "result",
"kind": 5,
"importPath": "mcp_server.tools.ocr_tools",
"description": "mcp_server.tools.ocr_tools",
"peekOfCode": "result = await mistral_document_ocr(\"https://example.com/document.pdf\")\n# For image document \nresult = await mistral_document_ocr(\"https://example.com/image.jpg\")\n\"\"\"",
"detail": "mcp_server.tools.ocr_tools",
"documentation": {}
},
{
"label": "result",
"kind": 5,
"importPath": "mcp_server.tools.ocr_tools",
"description": "mcp_server.tools.ocr_tools",
"peekOfCode": "result = await mistral_document_ocr(\"https://example.com/image.jpg\")\n\"\"\"",
"detail": "mcp_server.tools.ocr_tools",
"documentation": {}
},
{
"label": "PROMPT_TEMPLATE",
"kind": 5,
"importPath": "mcp_server.tools.quiz_tools",
"description": "mcp_server.tools.quiz_tools",
"peekOfCode": "PROMPT_TEMPLATE = (Path(__file__).parent.parent / \"prompts\" / \"quiz_generation.txt\").read_text(encoding=\"utf-8\")\n# Initialize Gemini model\nMODEL = GeminiFlash()\[email protected]()\nasync def generate_quiz_tool(concept: str, difficulty: str = \"medium\") -> dict:\n \"\"\"\n Generate a quiz based on a concept and difficulty using Gemini, fully LLM-driven.\n The JSON should include a list of questions, each with options and the correct answer.\n \"\"\"\n try:",
"detail": "mcp_server.tools.quiz_tools",
"documentation": {}
},
{
"label": "MODEL",
"kind": 5,
"importPath": "mcp_server.tools.quiz_tools",
"description": "mcp_server.tools.quiz_tools",
"peekOfCode": "MODEL = GeminiFlash()\[email protected]()\nasync def generate_quiz_tool(concept: str, difficulty: str = \"medium\") -> dict:\n \"\"\"\n Generate a quiz based on a concept and difficulty using Gemini, fully LLM-driven.\n The JSON should include a list of questions, each with options and the correct answer.\n \"\"\"\n try:\n if not concept or not isinstance(concept, str):\n return {\"error\": \"concept must be a non-empty string\"}",
"detail": "mcp_server.tools.quiz_tools",
"documentation": {}
},
{
"label": "upload_to_azure",
"kind": 2,
"importPath": "mcp_server.utils.azure_upload",
"description": "mcp_server.utils.azure_upload",
"peekOfCode": "def upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.\n \"\"\"\n if not AZURE_CONNECTION_STRING or not AZURE_CONTAINER_NAME:",
"detail": "mcp_server.utils.azure_upload",
"documentation": {}
},
{
"label": "AZURE_CONNECTION_STRING",
"kind": 5,
"importPath": "mcp_server.utils.azure_upload",
"description": "mcp_server.utils.azure_upload",
"peekOfCode": "AZURE_CONNECTION_STRING = os.getenv(\"AZURE_CONNECTION_STRING\")\nAZURE_CONTAINER_NAME = os.getenv(\"AZURE_CONTAINER_NAME\")\ndef upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.",
"detail": "mcp_server.utils.azure_upload",
"documentation": {}
},
{
"label": "AZURE_CONTAINER_NAME",
"kind": 5,
"importPath": "mcp_server.utils.azure_upload",
"description": "mcp_server.utils.azure_upload",
"peekOfCode": "AZURE_CONTAINER_NAME = os.getenv(\"AZURE_CONTAINER_NAME\")\ndef upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.\n \"\"\"",
"detail": "mcp_server.utils.azure_upload",
"documentation": {}
},
{
"label": "mcp",
"kind": 5,
"importPath": "mcp_server.mcp_instance",
"description": "mcp_server.mcp_instance",
"peekOfCode": "mcp = FastMCP(\n \"TutorX\",\n dependencies=[\"mcp[cli]>=1.9.3\"],\n cors_origins=[\"*\"]\n)",
"detail": "mcp_server.mcp_instance",
"documentation": {}
},
{
"label": "current_dir",
"kind": 5,
"importPath": "mcp_server.server",
"description": "mcp_server.server",
"peekOfCode": "current_dir = Path(__file__).parent\nsys.path.insert(0, str(current_dir))\nimport uvicorn\nfrom fastapi import FastAPI, HTTPException, UploadFile, File, Form\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom mcp.server.fastmcp import FastMCP\n# Import all tools to register them with MCP\nfrom tools import (\n concept_tools,\n lesson_tools,",
"detail": "mcp_server.server",
"documentation": {}
},
{
"label": "api_app",
"kind": 5,
"importPath": "mcp_server.server",
"description": "mcp_server.server",
"peekOfCode": "api_app = FastAPI(\n title=\"TutorX MCP Server\",\n description=\"Model Context Protocol server for TutorX educational platform\",\n version=\"1.0.0\"\n)\n# Add CORS middleware\napi_app.add_middleware(\n CORSMiddleware,\n allow_origins=[\"*\"],\n allow_credentials=True,",
"detail": "mcp_server.server",
"documentation": {}
},
{
"label": "TestTutorXClient",
"kind": 6,
"importPath": "tests.test_client",
"description": "tests.test_client",
"peekOfCode": "class TestTutorXClient(unittest.TestCase):\n \"\"\"Test cases for the TutorX MCP client\"\"\"\n def setUp(self):\n \"\"\"Set up test fixtures\"\"\"\n self.client = TutorXClient(\"http://localhost:8000\")\n self.student_id = \"test_student_123\"\n self.concept_id = \"math_algebra_basics\"\n @patch('client.requests.post')\n def test_call_tool(self, mock_post):\n \"\"\"Test _call_tool method\"\"\"",
"detail": "tests.test_client",
"documentation": {}
},
{
"label": "TestMCPServer",
"kind": 6,
"importPath": "tests.test_mcp_server",
"description": "tests.test_mcp_server",
"peekOfCode": "class TestMCPServer(unittest.TestCase):\n \"\"\"Test cases for the TutorX MCP server\"\"\"\n def setUp(self):\n \"\"\"Set up test fixtures\"\"\"\n self.student_id = \"test_student_123\"\n self.concept_id = \"math_algebra_basics\"\n def test_assess_skill(self):\n \"\"\"Test assess_skill tool\"\"\"\n result = assess_skill(self.student_id, self.concept_id)\n # Verify the structure of the result",
"detail": "tests.test_mcp_server",
"documentation": {}
},
{
"label": "SERVER_URL",
"kind": 5,
"importPath": "tests.test_tools_integration",
"description": "tests.test_tools_integration",
"peekOfCode": "SERVER_URL = \"http://localhost:8000/sse\" # Adjust if needed\[email protected]\nasync def test_get_concept_graph_tool():\n async with sse_client(SERVER_URL) as (sse, write):\n async with ClientSession(sse, write) as session:\n await session.initialize()\n result = await session.call_tool(\"get_concept_graph_tool\", {\"concept_id\": \"python\"})\n assert result and \"error\" not in result\[email protected]\nasync def test_generate_quiz_tool():",
"detail": "tests.test_tools_integration",
"documentation": {}
},
{
"label": "TestMultimodalUtils",
"kind": 6,
"importPath": "tests.test_utils",
"description": "tests.test_utils",
"peekOfCode": "class TestMultimodalUtils(unittest.TestCase):\n \"\"\"Test cases for multimodal utility functions\"\"\"\n def test_process_text_query(self):\n \"\"\"Test text query processing\"\"\"\n # Test with a \"solve\" query\n solve_query = \"Please solve this equation: 2x + 3 = 7\"\n result = process_text_query(solve_query)\n self.assertIsInstance(result, dict)\n self.assertEqual(result[\"query\"], solve_query)\n self.assertEqual(result[\"response_type\"], \"math_solution\")",
"detail": "tests.test_utils",
"documentation": {}
},
{
"label": "TestAssessmentUtils",
"kind": 6,
"importPath": "tests.test_utils",
"description": "tests.test_utils",
"peekOfCode": "class TestAssessmentUtils(unittest.TestCase):\n \"\"\"Test cases for assessment utility functions\"\"\"\n def test_generate_question_algebra_basics(self):\n \"\"\"Test question generation for algebra basics\"\"\"\n concept_id = \"math_algebra_basics\"\n difficulty = 2\n question = generate_question(concept_id, difficulty)\n self.assertIsInstance(question, dict)\n self.assertIn(\"id\", question)\n self.assertEqual(question[\"concept_id\"], concept_id)",
"detail": "tests.test_utils",
"documentation": {}
},
{
"label": "upload_to_azure",
"kind": 2,
"importPath": "utils.azure_upload",
"description": "utils.azure_upload",
"peekOfCode": "def upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.\n \"\"\"\n if not AZURE_CONNECTION_STRING or not AZURE_CONTAINER_NAME:",
"detail": "utils.azure_upload",
"documentation": {}
},
{
"label": "AZURE_CONNECTION_STRING",
"kind": 5,
"importPath": "utils.azure_upload",
"description": "utils.azure_upload",
"peekOfCode": "AZURE_CONNECTION_STRING = os.getenv(\"AZURE_CONNECTION_STRING\")\nAZURE_CONTAINER_NAME = os.getenv(\"AZURE_CONTAINER_NAME\")\ndef upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.",
"detail": "utils.azure_upload",
"documentation": {}
},
{
"label": "AZURE_CONTAINER_NAME",
"kind": 5,
"importPath": "utils.azure_upload",
"description": "utils.azure_upload",
"peekOfCode": "AZURE_CONTAINER_NAME = os.getenv(\"AZURE_CONTAINER_NAME\")\ndef upload_to_azure(file_path: str, content_type: str = None) -> str:\n \"\"\"\n Upload a file to Azure Blob Storage and return the public URL.\n Args:\n file_path: Path to the file to upload.\n content_type: Optional MIME type (e.g., 'application/pdf'). If not provided, guessed from extension.\n Returns:\n The public URL of the uploaded blob.\n \"\"\"",
"detail": "utils.azure_upload",
"documentation": {}
},
{
"label": "SERVER_URL",
"kind": 5,
"importPath": "app",
"description": "app",
"peekOfCode": "SERVER_URL = \"http://localhost:8000/sse\" # Ensure this is the SSE endpoint\n# Utility functions\nasync def load_concept_graph(concept_id: str = None):\n \"\"\"\n Load and visualize the concept graph for a given concept ID.\n If no concept_id is provided, returns the first available concept.\n Uses call_resource for concept graph retrieval (not a tool).\n Returns:\n tuple: (figure, concept_details, related_concepts) or (None, error_dict, [])\n \"\"\"",
"detail": "app",
"documentation": {}
},
{
"label": "run_server",
"kind": 2,
"importPath": "main",
"description": "main",
"peekOfCode": "def run_server():\n \"\"\"Run the MCP server with the configured settings.\"\"\"\n print(f\"Starting TutorX MCP server on {SERVER_HOST}:{SERVER_PORT}...\")\n print(f\"MCP transport: {SERVER_TRANSPORT}\")\n print(f\"API docs: http://{SERVER_HOST}:{SERVER_PORT}/docs\")\n print(f\"MCP endpoint: http://{SERVER_HOST}:{SERVER_PORT}/mcp\")\n # Configure uvicorn to run the FastAPI app\n uvicorn.run(\n \"server:api_app\",\n host=SERVER_HOST,",
"detail": "main",
"documentation": {}
},
{
"label": "SERVER_HOST",
"kind": 5,
"importPath": "main",
"description": "main",
"peekOfCode": "SERVER_HOST = os.getenv(\"MCP_HOST\", \"0.0.0.0\")\nSERVER_PORT = int(os.getenv(\"MCP_PORT\", \"8001\"))\nSERVER_TRANSPORT = os.getenv(\"MCP_TRANSPORT\", \"sse\")\ndef run_server():\n \"\"\"Run the MCP server with the configured settings.\"\"\"\n print(f\"Starting TutorX MCP server on {SERVER_HOST}:{SERVER_PORT}...\")\n print(f\"MCP transport: {SERVER_TRANSPORT}\")\n print(f\"API docs: http://{SERVER_HOST}:{SERVER_PORT}/docs\")\n print(f\"MCP endpoint: http://{SERVER_HOST}:{SERVER_PORT}/mcp\")\n # Configure uvicorn to run the FastAPI app",
"detail": "main",
"documentation": {}
},
{
"label": "SERVER_PORT",
"kind": 5,
"importPath": "main",
"description": "main",
"peekOfCode": "SERVER_PORT = int(os.getenv(\"MCP_PORT\", \"8001\"))\nSERVER_TRANSPORT = os.getenv(\"MCP_TRANSPORT\", \"sse\")\ndef run_server():\n \"\"\"Run the MCP server with the configured settings.\"\"\"\n print(f\"Starting TutorX MCP server on {SERVER_HOST}:{SERVER_PORT}...\")\n print(f\"MCP transport: {SERVER_TRANSPORT}\")\n print(f\"API docs: http://{SERVER_HOST}:{SERVER_PORT}/docs\")\n print(f\"MCP endpoint: http://{SERVER_HOST}:{SERVER_PORT}/mcp\")\n # Configure uvicorn to run the FastAPI app\n uvicorn.run(",
"detail": "main",
"documentation": {}
},
{
"label": "SERVER_TRANSPORT",
"kind": 5,
"importPath": "main",
"description": "main",
"peekOfCode": "SERVER_TRANSPORT = os.getenv(\"MCP_TRANSPORT\", \"sse\")\ndef run_server():\n \"\"\"Run the MCP server with the configured settings.\"\"\"\n print(f\"Starting TutorX MCP server on {SERVER_HOST}:{SERVER_PORT}...\")\n print(f\"MCP transport: {SERVER_TRANSPORT}\")\n print(f\"API docs: http://{SERVER_HOST}:{SERVER_PORT}/docs\")\n print(f\"MCP endpoint: http://{SERVER_HOST}:{SERVER_PORT}/mcp\")\n # Configure uvicorn to run the FastAPI app\n uvicorn.run(\n \"server:api_app\",",
"detail": "main",
"documentation": {}
},
{
"label": "run_mcp_server",
"kind": 2,
"importPath": "run",
"description": "run",
"peekOfCode": "def run_mcp_server(host=\"0.0.0.0\", port=8001):\n \"\"\"\n Run the MCP server using uvicorn\n Args:\n host: Host to bind the server to\n port: Port to run the server on\n \"\"\"\n print(f\"Starting TutorX MCP Server on {host}:{port}...\")\n # Set environment variables\n os.environ[\"MCP_HOST\"] = host",
"detail": "run",
"documentation": {}
},
{
"label": "run_gradio_interface",
"kind": 2,
"importPath": "run",
"description": "run",
"peekOfCode": "def run_gradio_interface(port=7860):\n \"\"\"\n Run the Gradio interface\n Args:\n port: Port to run the Gradio interface on\n \"\"\"\n print(f\"Starting TutorX Gradio Interface on port {port}...\")\n try:\n # Make sure the mcp-server directory is in the path\n mcp_server_dir = str(Path(__file__).parent / \"mcp-server\")",
"detail": "run",
"documentation": {}
},
{
"label": "check_port_available",
"kind": 2,
"importPath": "run",
"description": "run",
"peekOfCode": "def check_port_available(port):\n \"\"\"\n Check if a port is available\n Args:\n port: Port number to check\n Returns:\n bool: True if port is available, False otherwise\n \"\"\"\n with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:\n return s.connect_ex(('localhost', port)) != 0",
"detail": "run",
"documentation": {}
},
{
"label": "run_tests",
"kind": 2,
"importPath": "run_tests",
"description": "run_tests",
"peekOfCode": "def run_tests():\n \"\"\"Run all tests\"\"\"\n print(\"Running TutorX-MCP Tests...\")\n # First run unittest tests\n unittest_loader = unittest.TestLoader()\n test_directory = os.path.join(os.path.dirname(__file__), \"tests\")\n test_suite = unittest_loader.discover(test_directory)\n test_runner = unittest.TextTestRunner(verbosity=2)\n unittest_result = test_runner.run(test_suite)\n # Then run pytest tests (with coverage)",
"detail": "run_tests",
"documentation": {}
}
]