Skip to main content
Glama

reinvent2026-mcp

An MCP (Model Context Protocol) server for the AWS re:Invent 2026 session catalog. Attach it to any MCP client — Claude Desktop, Kiro, Cursor, or Codex — (or a Strands agent) to search the full ~1,500-session catalog by keyword and by meaning, look up venues and campus travel, and get the official AWS links.

Author: DD · License: MIT · Repo: https://github.com/dineshrajdhanapathyDD/reinvent2026-mcp

Not affiliated with AWS. Re:Route AI recommends; AWS re:Invent confirms. Official event info always links back to AWS.


Highlights

  • Bundled real catalog — ships the full 1,507-session re:Invent 2026 catalog (scraped from the official public API), loaded on startup. Works offline, no keys.

  • Semantic search — find sessions by a natural-language goal ("build production AI agents hands-on"), not just keywords.

  • Venues & travel — the six venues + walk/shuttle estimates.

  • Official links — the source-of-truth AWS URLs.

  • Live refresh — re-scrape the official catalog API with Playwright.


Related MCP server: AWS Amplify Documentation MCP Server

Install

pip install reinvent2026-mcp

# optional: enable live scraping of the official catalog
pip install "reinvent2026-mcp[scrape]"
playwright install chromium

Run it directly:

reinvent2026-mcp            # stdio MCP server
# or
python -m reinvent2026_mcp.server

Tools

Tool

Description

catalog_status

Active source + session count

search_sessions

Keyword/topic search (+ day/venue)

semantic_search

Meaning-based search from a natural-language goal

get_session

One session by id

list_venues

The six venues

estimate_travel

Walk vs. shuttle minutes between venues

official_links

Authoritative AWS re:Invent URLs

refresh_catalog

Scrape the official public API (Playwright)

load_catalog

Load a normalized catalog JSON file


Use it in your MCP client

The server speaks MCP over stdio. Add the snippet for your client, then restart it and ask something like "Find hands-on sessions to help me build production AI agents at re:Invent."

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "reinvent-2026": {
      "command": "reinvent2026-mcp"
    }
  }
}

If reinvent2026-mcp isn't on PATH, use the module form:

{
  "mcpServers": {
    "reinvent-2026": {
      "command": "python",
      "args": ["-m", "reinvent2026_mcp.server"]
    }
  }
}

Restart Claude Desktop; the tools appear under the 🔌 (MCP) menu.

Kiro

Add to .kiro/settings/mcp.json (workspace) or ~/.kiro/settings/mcp.json (global):

{
  "mcpServers": {
    "reinvent-2026": {
      "command": "reinvent2026-mcp",
      "disabled": false,
      "autoApprove": [
        "catalog_status", "search_sessions", "semantic_search",
        "get_session", "list_venues", "estimate_travel", "official_links"
      ]
    }
  }
}

Reconnect from Kiro's MCP Server panel (no restart needed).

Cursor

Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "reinvent-2026": {
      "command": "reinvent2026-mcp"
    }
  }
}

Enable it in Settings → MCP, then use it from Cursor chat/agent.

Codex (OpenAI Codex CLI)

Add to ~/.codex/config.toml:

[mcp_servers.reinvent-2026]
command = "reinvent2026-mcp"
args = []

(Equivalent module form: command = "python", args = ["-m", "reinvent2026_mcp.server"].)

Any Strands agent (Python)

from mcp import StdioServerParameters
from strands import Agent
from strands.tools.mcp import MCPClient

client = MCPClient(lambda: StdioServerParameters(command="reinvent2026-mcp"))
client.start()
agent = Agent(tools=client.list_tools_sync())
agent("Find hands-on sessions to help me build production AI agents.")

Example prompts

  • "Search re:Invent for Amazon Bedrock chalk talks."

  • "Semantic search: I want to secure my generative AI applications."

  • "How long from The Venetian to MGM Grand — walk or shuttle?"

  • "Give me the official re:Invent keynotes and security-focus links."


How the scraper works

The catalog page loads its data from a public JSON API (POST https://catalog.awsevents.com/api/sessions) that needs two profile headers the page generates — no login required. refresh_catalog opens the page once with Playwright, captures those headers, then pages through all sessions and normalizes them.

The public catalog omits per-session times/rooms until nearer the event, so day/time/venue are assigned deterministically (clearly estimated) to keep scheduling usable; real published times can replace them without code changes.

Refresh the bundled data:

reinvent2026-refresh

Automated access is governed by the event's terms of use. Keep it to your own personal planning.


Data model

Each session: id, title, topic, format, venue, room, day, start, end, level, learning_mode, hands_on, abstract, official_url, catalog_url, match_score. Formats normalize to the canonical set (Breakout, Chalk Talk, Workshop, Builders' Session, Code Talk, Lab, Lightning Talk, Gamified Learning, Exam Prep, Bootcamp, Keynote), each mapped to a learning mode (Watch and Learn / Work Alongside Experts / Build It Yourself / Certification).


Development

git clone https://github.com/dineshrajdhanapathyDD/reinvent2026-mcp.git
cd reinvent2026-mcp
pip install -e ".[dev,scrape]"
pytest -q

Releasing (maintainers)

CI runs the test suite on every push/PR (.github/workflows/ci.yml). To publish a new version to PyPI, bump version in pyproject.toml, then tag:

git tag v0.1.0
git push origin v0.1.0

The publish.yml workflow builds and uploads to PyPI. It uses PyPI Trusted Publishing (OIDC — no stored token); configure the publisher once on PyPI under the project's Publishing settings (owner dineshrajdhanapathyDD, repo reinvent2026-mcp, workflow publish.yml). Or set a PYPI_API_TOKEN repo secret and uncomment the password: line in the workflow.

What NOT to commit (kept out via .gitignore)

To keep the repo clean and safe, these are intentionally hidden / ignored and should never be committed:

  • Build artifacts: build/, dist/, *.egg-info/

  • Python caches: __pycache__/, *.pyc, .pytest_cache/

  • Virtual environments: .venv/, venv/

  • Editor/OS files: .DS_Store, .idea/, .vscode/

  • Secrets & local config: any .env, API tokens, PyPI/.pypirc, credentials

  • Large raw scrape dumps and temporary/probe scripts (_*.py, *_raw.json)

If you fork or publish, double-check you are not committing credentials or a .pypirc. Publish to PyPI with an API token, not a password.

License

MIT © 2026 DD

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers