meetup-mcp
Allows AI agents to work within a user's signed-in Meetup account to create, copy, duplicate, and manage events, including setting dates, venues, RSVP limits, hosts, online links, and moving events between groups.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@meetup-mcpCopy last week's Python Night event to every Tuesday in April at 6:30 pm."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
How to connect Meetup to Claude Code, ChatGPT and any AI agent
Yes, Claude, ChatGPT and other AI agents can work in your Meetup account. The official Meetup app in ChatGPT helps people discover events by interest, location and date. Cotlet.dev connects your own signed-in Meetup account to any AI agent, so you can ask in plain words and the AI creates and copies events for you.
What you can ask
Create a "Founders Coffee" event in my Austin Startups group for Thursday, March 12 at 8 am at Epoch Coffee, limit 25 RSVPs.
Copy last week's "Python Night" event to every Tuesday in April at 6:30 pm, same venue and description.
Duplicate our Saturday hike event, change the trail to Barton Creek and set the start to 9 am.
Create a free online workshop called "Intro to Email Marketing" on May 7 at 1 pm with a Zoom link and 3 hosts: me, Priya and Tom.
Copy the "Spring Networking Mixer" event into my Dallas group and move it to Friday, June 5 at 7 pm.
Related MCP server: meetup-mcp-server
Connect in 2 minutes
Get your API key at https://cotlet.dev/app and export it as COTLET_API_KEY.
Claude Code
claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 --header "Authorization: Bearer $COTLET_API_KEY"ChatGPT
Settings → Apps → add connector URL https://cotlet.dev/mcp/v1, then sign in with Cotlet.dev. No API key needed.
Cursor
Copy .cursor/mcp.json from this repo into your project:
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": {
"Authorization": "Bearer ${COTLET_API_KEY}"
}
}
}
}Run it locally (stdio)
This repo is a real MCP server. It speaks MCP over stdio, lists its Meetup tools without any key, and forwards every tool call to the hosted Cotlet.dev server. The hosted URL above stays the recommended way. Use this when your client only starts local servers.
{"mcpServers":{"meetup":{"command":"uvx","args":["meetup-mcp"],"env":{"COTLET_API_KEY":"your-key"}}}}Or with Docker:
docker build -t meetup-mcp .
docker run -i --rm -e COTLET_API_KEY meetup-mcpTools: meetup_guide, meetup_status, meetup_open, meetup_read, meetup_click, meetup_type, meetup_close. Without COTLET_API_KEY a tool call answers: "Set COTLET_API_KEY. Get a key at https://cotlet.dev/app".
Command line
Python 3.10+, nothing else to install. From PyPI:
pip install meetup-mcp # or run it once: uvx meetup-mcp connect
meetup-mcp connectOr straight from this repo:
export COTLET_API_KEY="your-key"
python3 meetup_agent.py connect # ready config for Claude Code, Cursor, ChatGPT
python3 meetup_agent.py status # is Meetup ready in your Cotlet.dev account
python3 meetup_agent.py guide # Meetup screens and sign-in link
python3 meetup_agent.py read # open Meetup, read the page, close the browser
python3 meetup_agent.py tools # list Cotlet.dev tools
python3 meetup_agent.py serve # start the stdio MCP server (same as no argument)Questions from Meetup users
Does Meetup have an API?
Meetup has a GraphQL API, but only members with an active Meetup Pro subscription can get access, and it stops working when Pro lapses (checked 11 Oct 2026). Even with Pro it cannot message members, copy events or manage attendees. Cotlet.dev works in your own signed-in Meetup account, so your AI agent can create and copy events with no API key and no code.
How do I connect Meetup to ChatGPT?
The official Meetup app in ChatGPT is for discovering events. To create and copy events in your own account, add Cotlet.dev as an app in ChatGPT (Settings → Apps, connector URL https://cotlet.dev/mcp/v1), sign in to Meetup once in your Cotlet.dev Cloud Browser, and ask ChatGPT in plain words. No code and no Meetup API key.
Is there a way to use Claude with Meetup?
Yes. In Claude Code run the one-line claude mcp add command above; in the Claude app add https://cotlet.dev/mcp/v1 as a custom connector. Claude then works in your own Meetup account.
Is there a Meetup MCP server?
Yes. Cotlet.dev is a hosted MCP server that works in Meetup for you, 24/7, with Claude, ChatGPT, Cursor, Codex, n8n, Make and Zapier.
Find it on
Also works with
Start free: https://cotlet.dev/signup?app=meetup&utm_source=github&utm_medium=readme&utm_campaign=meetup
Available Tools
7 toolsmeetup_clickB
Click a numbered element on the current Meetup page.
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | Element number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not say whether a click navigates, submits a form, mutates state, or fails on stale/out-of-range element numbers, nor what the agent should expect afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. Its brevity is efficient, though it edges toward under-specification given the missing post-click behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the definition should explain what a click produces (new page content, updated element list, error conditions). None of that is present, leaving an agent guessing about the result of the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already defines 'element' as an integer from the last read with a minimum of 1. The description adds no format or error-handling detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Click a numbered element on the current Meetup page'), which distinguishes it from read/type/open siblings. It is clear but does not explicitly contrast itself with meetup_type or meetup_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent must infer that this follows a meetup_read that produced numbered elements. There is no statement of when clicking is preferable to typing or opening, and no exclusions or prerequisites are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_closeA
Close the Meetup browser session when the work is done, so credits stop running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the important side effect that billing/credits stop accruing, which is genuinely useful context beyond the schema. However, it says nothing about idempotency (behavior when no session is open), whether any session state is lost, or error conditions for a teardown operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and appends the reason. No filler, no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter teardown call with no output schema, the description covers what an agent needs: what it does, when to call it, and why it matters (cost). Only the idempotency/state-after-close detail is missing, a minor gap at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a 0-param tool applies. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Close the Meetup browser session") plus the consequence ("credits stop running"). The close/open pairing with sibling meetup_open makes the distinction immediately obvious without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"When the work is done" gives a clear trigger condition for invocation. It does not name an alternative or state an exclusion (e.g. what to do if the session already closed or if a task fails mid-way), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_guideA
How to work in Meetup (create and copy events): its screens and the sign-in link. Call this first.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | What you want done in Meetup, in your words. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only informational tool and lists what the guidance covers (screens, sign-in link), but never states that it has no side effects, what form the guidance takes, or whether every task requires calling it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, with the scope front-loaded and the imperative 'call this first' placed last for emphasis. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple guidance tool with one optional string parameter and no output schema, the description is close to sufficient. The remaining gap is what the response looks like and whether guidance must be re-fetched per task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One optional parameter with 100% schema description coverage, so the schema already explains 'task'. The description adds no format, granularity, or example hints beyond that, which is the baseline for fully covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States that this returns guidance on working in Meetup, scoped to creating and copying events, covering screens and the sign-in link. That distinguishes it from the low-level action siblings (open/click/type/read), though 'guide' leaves mildly unclear whether it returns documentation or a plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this first' gives explicit sequencing guidance relative to the sibling action tools. It does not state when it is unnecessary (e.g., if the screens are already known) or name a cheaper alternative, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_openB
Open a Meetup page in your signed-in Cloud Browser (default https://www.meetup.com) to work with create and copy events.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Page to open. Default: https://www.meetup.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the browser is already signed in and scopes the target to Meetup, but says nothing about session lifecycle, whether the page persists across subsequent tool calls, what happens on an invalid or off-domain URL, or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero padding. The trailing clause about create and copy events is slightly vague and arguably not worth its words, but the sentence remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter navigation tool with no output schema, the definition is minimally sufficient. It still leaves the agent unsure whether this establishes a reusable browser session and how it relates to siblings such as meetup_close and meetup_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single url parameter is fully documented in the schema, including its default. The description repeats the default value but adds no semantics such as accepted URL forms or domain restrictions, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Open a Meetup page in your signed-in Cloud Browser." The trailing "to work with create and copy events" narrows the goal rather awkwardly, but the core action is unmistakable and distinguishable from siblings like meetup_read, meetup_click, and meetup_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you open a page in order to do create/copy event work. There is no explicit statement of when to prefer this over meetup_read or meetup_guide, no prerequisites (e.g., needing an existing browser session), and no guidance on whether opening again replaces or duplicates the page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_readB
Read the current Meetup page: its text and numbered buttons, links and fields.
| Name | Required | Description | Default |
|---|---|---|---|
| element | No | Read only inside this element. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape superficially ('numbered buttons, links and fields') but says nothing about whether reads are live or snapshot, whether element numbering is stable across reads, cost/latency, or whether a read is a prerequisite for the indexed clicking tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and target, then the returned content. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with a fully documented schema, the description covers the essentials. But with no annotations and no output schema, it should say more about the nature of the returned numbering and its interaction with the click/type siblings, which is the main thing an agent needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single optional parameter already documented as 'Read only inside this element.' The description adds no meaning beyond that — it never explains what scoping to an element does to the returned numbering or why an agent would restrict the read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('the current Meetup page') and enumerates what is captured: text, numbered buttons, links and fields. This clearly separates it from the action siblings (meetup_click, meetup_type, meetup_open, meetup_close), though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent infers it should call this to inspect page state before acting. There is no explicit when-to-use, when-not-to-use, or statement of the relationship to meetup_guide or meetup_status, which also sound like informational tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_statusA
Check that your Cotlet.dev account and Meetup are ready: account, credits and Meetup connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully enumerates the three things inspected (account, credits, Meetup connection), which tells the agent this is a non-mutating readiness probe, but it does not state what happens on failure, whether calls consume credits, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the three checked items are listed compactly. The only slight ambiguity is the unexplained term 'credits', which could use a word of context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter probe this covers what is checked, which is the core need. Without an output schema, though, the agent gets no hint about the shape of the result or what a 'not ready' outcome looks like, which would matter most for a readiness gate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description correctly implies no inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and names the resources inspected: Cotlet.dev account, credits, and Meetup connection. That distinguishes it from the action-oriented siblings (meetup_open, meetup_click, meetup_read), but it never explicitly says it is a pre-flight/status check relative to those tools, leaving the differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Phrasing like 'Check that ... are ready' implies a pre-flight verification before running the other Meetup tools, but no explicit when-to-use or when-not-to-use rule is given, and no sibling is named as the alternative for a different need. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetup_typeB
Type text into a numbered field on the current Meetup page.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type. | |
| element | Yes | Field number from the last read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only states the basic typing action. It does not say whether typing replaces or appends existing text, whether the field must be visible or focused, whether the action submits anything, or what errors or return values to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no boilerplate or repetition. It wastes no words, though its brevity contributes to gaps assessed in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter browser action tool with full schema coverage and no output schema, the description covers the basic action and page context. However, with no annotations it omits behavioral details an agent needs before invoking, such as prerequisites and side effects, so it is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'text' and 'element' are already defined, including 'Field number from the last read' and minimum 1. The description adds page context ('current Meetup page') but no additional parameter syntax, constraints, or meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (type text) and target (numbered field on the current Meetup page). It is clearly distinct from click/read/navigation siblings by verb and resource, though it does not explicitly name the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites such as needing a page opened or fields read first, and no mention of alternatives like meetup_click or meetup_read. The only usage cue is implicit in 'numbered field from the last read' appearing in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v1.1.0- First observed
meetup_click - First observed
meetup_close - First observed
meetup_guide - First observed
meetup_open - First observed
meetup_read - First observed
meetup_status - First observed
meetup_type
TDQS
Scored across 7 tools
Each tool maps to a distinct action in a browser automation loop: guide/status are pre-flight, open/close frame the session, and read/click/type are the core interaction triad. The only slight overlap is meetup_guide vs meetup_status, since both are onboarding-style checks called before doing work, but their described purposes (usage instructions vs account/connection readiness) are clear enough to separate.
All seven tools follow the exact same pattern: the meetup_ prefix plus a single lowercase verb (guide, status, open, read, click, type, close). No mixing of conventions, casing, or verb styles.
Seven tools is tightly scoped for a browser-driven Meetup automation server, and every tool earns its place: two setup helpers, open/close lifecycle, and the read/click/type interaction primitives. Nothing appears redundant or padded.
The surface covers the full session lifecycle plus the essential read→click/type loop needed to create and copy events, with guide and status covering onboarding. Minor gaps exist for a browser automation domain—no explicit scroll, navigate-to-URL, wait, or screenshot tool—which could be limiting on long pages, but agents can largely work around this via clicking links.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Run ticketed events from your AI assistant: create events, sell tickets via Stripe, check in.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThe Google Meet MCP Server enables AI agents to create, manage, and retrieve Google Meet meetings. Built on the Model Context Protocol, it exposes tools for scheduling, updating, and deleting meetings, making it easy to integrate Google Meet functionalities7 npm2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for automating Meetup event tracking with an AI agent. It equips the agent with tools to browse Meetup.com, detect new events since the last known record, and return structured event data.10 npm1MIT

Nexxupp MCP Serverofficial
AlicenseBqualityCmaintenanceEnables AI agents to store and search private memory, explore and edit workspace stations, databases, tasks, and charts, and schedule calendar events through natural language. Supports local stdio and hosted HTTP modes with per-user OAuth scoping of tools.22MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search upcoming public events and group topic categories by keyword, city, or group slug, and to retrieve full details for individual events and groups, keylessly and without touching attendee or member data.447 npmMIT