import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { validateSetup } from "./config/environment.js";
import { registerListCoursesTool } from "./tools/list-courses.js";
import { registerListActiveCoursesTool } from "./tools/list-active-courses.js";
import { registerSearchAssignmentsTool } from "./tools/search-assignments.js";
import { registerGetAssignmentTool } from "./tools/get-assignment.js";
import { registerAssignmentContentResource } from "./resources/assignment-content.js";
// Create the MCP server
const server = new McpServer({
name: "Canvas-Assignment-Assistant",
version: "1.0.0",
capabilities: {
resources: {},
tools: {},
}
});
// Validate environment setup
validateSetup();
// Register all tools
registerListCoursesTool(server);
registerListActiveCoursesTool(server);
registerSearchAssignmentsTool(server);
registerGetAssignmentTool(server);
// Register all resources
registerAssignmentContentResource(server);
// Start the server
(async () => {
try {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Canvas MCP Server started on stdio");
} catch (error) {
console.error("Server failed to start:", error);
process.exit(1);
}
})();