Tools for Canvas LMS and Gradescope that let agents look up courses, resources, modules and upcoming assignments.
Setup
Choose your client, copy the config, then fill in any required environment variables.
Local
claude mcp add canvas-aryankeluskar --env CANVAS_API_KEY='<CANVAS_API_KEY>' --env GEMINI_API_KEY='<GEMINI_API_KEY>' -- uv --directory /Users/aryank/Developer/canvas-mcp run canvas.py~/.codex/config.toml
[mcp_servers.canvas-aryankeluskar]
command = "uv"
args = ["--directory", "/Users/aryank/Developer/canvas-mcp", "run", "canvas.py"]
env = { CANVAS_API_KEY = "<CANVAS_API_KEY>", GEMINI_API_KEY = "<GEMINI_API_KEY>" }
# codex mcp add canvas-aryankeluskar --env CANVAS_API_KEY='<CANVAS_API_KEY>' --env GEMINI_API_KEY='<GEMINI_API_KEY>' -- uv --directory /Users/aryank/Developer/canvas-mcp run canvas.py~/.cursor/mcp.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"command": "uv",
"args": [
"--directory",
"/Users/aryank/Developer/canvas-mcp",
"run",
"canvas.py"
],
"env": {
"CANVAS_API_KEY": "<CANVAS_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"canvas-aryankeluskar": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/Users/aryank/Developer/canvas-mcp",
"run",
"canvas.py"
],
"env": {
"CANVAS_API_KEY": "<CANVAS_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"command": "uv",
"args": [
"--directory",
"/Users/aryank/Developer/canvas-mcp",
"run",
"canvas.py"
],
"env": {
"CANVAS_API_KEY": "<CANVAS_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"command": "uv",
"args": [
"--directory",
"/Users/aryank/Developer/canvas-mcp",
"run",
"canvas.py"
],
"env": {
"CANVAS_API_KEY": "<CANVAS_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"command": "uv",
"args": [
"--directory",
"/Users/aryank/Developer/canvas-mcp",
"run",
"canvas.py"
],
"env": {
"CANVAS_API_KEY": "<CANVAS_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>"
}
}
}
}Remote
claude mcp add --transport http canvas-aryankeluskar https://canvas-mcp--aryankeluskar.run.tools~/.codex/config.toml
[mcp_servers.canvas-aryankeluskar]
url = "https://canvas-mcp--aryankeluskar.run.tools"
# codex mcp add canvas-aryankeluskar --url https://canvas-mcp--aryankeluskar.run.tools~/.cursor/mcp.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"url": "https://canvas-mcp--aryankeluskar.run.tools"
}
}
}.vscode/mcp.json
{
"servers": {
"canvas-aryankeluskar": {
"type": "http",
"url": "https://canvas-mcp--aryankeluskar.run.tools"
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"httpUrl": "https://canvas-mcp--aryankeluskar.run.tools"
}
}
}claude_desktop_config.json · Customize › Connectors › Add custom connector
{
"mcpServers": {
"canvas-aryankeluskar": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://canvas-mcp--aryankeluskar.run.tools"
]
}
}
}.trae/mcp.json
{
"mcpServers": {
"canvas-aryankeluskar": {
"url": "https://canvas-mcp--aryankeluskar.run.tools"
}
}
}Environment variables
CANVAS_API_KEYGEMINI_API_KEY
Replace the placeholders with your own credentials and keep them out of version control.