deepaktammali/lists-poke-mcp-server
If you are the rightful owner of lists-poke-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server designed for comprehensive list management, ideal for shopping, todo, and project lists.
Poke Lists MCP Server
A simple list management server that works with Poke. Create shopping lists, todo lists, or any other kind of list you need.
Features
- User-specific lists - Each user has their own isolated list storage
- Complete CRUD operations - Create, read, update, and delete lists and items
- Item management - Add items with quantity, notes, and completion status
- Search functionality - Search across all lists or within specific lists
- Rich item data - Track text, quantity, notes, completion status, and unique IDs
API Functions
List Management
create_list(name, description)- Create a new listget_lists()- Get all lists with summariesdelete_list(list_name)- Delete an entire list
Item Management
add_item_to_list(list_name, item, quantity, notes)- Add item to listget_list_items(list_name)- Get all items from a specific listremove_item_from_list(list_name, item_id)- Remove item by IDtoggle_item_completion(list_name, item_id)- Mark item complete/incomplete
Search & Discovery
search_items(query, list_name)- Search items across lists
User Authentication
The server uses the x-user-id header to isolate data between users. Each user's lists are completely separate and secure.
Example Header:
x-user-id: user123
If no x-user-id header is provided, the server defaults to "anonymous" user.
Poke Integration
Adding to Poke
- Deploy this MCP server to your hosting platform
- Go to https://poke.com/settings/connections/integrations/new
- Add your server URL
- Configure the
x-user-idheader in your Poke automation settings
Example Poke Automation
// Create a shopping list automation
await mcp.create_list("Weekly Shopping", "My weekly grocery list");
// Add items via email trigger
await mcp.add_item_to_list("Weekly Shopping", "Milk", 2, "Organic if available");
await mcp.add_item_to_list("Weekly Shopping", "Bread", 1, "Whole grain");
// Check off completed items
await mcp.toggle_item_completion("Weekly Shopping", 1);
Local Development
Setup
Fork the repo, then run:
git clone <your-repo-url>
cd mcp-server-template
conda create -n mcp-server python=3.13
conda activate mcp-server
pip install -r requirements.txt
Test
python src/server.py
# then in another terminal run:
npx @modelcontextprotocol/inspector
Open http://localhost:3000 and connect to http://localhost:8000/mcp using "Streamable HTTP" transport (NOTE THE /mcp!).
Deployment
Option 1: One-Click Deploy
Click the "Deploy to Render" button above.
Option 2: Manual Deployment
- Fork this repository
- Connect your GitHub account to Render
- Create a new Web Service on Render
- Connect your forked repository
- Render will automatically detect the
render.yamlconfiguration
Your server will be available at https://your-service-name.onrender.com/mcp (NOTE THE /mcp!)
Poke Setup
You can connect your MCP server to Poke at (poke.com/settings/connections)[poke.com/settings/connections].
To test the connection explitly, ask poke somethink like Tell the subagent to use the "{connection name}" integration's "{tool name}" tool.
If you run into persistent issues of poke not calling the right MCP (e.g. after you've renamed the connection) you may send clearhistory to poke to delete all message history and start fresh.
We're working hard on improving the integration use of Poke :)
Production Deployment Checklist
Essential
- Replace in-memory storage with persistent database
- Add proper user authentication
- Set up HTTPS/TLS encryption
- Add input validation and sanitization
Nice to Have
- Add automated backups
- Implement pagination for large lists
Customization
Add more tools by decorating functions with @mcp.tool:
@mcp.tool
def calculate(x: float, y: float, operation: str) -> float:
"""Perform basic arithmetic operations."""
if operation == "add":
return x + y
elif operation == "multiply":
return x * y
# ...