{
  "markdown": "# AI School MCP server\n\nGives any MCP client - Claude Code, Claude Desktop, or anything else speaking the\nprotocol - the ability to search and read the free [AI School](https://lillytechsystems.com/ai-school/)\ncurriculum: 550+ tracks covering AI engineering, governance, security, and applied\nAI by profession.\n\nThe point is not \"an AI that knows about AI\". It is that when an assistant answers a\nquestion about, say, chunking strategy or the EU AI Act, it can point at a specific\nlesson you can go and read, instead of producing a fluent paragraph you have no way\nto check.\n\n## Install\n\nOne command, nothing to clone. Node 20+ is the only requirement: no API key,\nno account, no server to run.\n\n**Claude Code**\n\n```bash\nclaude mcp add ai-school -- npx -y ai-school-mcp\n```\n\n**Claude Desktop** - add to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-school\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"ai-school-mcp\"]\n    }\n  }\n}\n```\n\nPin a version if you would rather not track the latest release:\n\n```bash\nclaude mcp add ai-school -- npx -y ai-school-mcp@1.0.1\n```\n\n**Hosted, nothing to install.** The same server also runs at\n`https://lillytechsystems.com/mcp` over Streamable HTTP, and is listed in the\nofficial MCP Registry as `com.lillytechsystems/ai-school`:\n\n```bash\nclaude mcp add --transport http ai-school https://lillytechsystems.com/mcp\n```\n\n### From a clone\n\nFaster to start, and the right setup for contributing or for pointing at a\nlocal copy of the site:\n\n```bash\ngit clone https://github.com/Lilly-Tech-Collab/ai-school-mcp.git\ncd ai-school-mcp\nnpm install\nnpm test          # smoke-tests the handshake, tools and a live API call\n```\n\n```bash\nclaude mcp add ai-school -- node \"$PWD/server.js\"\n```\n\nSet `AI_SCHOOL_SITE` to point the server at a different host; it defaults to\n`https://lillytechsystems.com`.\n\nThe server reads the public static curriculum API at\n`https://lillytechsystems.com/ai-school/api/v1/`, which is a set of JSON files\non the same host as the site. Nothing is authenticated and nothing is written.\n\n## Tools\n\n| Tool | What it does |\n|---|---|\n| `search_lessons` | Search lesson titles across the whole curriculum. Returns titles and URLs. |\n| `list_tracks` | List course tracks, optionally filtered. |\n| `get_track` | One track with its full lesson list, so you can see a course's structure. |\n| `read_lesson` | Fetch a lesson's full text as readable markdown-ish output. |\n\n## Resources\n\n| URI | Contents |\n|---|---|\n| `aischool://catalogue` | Counts, licence terms, endpoint list. |\n| `aischool://tracks` | Every track with lesson counts. |\n\n## Notes\n\n- **`read_lesson` only fetches `lillytechsystems.com`.** A \"read this URL\" tool that\n  accepts arbitrary hosts is an SSRF primitive handed to whoever wrote the prompt, so\n  the host check is deliberate and should stay.\n- **Search is title-only** and deliberately simple. The full-text index is 4 MB and\n  belongs in the browser, not in an MCP round trip; if title matching does not find\n  it, `list_tracks` then `get_track` usually will.\n- **The catalogue is cached per process.** A long-running client fetches it once. Restart\n  the server to pick up newly published lessons.\n- **Content licence.** Lessons are free to read, link to and quote with attribution.\n  Republishing whole lessons is not permitted. The metadata (titles, descriptions,\n  URLs) may be used freely with attribution. See `aischool://catalogue`.\n\n## Local development\n\n```bash\nnpm run inspect     # opens the MCP Inspector against this server\n```\n\nThe server writes only to stderr; stdout is the protocol channel.\n",
  "bytes": 3604,
  "sha": "683d25d36179619001acbcb1b20655727914077a49c71006e085ead621f54b93",
  "repo_slug": "lilly-tech-collab/ai-school-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_lillytechsystems_ai_school_e1c09ba4/readme"
}