cdtm-mcp

cdtm-mcp

MCP server for the CDTM Community Portal that enables searching CDTM students and alumni by tags like skills, interests, class, and location, and retrieving member profiles.

Category
Visit Server

README

cdtm-mcp

An MCP server for the CDTM Community Portal, so you can search CDTM students and alumni from Claude Code, Claude Desktop, or any other MCP client.

Instead of clicking through filter dropdowns, you just ask:

"find me CDTM people building AI agents who can help with fundraising"

and Claude figures out the right tags, queries the portal, and gives you names, headlines, and profile links.

Why I built this

Hi, I'm Hamza (Fall 2017, co-founder at ZenML). The community portal is genuinely useful — a few thousand people with skills, interests, and "can support with" tags — but I never remember to open it. I do live in Claude Code all day, so I wired the portal into it as an MCP server. Now finding "alumni in Munich who know venture capital and offer mentoring" is one sentence away, and Claude can cross-reference results with whatever else I'm working on.

If you find this useful, give it a star ⭐ — if enough people do, I'll ask the CDTM team for a proper way to integrate this into the internal app (API tokens instead of the cookie dance below).

Setup

You need Python 3.10+ and uv (or plain pip).

git clone https://github.com/htahir1/cdtm-mcp.git
cd cdtm-mcp

Getting your session cookie

The portal sits behind oauth2-proxy, and there's no public API or token system (yet — see the star pitch above). So the server authenticates with your own browser session cookie:

  1. Log in to internal.cdtm.com in your browser.
  2. Open DevTools (F12) → Network tab → reload the page.
  3. Click any request to internal.cdtm.com → Headers → find the Cookie request header.
  4. Copy the part that starts with _HOST-oauth2-proxy= (it's long).
  5. Create a .env file in the repo root:
CDTM_COOKIE='_HOST-oauth2-proxy=<paste the value here>'

The cookie expires after a while. When the tools start failing with an auth error, repeat the steps. .env is gitignored — keep it that way, this cookie is your login.

Registering with Claude Code

claude mcp add --scope user cdtm -- uv run --directory /path/to/cdtm-mcp python server.py

That's it. Open a new Claude Code session and ask it something.

For Claude Desktop, add the equivalent command to your claude_desktop_config.json.

What it can do

Tool What it does
search_members Filter by name, skills, interests, "can support with", "looking for", companies, education, class, location. Paginated.
list_tags Browse the portal's tag taxonomy (110 skills, 134 interests, ~3000 companies, ...)
get_member_profile Full profile for one person: bio, tags, contact email
refresh_taxonomy Re-fetch the tag list if it looks stale

Example prompts that work well:

  • "find CDTM people into agentic AI"
  • "who from the Fall 2017 class is in Berlin?"
  • "alumni who can support with pitch feedback and know climate tech"
  • "pull the full profile for the person I just found"

How it works

Nothing fancy. The portal is a Next.js app whose search runs through its own JSON endpoint (/api/protected/directory?skills=414&interests=62&q=...). This server:

  • pulls the tag taxonomy (names → IDs) out of the /home page payload once per session
  • resolves the human-readable tag names Claude picks into IDs
  • calls the directory endpoint and returns clean JSON
  • parses profile pages server-side for get_member_profile

No scraping of anything you couldn't see in your own browser, no data stored anywhere.

A note on being a good citizen

This reads member-provided data through your own authenticated session. It's for finding people to talk to — not for bulk-exporting the directory or spamming anyone. Don't be that person.

This is an unofficial community project and isn't affiliated with the CDTM team. If they have any concerns about it, or want to talk about a proper API, I'm happy to hear from them.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured