MCP server de FirstReply
Commit 13 nov 2026Permite que un asistente de IA gestione operaciones de atención al cliente, navegue por conversaciones, busque en bases de conocimientos y programe publicaciones en redes sociales.
También conocido como FirstReply/firstreply-mcp
- Stars
- 1
- Herramientas
- 84
- Descargas, 30 días
- —
- Última versión
- —
- Último commit
- 13 nov 2026
- Licencia
- MIT
¿Qué es FirstReply MCP?
FirstReply es un MCP server. Permite que un asistente de IA gestione operaciones de atención al cliente, navegue por conversaciones, busque en bases de conocimientos y programe publicaciones en redes sociales. Expone 84 herramientas, como organization_list, organization_get, organization_update.
Resumen generado a partir del README del proyecto
Acerca del MCP server de FirstReply
firstreply-mcp permite gestionar la atención al cliente y la presencia en redes sociales desde un asistente de IA. Este MCP server conecta clientes de IA con la plataforma FirstReply, lo que permite a los usuarios manejar comunicaciones multicanal, incluyendo WhatsApp, Instagram, X y correo electrónico. Proporciona herramientas para navegar por conversaciones, buscar en bases de conocimientos, gestionar contactos y encargarse de la programación en redes sociales.
Los desarrolladores pueden usar este servidor a través de stdio o HTTP para otorgar autonomía a un asistente sobre las operaciones de soporte. El asistente puede redactar y traducir respuestas, actualizar entradas en la base de conocimientos y programar publicaciones en redes sociales para diversas plataformas. También permite realizar tareas administrativas como gestionar miembros de la organización, claves de API y visualizar estadísticas de los canales. Todas las acciones están delimitadas y se verifican los permisos a través de la API REST de FirstReply, asegurando que las acciones destructivas, como eliminar conversaciones o miembros, se manejen con la supervisión adecuada.
Qué puedes hacer con él
- 1Gestionar contenido de redes socialesPuedes instruir a una IA para que escriba, prepare y programe publicaciones en redes sociales para plataformas específicas.
- 2Mantener una base de conocimientos de soporteUn asistente puede buscar en la documentación existente o añadir nuevas entradas de preguntas y respuestas a la base de conocimientos.
- 3Monitorear el rendimiento del soporteUn desarrollador puede solicitar estadísticas sobre el rendimiento de los canales o métricas de las conversaciones.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Herramientas de FirstReply MCP 84
Detectado desde el READMEorganization_listorganization_getorganization_updateorganization_usagemember_listmember_getmember_createmember_updatemember_deleteapi_key_listapi_key_createapi_key_delete
| organization_list | — | |
| organization_get | — | |
| organization_update | — | |
| organization_usage | — | |
| member_list | — | |
| member_get | — | |
| member_create | — | |
| member_update | — | |
| member_delete | — | |
| api_key_list | — | |
| api_key_create | — | |
| api_key_delete | — |
Mostrar las 84 herramientasMostrar menos herramientas
channel_listchannel_getchannel_statisticschannel_refreshchannel_testchannel_createchannel_connectchannel_updatechannel_playstore_service_accountchannel_tiktok_creator_infoconversation_listconversation_getconversation_threadconversation_messagesconversation_replyconversation_closeconversation_readconversation_spamconversation_updateconversation_deleteconversation_statsconversation_stats_by_memberconversation_metricsconversation_totalsmessage_getmessage_updatemessage_sendmessage_deleteattachment_uploadcontact_listcontact_getcontact_createcontact_updatecontact_deletecontact_field_listpost_listpost_getpost_statisticspost_metricspost_commentspost_writepost_media_uploadpost_createpost_schedulepost_reschedulepost_analyticsclassification_listclassification_getclassification_createclassification_updateclassification_deleteclassification_impactclassification_statisticsknowledge_searchknowledge_getknowledge_createknowledge_updateknowledge_deleteknowledge_source_listknowledge_source_getknowledge_source_createknowledge_source_updateknowledge_source_deleteknowledge_source_syncknowledge_source_statusai_draft_replyai_promptai_translateai_testsearchwebhook_testwebhook_rotate_secret
| channel_list | — | |
| channel_get | — | |
| channel_statistics | — | |
| channel_refresh | — | |
| channel_test | — | |
| channel_create | — | |
| channel_connect | — | |
| channel_update | — | |
| channel_playstore_service_account | — | |
| channel_tiktok_creator_info | — | |
| conversation_list | — | |
| conversation_get | — | |
| conversation_thread | — | |
| conversation_messages | — | |
| conversation_reply | — | |
| conversation_close | — | |
| conversation_read | — | |
| conversation_spam | — | |
| conversation_update | — | |
| conversation_delete | — | |
| conversation_stats | — | |
| conversation_stats_by_member | — | |
| conversation_metrics | — | |
| conversation_totals | — | |
| message_get | — | |
| message_update | — | |
| message_send | — | |
| message_delete | — | |
| attachment_upload | — | |
| contact_list | — | |
| contact_get | — | |
| contact_create | — | |
| contact_update | — | |
| contact_delete | — | |
| contact_field_list | — | |
| post_list | — | |
| post_get | — | |
| post_statistics | — | |
| post_metrics | — | |
| post_comments | — | |
| post_write | — | |
| post_media_upload | — | |
| post_create | — | |
| post_schedule | — | |
| post_reschedule | — | |
| post_analytics | — | |
| classification_list | — | |
| classification_get | — | |
| classification_create | — | |
| classification_update | — | |
| classification_delete | — | |
| classification_impact | — | |
| classification_statistics | — | |
| knowledge_search | — | |
| knowledge_get | — | |
| knowledge_create | — | |
| knowledge_update | — | |
| knowledge_delete | — | |
| knowledge_source_list | — | |
| knowledge_source_get | — | |
| knowledge_source_create | — | |
| knowledge_source_update | — | |
| knowledge_source_delete | — | |
| knowledge_source_sync | — | |
| knowledge_source_status | — | |
| ai_draft_reply | — | |
| ai_prompt | — | |
| ai_translate | — | |
| ai_test | — | |
| search | — | |
| webhook_test | — | |
| webhook_rotate_secret | — |
Configuración
FIRSTREPLY_API_TOKEN
| Nombre | Descripción | Tipo |
|---|---|---|
| FIRSTREPLY_API_TOKEN | — |
Verificaciones automáticas
Ejecutado 14 nov 2026Informe completo →Aún no verificado. Un servidor necesita una puntuación de 80, ningún hallazgo grave y suficientes datos para que podamos revisarlo. Cómo funcionan las verificaciones · Qué corregir para obtener más puntos
- Repositorio de origen vinculado y accesiblefirstreply/firstreply-mcp is public and reachablegithub.com/firstreply/firstreply-mcp ↗Aprobado
- El paquete indica este repositorio como su origenNo verificado
- Procedencia de la compilación (atestación de Sigstore)No verificado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-11-13github.com/firstreply/firstreply-mcp ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo verificado
- No hay avisos críticos en el paquete ni en sus dependenciasNo verificado
- Sin instrucciones ocultas para el modelo84 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo tool named like delete, drop or execAprobado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en GitHubFirstReply MCP Server
MCP (Model Context Protocol) server that exposes FirstReply customer support operations as tools for AI assistants like Claude. It lets an assistant browse and answer customer conversations, look up contacts, search and maintain the knowledge base, draft and translate replies, draft and schedule social media posts, manage classifications, templates, prompts, webhooks and saved filters, pull support and publishing statistics and manage organization API keys, all scoped and permission-checked by the FirstReply REST API.
The server speaks MCP protocol 2026-07-28 and the earlier 2025-* revisions
over stdio and HTTP, built on the v2 MCP TypeScript SDK.
Tools
Tools are named resource_action. Every organization-scoped tool takes an
organizationId (see organization_list). Tools that send something to a
customer or delete data are annotated as destructive.
Organization, members & API keys
| Tool | Description |
|---|---|
organization_list |
List accessible organizations |
organization_get |
Get an organization with its settings and AI prompts |
organization_update |
Update name, language, auto-close and the custom AI prompts |
organization_usage |
Plan, trial state and channel / member counts against the limits |
member_list |
List organization members |
member_get |
Get one member |
member_create |
Add a member by email with a permission level |
member_update |
Change a member's permission level |
member_delete |
Remove a member (destructive) |
api_key_list |
List the organization's named API keys (metadata only) |
api_key_create |
Create a named API key; plaintext returned once |
api_key_delete |
Delete (revoke) an API key (destructive) |
Channels
| Tool | Description |
|---|---|
channel_list |
List the channels (email, website chat, WhatsApp, Facebook Page, Instagram, LinkedIn, Threads, X, TikTok, YouTube, Google Business Profile, Bluesky, Mastodon, Telegram, Google Play, App Store) and whether Publishing is on |
channel_get |
Get one channel |
channel_statistics |
Statistics per channel |
channel_refresh |
Fetch new messages from a channel now |
channel_test |
Test the connection of a channel to its platform |
channel_create |
Create a channel from settings or credentials: email, website chat, Bluesky, Telegram, App Store, Google Play |
channel_connect |
Start connecting (or reconnecting) an account that signs in on the platform; returns the login link |
channel_update |
Rename, pause, turn Publishing and comment handling on or off, change settings or credentials |
channel_playstore_service_account |
The organization's Google service account to invite in the Play Console |
channel_tiktok_creator_info |
What a TikTok channel may post right now (privacy levels, interactions, video length) |
Facebook Pages, Instagram, LinkedIn, WhatsApp, Threads, X, TikTok, YouTube,
Google Business Profile and Mastodon are connected by signing in on the
platform. channel_connect returns the login link; the user opens it in a
browser where they are signed in to FirstReply (as the organization's owner,
which an API key acts as) and finishes there. The link is valid for 10
minutes. There is no tool to delete a channel.
Conversations & messages
| Tool | Description |
|---|---|
conversation_list |
List / filter / search conversations (status, channel, member, contact, classification, language, spam, priority, date ranges, search operators) |
conversation_get |
Get one conversation |
conversation_thread |
Get a conversation with all of its messages |
conversation_messages |
List the messages of a conversation |
conversation_reply |
Send a reply to the customer, or store an internal note or a draft, with attachments (destructive) |
conversation_close |
Close a conversation |
conversation_read |
Mark a conversation as read |
conversation_spam |
Mark a conversation as spam or not spam |
conversation_update |
Assign, reprioritize, reclassify, rename, change language, contact or spam flag |
conversation_delete |
Delete a conversation (destructive) |
conversation_stats |
Conversation statistics for a date range |
conversation_stats_by_member |
Statistics per member for a date range |
conversation_metrics |
Response and resolution metrics for a date range |
conversation_totals |
Current open / unread totals |
message_get |
Get one message |
message_update |
Edit a draft or internal note |
message_send |
Send a draft (destructive) |
message_delete |
Delete a message (destructive) |
attachment_upload |
Upload a file from a public https address; returns the attachment for conversation_reply |
The search argument of conversation_list, search and the saved filters
understands the FirstReply search syntax: words are AND-ed and prefix matched,
"quoted phrases", -word, and the operators from:, subject:, is:
(open, closed, unread, read, assigned, unassigned, ai), has:
(attachment, draft), before: and after: (YYYY-MM-DD).
attachment_upload takes images (JPEG, PNG, GIF, WebP), PDF, plain text, CSV,
Word and Excel files of up to 50 MB. Like post_media_upload it only fetches
public https addresses, and the file is streamed to the API, not kept.
Contacts
| Tool | Description |
|---|---|
contact_list |
List / search contacts |
contact_get |
Get one contact with custom fields |
contact_create |
Create a contact |
contact_update |
Update a contact |
contact_delete |
Delete a contact (destructive) |
contact_field_list |
List the custom contact fields |
Social posts
| Tool | Description |
|---|---|
post_list |
List / filter posts (status, channel, period, text); order: asc for upcoming posts |
post_get |
Get a post with its channels, publish state and latest metrics |
post_statistics |
How many posts are drafts, waiting for approval, scheduled, published and failed, and when the next one goes out |
post_metrics |
Metric snapshots of every channel of a published post |
post_comments |
The comment threads on a post, as conversations |
post_write |
Write, shorten or rewrite a post text with AI, for a platform and a character limit; saves nothing |
post_media_upload |
Upload an image or video from a public https address; returns the media id for a post |
post_create |
Save a post as a draft, with media and per-channel text and settings |
post_schedule |
Schedule a new post or an existing draft for a time on the given channels |
post_reschedule |
Move a post to another time; text, channels and media stay |
post_analytics |
Totals, daily series, top posts and channels for a period |
Posts target channels with Publishing on (publishingEnabled in channel_list),
given as channelIds or as targets with a text of their own and the
platform's settings (YouTube title and made-for-kids choice, TikTok privacy
level, Instagram post type, X thread parts, ...).
There is no tool to publish right away, approve, retry or delete a post: a
public post cannot be taken back, so the assistant drafts or schedules and a
person can still change it. Scheduled times have to be at least 10 minutes
ahead. When the organization requires approval, a member's scheduled post
waits for a manager (status PENDING_APPROVAL); such a post is not
rescheduled with manager rights (an API key acts as the owner), since saving
it would approve it. Comments are only read: hiding, deleting or liking a
comment and answering it privately act publicly on the platform and stay in
FirstReply.
Classifications
| Tool | Description |
|---|---|
classification_list |
List classifications with their automation settings |
classification_get |
Get one classification |
classification_create |
Create a classification |
classification_update |
Update a classification (unchanged settings are kept) |
classification_delete |
Delete a classification, optionally moving its conversations (destructive) |
classification_impact |
Preview what deleting a classification affects |
classification_statistics |
Conversation counts per classification |
Knowledge base
| Tool | Description |
|---|---|
knowledge_search |
Search or browse knowledge entries |
knowledge_get |
Get one knowledge entry |
knowledge_create |
Add a question / answer entry |
knowledge_update |
Update a knowledge entry |
knowledge_delete |
Delete a knowledge entry (destructive) |
knowledge_source_list |
List synced knowledge sources with their sync state |
knowledge_source_get |
Get one knowledge source |
knowledge_source_create |
Add a website or helpdesk (Freshdesk) source |
knowledge_source_update |
Rename a source, change its settings or its sync |
knowledge_source_delete |
Delete a knowledge source (destructive) |
knowledge_source_sync |
Start a sync now |
knowledge_source_status |
Sync status of a source |
Knowledge source configurations hold credentials and are never returned.
knowledge_source_update puts the settings it is given on top of the stored
ones. GitHub, Notion, GitBook, ClickUp and monday.com sources are connected
by signing in and are added in FirstReply; their settings can be changed here.
AI & search
| Tool | Description |
|---|---|
ai_draft_reply |
Generate an AI reply draft for a conversation without sending it |
ai_prompt |
Run a free-form prompt with the organization's persona and knowledge |
ai_translate |
Translate a text, e.g. a reply into the customer's language |
ai_test |
Simulate an incoming message: classification, spam verdict and reply |
search |
Global search across conversations, contacts, knowledge and messages |
Templates, prompts, webhooks & filters
| Tool | Description |
|---|---|
template_list / template_get / template_create / template_update / template_delete |
Reply templates and their language variants |
prompt_list / prompt_get / prompt_create / prompt_update / prompt_delete |
Saved AI prompts |
webhook_list / webhook_get / webhook_create / webhook_update / webhook_delete |
Webhooks and their events (including post.create, post.update, post.delete) |
webhook_test |
Send a test event to a webhook |
webhook_rotate_secret |
Generate a new signing secret (returned once) |
filter_list / filter_get / filter_create / filter_update / filter_delete |
Saved conversation filters |
Not covered, by design: authentication and profile endpoints, channel creation and OAuth connections, knowledge source creation, billing, attachments and CSV import / export, publishing posts right away, approving posts, media uploads, comment moderation and private replies to comments. Those stay in the FirstReply web app.
Widgets
Hosts that support MCP Apps (Claude, ChatGPT) show some results as a small view next to the answer:
| Widget | Tools | What it shows |
|---|---|---|
ConversationList |
conversation_list |
Contact, subject, last message, status and classification per conversation |
ReplyDraft |
ai_draft_reply |
The draft in a text field, with Send reply, Save as draft and Copy |
PostCard |
post_get, post_create, post_schedule, post_reschedule |
The post, its time and the status per channel |
PostAnalytics |
post_analytics |
Totals, views per day and numbers per channel |
ResultCard |
conversation_reply, conversation_close, channel_connect, channel_create, channel_update |
A confirmation, or the sign-in link of a channel |
Send reply in ReplyDraft calls conversation_reply with the text on screen;
a host that does not let widgets call tools only offers Copy. Widgets are in
English and German, following the host's language. Other hosts ignore them and
get the same JSON text as before.
Requirements
- Node.js >= 20
- A FirstReply account, or an organization API key
Authentication
The hosted server accepts two kinds of bearer token:
- Sign-in (OAuth 2.1): hosts such as Claude and ChatGPT only need the
address
https://mcp.firstreply.ai/. They register themselves, send the user to FirstReply to allow the connection, and act with that user's permissions in all of their organizations. - Organization API key: as described below; the only option for the local (stdio) server.
With an API key, the server authenticates against the FirstReply REST API with an
organization API key (fr_...), created in FirstReply under
Organization → Development → API Keys. Organizations support multiple named
keys with optional expiry, so it is best to create a dedicated key for this
MCP server. The key is sent as Authorization: Bearer.
API key requests run with the permissions of the organization owner: treat the key as a secret and rotate it by creating a new key and deleting the old one.
A key only reaches its own organization: organization_list returns just
that organization, and requests for any other organization are refused with
403. To work across several organizations, configure one server per key.
Usage (stdio, e.g. Claude Desktop)
{
"mcpServers": {
"firstreply": {
"command": "npx",
"args": ["-y", "@firstreply/mcp"],
"env": {
"FIRSTREPLY_API_TOKEN": "fr_..."
}
}
}
}
Claude Code
claude mcp add firstreply --env FIRSTREPLY_API_TOKEN=fr_... -- npx -y @firstreply/mcp
Usage (hosted)
The server runs at https://mcp.firstreply.ai/ (streamable HTTP). Send the
organization API key as bearer token:
claude mcp add --transport http firstreply https://mcp.firstreply.ai/ \
--header "Authorization: Bearer fr_..."
Usage (HTTP)
npm run build && npm run start:http # listens on :8080
Stateless: every request gets its own server instance, 2026-07-28 requests
are answered directly and 2025-era clients over a stateless streamable-HTTP
transport. Every request must carry Authorization: Bearer with an API key or access token. A
/health endpoint is provided for probes.
Without a token the answer is 401 with a WWW-Authenticate header naming
/.well-known/oauth-protected-resource, where the sign-in of an MCP host
starts; MCP_SERVER_URL is the address the server names itself with there.
A browser that opens the endpoint (GET / with Accept: text/html) gets the
landing page from public/.
Environment variables
| Variable | Description |
|---|---|
FIRSTREPLY_API_TOKEN |
Organization API key (stdio mode) |
FIRSTREPLY_API_URL |
API base URL (default https://api.firstreply.ai) |
MCP_SERVER_URL |
Public address of the HTTP server, its OAuth resource identifier (default https://mcp.firstreply.ai) |
PORT |
HTTP port (HTTP mode, default 8080) |
MCP_ENDPOINT_PATH |
HTTP endpoint path (default /) |
Development
npm install
npm run typecheck
npm test # builds and runs node:test suites
npm run build # compiles TypeScript to dist/
Project structure
src/
├── index.ts # stdio entry point
├── http-server.ts # HTTP entry point (Express + createMcpHandler)
├── server.ts # MCP server factory (McpServer + registerTool)
├── tools.ts # loads the tool modules, exposes the registry
├── tools/registry.ts # add() builder, schema helpers, dispatch
├── tools/<resource>.ts # one module per resource (conversations, contacts, ...)
├── media.ts # fetches a public file and streams it to a signed upload URL
└── client.ts # minimal FirstReply REST client
test/
├── tools.test.ts # tool definition checks and handler tests against a fake client
└── protocol.test.ts # stdio and HTTP end to end, both protocol eras, against an API stub
Adding a tool: call add(name, description, zodShape, annotations, handler)
in the matching src/tools/<resource>.ts. The zod shape is validated by the
SDK and published to clients as JSON Schema; every argument needs a
description (the tests check).
Preguntas sobre FirstReply MCP
¿Qué herramientas proporciona FirstReply MCP?
Expone 84 herramientas, incluidas organization_list, organization_get, organization_update, organization_usage, member_list.
¿Qué puede hacer el asistente de IA con FirstReply?
El asistente puede navegar y responder conversaciones de clientes, buscar contactos, buscar y mantener la base de conocimientos, redactar y traducir respuestas, y gestionar publicaciones en redes sociales.
¿Cómo se conectan los canales de redes sociales como Facebook e Instagram?
Estos canales se conectan iniciando sesión en la plataforma a través de un enlace de acceso proporcionado por la herramienta channel_connect.
¿Puede el asistente de IA publicar posts en redes sociales de inmediato?
No, el asistente solo puede redactar o programar publicaciones; una persona debe cambiarlas o aprobarlas, ya que no existe una herramienta para publicar directamente.
¿Qué tipos de archivos se pueden subir como archivos adjuntos?
Puedes subir imágenes (JPEG, PNG, GIF, WebP), PDF, texto plano, CSV, Word y archivos de Excel de hasta 50 MB.