top10grid-mcp
v1.1.0
Published
Model Context Protocol server for Top10Grid
Maintainers
Readme
top10grid-mcp
Official Model Context Protocol server for Top10Grid. Lets Claude, ChatGPT, and any MCP-compatible AI publish curated Top 10 lists directly to Top10Grid — no copy-paste, no manual uploads.
Quick start
Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"top10grid": {
"command": "npx",
"args": ["-y", "top10grid-mcp"],
"env": {
"TOP10_API_KEY": "your_api_key_here"
}
}
}
}Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Restart Claude Desktop, then try: "Publish a Top 10 list of the best JavaScript frameworks to Top10Grid"
Get an API key
- Go to top10grid.com/settings/keys
- Create a key with the
n8n:writescope - Paste it into the config above
Available tools
| Tool | Description |
|---|---|
| publish_list | Publish a finished list immediately (visible to public) |
| save_draft | Save a list as draft for review before publishing |
| update_list | Update title, description, or items on an existing list |
| get_list | Fetch a list by ID or slug |
| search_lists | Search Top10Grid for existing lists by keyword or category |
Tool reference
publish_list
{
"title": "Top 10 JavaScript Frameworks in 2026",
"category": "technology",
"description": "The definitive ranking of JS frameworks by developer adoption and satisfaction.",
"items": [
{ "rank": 1, "name": "React", "description": "Still the most widely used UI library." },
{ "rank": 2, "name": "Vue", "description": "Beloved for its gentle learning curve." }
],
"locale": "US"
}category must be one of: travel, technology, food, entertainment, sports, gaming, music, health, lifestyle, business, education, shopping, science, nature, film, finance, fashion, events
locale is optional — omit for global lists. Supported: HK, UK, US, SG, AU, JP, IN, BR, DE, FR, ZA
save_draft
Same parameters as publish_list. Returns a draft ID you can later publish via update_list.
update_list
{
"id": "list_abc123",
"title": "Updated title",
"items": [
{ "rank": 1, "name": "React", "description": "Updated description." }
]
}All fields except id are optional — only include what you want to change.
get_list
{ "id": "list_abc123" }or by slug:
{ "slug": "top-10-javascript-frameworks-2026" }search_lists
{
"query": "javascript frameworks",
"category": "technology",
"limit": 10
}Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
| TOP10_API_KEY | Yes | — | Your Top10Grid API key (t10_...) |
| TOP10_API_URL | No | https://top10grid.com | Override for self-hosted or dev instances |
Error handling
The server returns structured errors. Common cases:
| Error | Cause | Fix |
|---|---|---|
| 401 Unauthorized | Missing or invalid API key | Check TOP10_API_KEY is set and starts with t10_ |
| 403 Forbidden | Key lacks required scope | Regenerate key with n8n:write scope at /settings/keys |
| 404 Not Found | List slug or ID does not exist | Check the slug is correct; use search_lists to find existing lists |
| 422 Unprocessable Entity | Invalid list data | Check category is valid; list must have a title and at least 3 items with rank and name |
| 429 Too Many Requests | Rate limit hit | You've hit the daily limit of 20 lists. Try again tomorrow, or wait 60 seconds for per-minute limits |
| 500 Internal Server Error | Server-side issue | Retry after 30 seconds; open an issue if it persists |
Example: 401 Unauthorized
If Claude reports "Unauthorized", your API key is missing or invalid.
Error: 401 Unauthorized — Check your API key is valid and not expired.Fix: verify TOP10_API_KEY is set in your config and starts with t10_. Generate a fresh key at top10grid.com/settings/keys.
Example: 404 Not Found
Error: 404 Not Found — The list slug 'top-10-unknown-list' doesn't exist.Fix: use search_lists to find the correct slug before calling get_list or update_list.
Example: 422 Validation Error
Error: 422 Unprocessable Entity — Check your list has a title and at least 3 items.Common causes:
- Missing
titlefield - Fewer than 3 items in the
itemsarray - Invalid
categoryvalue (must be one of the supported categories) - Missing
rankornameon an item
Example: 429 Rate Limited
Error: 429 Too Many Requests — You've hit the daily limit of 20 lists. Try again tomorrow.The free tier allows up to 20 list publish/create operations per day and 100 read requests per minute. Wait until the next day for the daily cap, or 60 seconds for per-minute limits.
Example: handling a 403
If Claude reports "Forbidden — your API key doesn't have permission", your key was created without the n8n:write scope. Go to top10grid.com/settings/keys, delete the old key, and create a new one with the correct scope.
Prompt examples
Copy these into Claude Desktop after setup:
- "Search Top10Grid for the best coffee cities and then publish an updated version with 2026 rankings."
- "Create a draft Top 10 list of the most influential AI researchers — don't publish yet."
- "Update list
top-10-programming-languages-2025: change the description and move Python to #1." - "What Top 10 technology lists already exist on Top10Grid? Find ones about AI."
Development
git clone https://github.com/dailymannablessings-commits/Top10.git
cd packages/mcp-server
npm install
npm run build
TOP10_API_KEY=your_key node dist/index.jsRun tests:
npm test