mailplug-jandi-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., "@mailplug-jandi-mcpSend a JANDI message about my recent emails"
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.
Mailplug JANDI MCP
Mailplug 메일 워크플로우와 JANDI 알림을 연결하기 위한 TypeScript MCP scaffold입니다. 현재 구현은 stdio MCP server와 Streamable HTTP backend를 함께 제공합니다. 실제 Mailplug POP3/SMTP 연동과 JANDI 인증 정보는 나중에 로컬 또는 서버 .env에서 설정하도록 의도적으로 비워 두었습니다.
현재 범위
@modelcontextprotocol/sdk@1.29.0기반 MCP stdio server.Apache reverse proxy 뒤에서 사용할 Streamable HTTP backend (
/mcp,/health).MVP에서 사용할 tool 이름:
mailplug_list_recentjandi_build_messagejandi_send_message
JANDI Incoming Webhook payload builder와 sender.
Mailplug 인증 정보와 POP3 동작 방식이 확정되기 전까지 빈 목록을 반환하는 placeholder recent-message tool.
mcp.nimbustech.co.kr용 Apache vhost 예시. 원격 적용은 별도 승인 후 진행합니다.
Related MCP server: MCP Webhook Server
설정
npm install
cp .env.example .env
npm run check
npm run build.env, 실제 webhook URL, Mailplug app password, token, certificate path, secret은 commit하지 마세요.
환경 변수
Variable | Purpose |
| 향후 POP3/SMTP 연동에 사용할 Mailplug mailbox address. |
| 향후 POP3/SMTP 연동에 사용할 Mailplug app password. |
| 기본값은 |
| 기본값은 |
| 기본값은 |
| 기본값은 |
| JANDI Incoming Webhook URL. 로컬 |
| Public URL, |
| Streamable HTTP backend port, 현재 |
개발 명령어
npm run dev # 로컬 stdio MCP server 실행
npm run dev:http # 로컬 Streamable HTTP backend 실행
npm test # unit test 실행
npm run typecheck # TypeScript 검사만 실행
npm run build # dist/ 출력
npm run check # typecheck + tests배포 문서
이 repo가 재현 가능한 배포 절차와 운영 문서의 source of truth입니다. 서버에는 live runtime file, secret, 그리고 배포 commit, enabled service, certificate 상태, 승인된 host-specific deviation 같은 non-secret live-state note만 둡니다.
docs/deployment.md는 target server shape, 필요한 operator input, preflight check, HTTP/vhost 절차를 문서화합니다.docs/runbook.md는 운영 점검, troubleshooting command, DNS check, secret handling, rollback을 문서화합니다.docs/auth-credential-plan.md는 public/mcpHTTPS 노출 전 필요한 multi-user auth, per-user credential routing, secret storage 요구사항을 문서화합니다.docs/mcp-tooling-notes.md는 MCP SDK,registerTool, Zod schema, agent-facing tool metadata 작성 원칙을 문서화합니다.deploy/apache/에는 Apache 예시가 있습니다.deploy/systemd/에는 systemd 예시가 있습니다.
mcp.nimbustech.co.kr의 DNS target은 49.247.207.165입니다. 변경 직후 resolver별 propagation/cache 지연이 있을 수 있습니다. DNS, certificate 발급, systemd 설치, Apache reload, 배포 타이밍이 명시적으로 승인되기 전까지 live server config를 적용하지 마세요. Public /mcp HTTPS 노출은 docs/auth-credential-plan.md의 auth와 per-user credential routing 요구사항이 구현될 때까지 차단합니다. nimbus에 live-state note가 필요하면 /opt/mailplug-jandi-mcp/DEPLOYMENT_STATE.md에 server-local로 두고 모든 secret은 제외합니다.
Available Tools
3 toolsjandi_build_messageBuild JANDI webhook payloadB
Build a JANDI Incoming Webhook payload without sending it.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| color | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It only states the core action (build payload, no sending) but does not mention side effects, idempotency, permissions, or rate limits. This leaves significant gaps.
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, effective sentence that front-loads the action. No unnecessary words.
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 no output schema and no annotations, the description should provide a more complete picture. It fails to indicate what the tool returns or any prerequisites. The tool is simple but the description is overly minimal.
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 0%, and the description adds no additional information about the parameters beyond their names. An agent has no guidance on expected formats, constraints, or how to use 'color' and 'fields'.
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's purpose: building a JANDI Incoming Webhook payload without sending it. It distinguishes itself from the sibling 'jandi_send_message' which presumably sends the payload.
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 phrase 'without sending it' implicitly guides when to use this tool versus the sibling 'jandi_send_message'. However, it does not elaborate on other usage contexts or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jandi_send_messageSend JANDI webhook messageC
Send a message to the configured JANDI Incoming Webhook URL.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| color | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details such as side effects, idempotency, or permissions. With no annotations provided, the description carries full responsibility but only states the basic function without disclosing important traits like whether the message is sent immediately or queued.
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 short sentence, which is concise but at the cost of completeness. It does not waste words, but it also fails to provide essential information about parameters or 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?
Given the complexity of three parameters (including nested objects) and no output schema or annotations, the description is too brief to be complete. It omits return values, error conditions, and parameter purpose, leaving significant gaps for the agent.
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 description does not explain any of the three parameters (body, color, fields), despite 0% schema description coverage. The agent receives no help understanding what 'color' or 'fields' mean in context, relying solely on the schema structure.
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 action ('Send') and the target resource ('message to the configured JANDI Incoming Webhook URL'), distinguishing it from the sibling tool jandi_build_message, which likely constructs messages. The purpose is unambiguous.
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 provides no guidance on when to use this tool versus its siblings or alternatives. It does not mention prerequisites, exclusions, or typical use cases, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mailplug_list_recentList recent Mailplug messagesC
Placeholder tool for future POP3-based Mailplug ingestion.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only says it's a placeholder for future POP3-based ingestion. It does not disclose what currently happens (e.g., returns an error, empty list), leaving behavior completely opaque.
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, front-loaded with the placeholder status. It is efficient but could be slightly more informative about the intended future 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?
For a placeholder tool with no parameters or output schema, the description is adequate in stating its placeholder nature. However, it lacks completeness for an agent to understand what to expect if invoked now.
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?
No parameters exist, and schema coverage is vacuously 100%. The description adds no parameter info, which is acceptable as there are none. Baseline of 4 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 states 'List recent Mailplug messages' but then says it's a placeholder for future ingestion, creating ambiguity about current functionality. It is adequate but not fully clear due to the placeholder caveat.
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?
No guidance on when to use this tool versus alternatives. Sibling tools are for a different platform (Jandi), but no context is given for when to invoke this placeholder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The three tools cover distinct functions: building a JANDI message payload, sending that payload, and a placeholder for Mailplug email ingestion. The first two are complementary and clearly separated; the third is a different domain, though not yet implemented.
Tool names are inconsistent: the first two use 'jandi_' prefix with verb_noun pattern, while the third uses 'mailplug_' with a different verb_noun style. This mixing of conventions and prefixes makes the set feel disjointed.
With only 3 tools, the server is relatively thin but not unreasonably so given its dual purpose. However, the Mailplug part is represented by a single placeholder tool, making the count feel incomplete.
The JANDI messaging tools cover the core workflow of building and sending a message, but the Mailplug email ingestion is only a placeholder, leaving a significant gap in functionality for that domain.
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 for Appcircle mobile CI/CD platform.
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for Nylas — read email, calendars, events and contacts, and send email or create events.
Related MCP Servers
- FlicenseCqualityDmaintenanceAn MCP server that enables sending Markdown-formatted notifications to Microsoft Teams channels through a simple tool interface.12
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables sending data to webhooks via HTTP POST for both local and remote team environments. It provides a tool for relaying task descriptions, custom metadata, and automated notifications to external services.4
- FlicenseBqualityDmaintenanceAn MCP server that enables users to interact with their Naver Mail account via the Model Context Protocol. It allows for seamless mail integration and management within MCP-compatible clients like Claude Desktop.16

lingtai-whatsappofficial
AlicenseNot gradedqualityFmaintenanceMCP server for interacting with the official Meta WhatsApp Business Platform/Cloud API, enabling sending messages, managing contacts, templates, and handling webhook callbacks.Apache 2.0
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/nimbuswsj/mailplug-jandi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server