cantkeepupwithai-mcp
Click on "Install 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., "@cantkeepupwithai-mcpWhat are the top AI trends this week?"
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.
cantkeepupwithai-mcp
Prototipo de servidor MCP (Model Context Protocol) que expone los datos de cantkeepupwithai.com — trends de IA, digest diario, toolbox y stats del pipeline — a asistentes compatibles con MCP como Claude Desktop.
Es un cliente delgado: cada herramienta hace una petición HTTP al backend real
(cantkeepupwithai/backend, Express + Prisma) corriendo en local, y devuelve
la respuesta tal cual como JSON.
Herramientas expuestas
Herramienta | Descripción | Endpoint del backend |
| Lista los trends de IA rankeados por menciones (últimos 30 días), con sparkline de 7 días. Filtro opcional por |
|
| Detalle completo de un trend por |
|
| El digest diario de noticias de IA. Sin |
|
| Lista paginada de digests pasados (fecha, número de issue, cantidad de historias). |
|
| Búsqueda de texto completo sobre trends, historias del digest y el toolbox de herramientas de IA. |
|
| Stats de la última corrida del pipeline de ingesta (fuentes revisadas, posts leídos, etc). |
|
Related MCP server: toad-mcp-server
Requisitos
Node.js 20+
El backend de
cantkeepupwithaicorriendo en local (por defecto enhttp://localhost:4000), con su base de datos accesible. Vercantkeepupwithai/backend/README.mdpara levantarlo.
Instalación y build
cd cantkeepupwithai-mcp
npm install
npm run buildEsto compila src/ a dist/index.js, que es el entrypoint del servidor MCP
(transporte stdio).
Probarlo suelto (sin Claude Desktop)
Con el backend corriendo en localhost:4000, podés levantar el servidor y
hablarle por stdio con el MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsEso abre una UI en el navegador donde podés listar las herramientas y ejecutarlas contra datos reales.
Configurarlo en Claude Desktop
Editá el archivo de configuración de Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Y agregá una entrada en mcpServers (ajustá la ruta absoluta a donde clonaste
este repo):
{
"mcpServers": {
"cantkeepupwithai": {
"command": "node",
"args": [
"/Users/pablolarraz/Desktop/dev/ckuwai/cantkeepupwithai-mcp/dist/index.js"
],
"env": {
"CKUWAI_API_BASE_URL": "http://localhost:4000"
}
}
}
}Reiniciá Claude Desktop. El servidor debería aparecer con el ícono de herramientas (🔨), y podés pedirle cosas como "¿qué trends de IA están subiendo esta semana según cantkeepupwithai?" o "dame el digest de hoy de cantkeepupwithai".
Importante: el backend de cantkeepupwithai debe estar corriendo en
local (npm run dev dentro de cantkeepupwithai/backend) para que las
herramientas devuelvan datos — este servidor MCP no incluye lógica de
negocio propia, solo reenvía las peticiones.
Variables de entorno
Variable | Default | Descripción |
|
| URL base del backend contra la que se hacen las peticiones. |
| — | Solo lo usa |
Despliegue remoto (Vercel)
Además del transporte stdio para uso local, el repo incluye api/mcp.ts: el
mismo servidor MCP expuesto por Streamable HTTP (el transporte estándar
de MCP para servidores remotos), como función serverless de Vercel. Está
desplegado en:
https://cantkeepupwithai-mcp.vercel.app/api/mcpapuntando al backend de producción real (https://cantkeepupwithai-backend.vercel.app).
Cada request HTTP crea una instancia nueva y sin estado del servidor MCP
(sessionIdGenerator: undefined) — apropiado para funciones serverless, que
no garantizan que dos requests caigan en el mismo proceso.
Autenticación: el endpoint exige Authorization: Bearer <MCP_AUTH_TOKEN>
en cada request; sin el header (o con un token incorrecto) devuelve 401. El
valor real del token vive como variable de entorno en el proyecto de Vercel
(vercel env ls), no está en este repo.
Para conectar un cliente MCP remoto (ej. Claude Desktop con soporte de conectores HTTP, o cualquier cliente MCP que hable Streamable HTTP):
{
"mcpServers": {
"cantkeepupwithai-remote": {
"url": "https://cantkeepupwithai-mcp.vercel.app/api/mcp",
"headers": {
"Authorization": "Bearer <MCP_AUTH_TOKEN>"
}
}
}
}Para redesplegar cambios:
npx vercel --prodPróximos pasos para una versión remota más madura
El token compartido actual es suficiente para un prototipo de un solo usuario, pero no escala a múltiples usuarios/organizaciones — la spec de MCP recomienda OAuth 2.1 para servidores remotos multi-tenant.
No hay rate limiting propio en el servidor MCP (más allá del que ya tiene el backend real por IP) — un token filtrado podría generar tráfico excesivo contra el backend de producción.
Solo se exponen operaciones de lectura. El backend también tiene endpoints de escritura (votar/reportar herramientas del toolbox, crear herramientas desde un repo, suscribirse al newsletter) que deliberadamente no se expusieron en este prototipo — habría que decidir caso por caso si tiene sentido darle a un asistente IA la capacidad de escribir datos.
Available Tools
6 toolsget_daily_digestGet daily digestA
Fetches the daily AI news digest: a set of stories with headline, summary, why-it-matters, and sources. Omit date to get the latest published digest, or pass a date (YYYY-MM-DD) to get that day's digest.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Digest date in YYYY-MM-DD format. Omit for the latest digest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the output structure and the date-dependent behavior, and 'fetches' implies a read-only operation. It does not cover auth, errors, or rate limits, but for a simple public digest tool this is acceptable.
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 sentences, front-loaded with the primary action and output contents, followed by concise date instructions. No redundant wording.
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 tool with a single optional parameter and no output schema, the description sufficiently explains the return payload and how to target a specific digest. Missing edge cases are not critical for this simple tool.
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%; the date parameter's format and optional behavior are already fully documented in the schema. The description repeats this same information without adding new meaning.
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 identifies a specific verb ('Fetches') and resource ('daily AI news digest'), and enumerates the story fields (headline, summary, why-it-matters, sources), clearly differentiating it from sibling tools that cover trends or pipeline stats.
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?
Provides clear context on date usage (omit for latest, pass YYYY-MM-DD for a specific day), but does not explicitly mention alternatives or when not to use this tool relative to siblings such as get_trending_topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_statsGet pipeline statsA
Fetches stats from the most recent ingestion pipeline run: sources checked, posts read, stories produced, and estimated reading minutes saved.
| 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 burden. The verb 'Fetches' implies a read-only operation, and listing the specific stats (sources checked, posts read, etc.) provides clear behavioral expectations. It also notes the 'most recent run' limitation, which is useful. It omits potential empty-state or auth details, but for a simple getter this is acceptable.
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, well-structured sentence, front-loaded with the verb and resource. It wastes no words and every element adds specific value.
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?
Given the tool's simplicity (zero parameters) and lack of an output schema, the description sufficiently covers what the tool does and what data it returns. Enumerating the stat fields essentially serves as the return value documentation.
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 has zero parameters, so the baseline is 4. The description adds meaningful context about what the stats represent, which is helpful despite there being no parameter definitions to clarify.
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 clearly states a specific action ('Fetches stats') on a well-defined resource ('most recent ingestion pipeline run') and enumerates the exact data returned, which clearly distinguishes it from sibling tools focused on trends and digests.
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?
The description establishes clear context: it is for retrieving stats from the most recent ingestion pipeline run. It does not explicitly mention alternatives or when-not-to-use, but the purpose is so distinct from siblings that the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trend_detailGet trend detailA
Fetches full detail for a single AI trend by its id: summary, why it matters, full mention history, and the source references (posts/articles) behind it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The trend's id, as returned by get_trending_topics. |
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 discloses the tool is a read operation ('Fetches') and describes the response contents, but does not mention error behavior (e.g., invalid id), rate limits, or any side effects. It adds useful detail about what is returned but omits potential failure modes.
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, well-front-loaded sentence that leads with the verb and resource, then lists the detailed contents. No wasted words; every element adds value.
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 single-parameter read tool with no output schema, the description covers the return value's key facets (summary, importance, history, sources) and links to the list tool via the schema. It lacks explicit error handling or response shape, but overall it gives enough context for correct invocation and expectation setting.
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%: the only parameter 'id' is described as 'The trend's id, as returned by get_trending_topics.' The tool description merely restates 'by its id' without adding extra semantic nuance, so the schema carries the parameter meaning fully.
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 clearly states the tool fetches full detail for a single AI trend by id, and enumerates the content: summary, why it matters, mention history, and source references. This distinguishes it from sibling tools like get_trending_topics (which lists trends) by focusing on a single entity's detail.
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?
The schema parameter description explicitly notes the id is 'as returned by get_trending_topics', giving clear context that this tool is used after listing trends. It implies the alternative for fetching the list is get_trending_topics, though it does not explicitly state 'use this only when you have a specific trend id' or list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trending_topicsGet trending AI topicsA
Lists the AI trends currently tracked by cantkeepupwithai.com, ranked by mentions over the last 30 days. Each trend includes its mention count, week-over-week percent change, direction (up/down), and a 7-day sparkline.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional tag to filter trends by (e.g. a topic category). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the output fields (mention count, percent change, direction, sparkline) and the ranking timeframe, offering transparency about what the tool returns. It does not mention read-only guarantees explicitly, but 'Lists' implies a non-mutating operation, and no destructive behavior is suggested.
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 two sentences: the first states the purpose and ranking, the second lists the output fields. It is front-loaded, avoids redundancy, and contains no filler.
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 tool with a single optional parameter and no output schema, this description provides sufficient context: it specifies the source, the ranking period, and the exact fields returned. The lack of pagination details is acceptable given the simplicity, and no critical information appears missing.
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 input schema already provides a complete description for the 'tag' parameter (100% coverage), so the description adds no additional semantic value. The baseline of 3 applies, as the parameter is well-documented in 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 uses a specific verb 'Lists', identifies the resource 'AI trends tracked by cantkeepupwithai.com', and specifies ranking criteria. This clearly distinguishes it from sibling tools like get_trend_detail or get_daily_digest.
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?
While the description implies this tool is for viewing the overall trending list, it does not explicitly mention when to choose it over alternatives, nor does it provide exclusion criteria or mention get_trend_detail for deeper dives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_digest_archiveList digest archiveA
Lists past daily digests (id, issue date, issue number, story count), paginated, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-indexed. Defaults to 1. | |
| pageSize | No | Results per page (max 50). Defaults to 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It clearly states that the operation is read-only (lists), discloses pagination behavior ('paginated'), and describes the ordering ('newest first'). This goes beyond a minimal statement and gives the agent a solid understanding of what to expect, though it omits details like response envelope or potential rate limits.
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 sentence that packs in all essential information: the resource, the fields, pagination, and ordering. It is front-loaded with the verb and resource, contains no filler, and every phrase adds value.
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?
The description covers the core purpose, fields, pagination, and ordering, which is adequate for a simple list operation. However, since there is no output schema and no annotations, the description does not specify the response structure (e.g., whether results are wrapped in an object with pagination metadata), which is a notable gap for an agent that needs to parse the response.
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 input schema already describes both parameters (page and pageSize) with their defaults and bounds, so schema coverage is 100%. The description mentions 'paginated' but does not add any additional meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 the specific verb 'Lists' and names the exact resource ('past daily digests') along with the fields returned (id, issue date, issue number, story count). It also specifies pagination and ordering, clearly distinguishing this tool from siblings like get_daily_digest, which likely fetches a single digest.
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?
The description makes the primary use case clear: retrieving a paginated list of past daily digests. However, it does not explicitly mention when to prefer this tool over siblings (e.g., get_daily_digest) or provide any exclusions, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolboxSearch cantkeepupwithai.comA
Full-site search across trends, digest stories, and the AI toolbox. Returns up to 5 matches per category. Query must be at least 2 characters.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search text (minimum 2 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds valuable constraints: 'Returns up to 5 matches per category' and 'Query must be at least 2 characters.' This provides actionable behavioral expectations beyond just saying 'search.' It doesn't explicitly state read-only status, but 'search' implies non-destructive behavior, and the stated limits are useful.
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 sentences with no wasted words. The first sentence states the purpose and scope; the second adds behavioral constraints. Information is front-loaded and easily parsed.
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 search tool with one parameter and no output schema, the description covers the key aspects: scope, result limits, and input constraints. It doesn't specify the exact fields of returned matches, but given the simplicity and the clear category grouping, it is sufficient for an agent to invoke the tool. A slight gap is the lack of return value details, but overall it's complete enough.
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 input schema has 100% coverage for the single parameter 'query' with a description including the minimum length. The tool description repeats this constraint ('Query must be at least 2 characters') but doesn't add semantic meaning beyond the schema. The baseline of 3 applies since the schema already documents the parameter fully.
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 clearly states what the tool does: 'Full-site search across trends, digest stories, and the AI toolbox.' It uses a specific verb (search) and resource (full site), and differentiates itself from sibling tools that target specific content types. The mention of returning up to 5 matches per category further clarifies its scope.
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?
The description gives clear context on when to use this tool: for site-wide search across multiple content categories. It doesn't explicitly mention alternatives or exclusions, but the sibling tools are obviously for specific lookups, so the usage context is clear. No explicit 'when not to use' is provided, but the scope is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: trend lists vs. trend details, digest content vs. digest archive listing, full-site search, and pipeline stats. There is no functional overlap; even the two digest-related tools are easy to differentiate (content vs. metadata).
All tool names follow a consistent verb_noun pattern: get_ for single resources, list_ for collections, and search_ for search. Naming conventions are uniform and predictable.
With 6 tools, the set is well-scoped for the server's purpose of exposing AI trends and daily digests. Each tool covers a necessary operation without bloat.
The tool surface covers the core content lifecycle: browse trends, inspect trend details, fetch digests, list digest history, and search across content. The addition of pipeline stats is a bonus. No obvious gaps for public read-only access.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server for Contextium — pipe team SOPs, coding standards, agents, skills, and workflows directly into Claude, Cursor, and other AI coding assistants.67MIT
- FlicenseNot gradedqualityDmaintenanceMCP server exposing portfolio AI tools including semantic search, evaluation framework, and prompt management, enabling natural language interaction with these services via Claude Desktop.
- AlicenseAqualityCmaintenanceAn MCP server that exposes certifications, projects, and an AI engineering learning roadmap as callable tools for MCP clients like Claude Desktop.41MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that aggregates AI news, academic papers from ArXiv, and trending GitHub repositories from multiple sources, enabling users to fetch, search, and filter recent AI content via natural language.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/santapau10/cantkeepupwithai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server