Skip to main content
Glama
vasparshin

zoho-multi-mcp

by vasparshin

zoho-multi-mcp

AI 어시스턴트(예: Claude)를 Zoho Mail 계정에 연결하는 MCP (Model Context Protocol) 서버입니다. AI 워크플로에서 직접 이메일을 읽고, 보내고, 검색하고, 답장하고, 삭제할 수 있습니다 — 그리고 사서함당 하나의 프로세스 대신 하나의 가벼운 프로세스에서 원하는 만큼의 Zoho 사서함을 실행할 수 있습니다.

이 프로젝트는 멀티 계정 지원이 추가된 FujiwaraChoki/zoho-mail-mcp의 포크입니다(MIT 라이선스, LICENSE 참조). 원래 단일 계정 서버에 대한 모든 공로는 업스트림 작성자에게 있습니다.

이 포크가 존재하는 이유

MCP를 통해 여러 Zoho 사서함을 실행한다면(팀, 프로젝트별 발신자 모음 등), 자연스러운 구성은 사서함당 하나의 서버 프로세스입니다. 그렇게도 동작하지만, 각 프로세스는 사서함이 아무리 작거나 유휴 상태여도 동일한 고정 Bun/V8 런타임 메모리 오버헤드(약 75-85MB RSS)를 부담합니다. 사서함 3개는 이 기준치의 3배를 아무 이득 없이 소비합니다. 실제 계정별 상태(OAuth 토큰, 폴더 캐시)는 아주 작기 때문입니다.

이 포크는 옵트인 방식의 멀티 계정 모드를 추가합니다. 하나의 프로세스가 여러 Zoho 계정을 제공할 수 있습니다. 호출자가 호출마다 계정을 지정하는 단일 엔드포인트로, 또는 기존 구성에 더 안전한 옵션으로 각각 고정 포트에서 수신 대기하는 여러 리스너로 동작하며, 각 리스너는 일반 단일 계정 서버와 똑같이 동작합니다. 프로덕션에서 측정한 결과: 3개의 분리된 단일 계정 프로세스가 합산 약 ~230MB RSS를 사용하던 것을, 동일한 3개 사서함을 제공하는 하나의 프로세스로 통합하여 약 ~90MB RSS로 줄였습니다. "멀티 계정 모드" 섹션 아래의 모든 내용은 업스트림에서 변경되지 않았으며, 사서함이 하나만 필요하다면 지금까지와 똑같이 작동합니다.

Related MCP server: Mailing Manager MCP

도구

도구

설명

list_folders

모든 메일 폴더 나열

list_emails

필터링 및 페이지네이션으로 폴더의 이메일 나열

read_email

특정 이메일의 전체 내용 읽기

search_emails

모든 폴더에서 키워드로 이메일 검색

send_email

새 이메일 보내기

reply_email

기존 이메일에 답장(답장 / 전체 답장)

delete_email

이메일 삭제(휴지통 또는 영구 삭제)

설정

1. Zoho API 클라이언트 만들기

  1. Zoho API Console로 이동합니다(US 데이터센터는 .com 사용)

  2. Add Client > Self Client를 클릭합니다.

  3. Client IDClient Secret을 기록해 둡니다.

2. Refresh Token 생성

대화형 설정 도우미를 실행합니다:

bun run setup.ts

또는 수동으로:

  1. Self Client에서 다음 범위로 승인 코드를 생성합니다:

    ZohoMail.accounts.READ,ZohoMail.folders.READ,ZohoMail.messages.READ,ZohoMail.messages.CREATE,ZohoMail.messages.DELETE
  2. 기간을 10분으로 설정하고 설명을 추가한 다음 Create를 클릭합니다.

  3. 생성된 코드를 복사하고 설정 스크립트를 사용하여 교환합니다.

3. 자격 증명 확인

ZOHO_CLIENT_ID=your_id ZOHO_CLIENT_SECRET=your_secret ZOHO_REFRESH_TOKEN=your_token bun run setup.ts --verify

4. MCP 클라이언트 구성

단일 계정 — Claude Code (~/.claude.json)

{
  "mcpServers": {
    "zoho-mail": {
      "command": "bun",
      "args": ["run", "/path/to/zoho-multi-mcp/src/index.ts"],
      "env": {
        "ZOHO_CLIENT_ID": "your_client_id",
        "ZOHO_CLIENT_SECRET": "your_client_secret",
        "ZOHO_REFRESH_TOKEN": "your_refresh_token",
        "ZOHO_DATACENTER": "eu"
      }
    }
  }
}

Claude Desktop의 claude_desktop_config.json도 동일한 형식입니다.

멀티 계정 모드

이 서버를 통해 실행하려는 각 Zoho 계정에 대해 위 단계를 계정마다 한 번씩 반복한 다음, 두 가지 모드 중 하나를 선택합니다.

모드 A — 단일 엔드포인트, 호출자가 계정 선택

ZOHO_ACCOUNTS_JSON을 계정의 JSON 배열로 설정하고 평소처럼 ZOHO_HTTP_PORT로 서버를 시작합니다(또는 stdio). 모든 도구에는 필수 account 필드(지정한 id들의 문자열 enum)가 추가되며, 모든 호출은 어느 계정을 위한 것인지 명시해야 합니다.

export ZOHO_ACCOUNTS_JSON='[
  {"id": "work", "clientId": "...", "clientSecret": "...", "refreshToken": "..."},
  {"id": "personal", "clientId": "...", "clientSecret": "...", "refreshToken": "..."}
]'
export ZOHO_HTTP_PORT=8010
bun run src/index.ts

MCP 클라이언트가 모든 호출에 명시적인 account 인수를 사용해도 괜찮고, 구성할 단일 URL을 원할 때 적합합니다.

모드 B — 단일 프로세스, 여러 고정 계정 리스너

ZOHO_ACCOUNTS_JSON을 위와 같이 설정하고, ZOHO_MULTI_PORT_JSON을 설정하여 각 계정을 자체 포트에 바인딩합니다. 모든 리스너는 진정한 단일 계정 서버처럼 동작합니다. 어떤 도구에도 account 필드가 없으며, 해당 포트의 일반 단일 계정 구성과 바이트 단위로 동일합니다.

export ZOHO_ACCOUNTS_JSON='[
  {"id": "work", "clientId": "...", "clientSecret": "...", "refreshToken": "..."},
  {"id": "personal", "clientId": "...", "clientSecret": "...", "refreshToken": "..."}
]'
export ZOHO_MULTI_PORT_JSON='[
  {"id": "work", "port": 8010, "name": "zoho-mail-work"},
  {"id": "personal", "port": 8011, "name": "zoho-mail-personal"}
]'
bun run src/index.ts

이 모드는 기존 다중 프로세스 구성을 마이그레이션할 때 사용합니다. MCP 클라이언트 구성을 이미 사용 중인 동일한 포트를 가리키게 하고, 이전에 실행하던 여러 프로세스 대신 이 프로세스 하나를 시작하면 다른 것은 변경할 필요가 없습니다. name은 선택 사항이며 로그 줄 레이블에만 영향을 줍니다.

두 모드 모두 필수가 아닙니다. ZOHO_ACCOUNTS_JSONZOHO_MULTI_PORT_JSON을 모두 생략하면 서버는 원래 업스트림 단일 계정 프로젝트와 똑같이 동작하며, ZOHO_CLIENT_ID/ZOHO_CLIENT_SECRET/ZOHO_REFRESH_TOKEN을 직접 읽습니다.

환경 변수

변수

필수 여부

설명

ZOHO_CLIENT_ID

단일 계정 모드 전용

Zoho API Console의 OAuth2 Client ID

ZOHO_CLIENT_SECRET

단일 계정 모드 전용

OAuth2 Client Secret

ZOHO_REFRESH_TOKEN

단일 계정 모드 전용

OAuth2 Refresh Token(설정을 통해 생성)

ZOHO_DATACENTER

아니요

Zoho 데이터센터: eu(기본값), us, in, au, jp

ZOHO_ACCOUNTS_JSON

멀티 계정 모드 전용

{id, clientId, clientSecret, refreshToken, datacenter?} 형식의 JSON 배열

ZOHO_MULTI_PORT_JSON

멀티 포트 모드 전용

{id, port, name?} 형식의 JSON 배열; 각 idZOHO_ACCOUNTS_JSON에 있어야 합니다.

ZOHO_HTTP_PORT

아니요

stdio 대신 이 포트에서 HTTP 서버로 실행

ZOHO_SERVER_NAME

아니요

stdio / 단일 포트 HTTP 모드용 로그 줄 레이블

기능

  • 자동 갱신 OAuth2 - 토큰이 자동으로 갱신되며 수동 개입이 필요 없고, 멀티 계정 모드에서는 계정별로 캐시됩니다.

  • 속도 제한 - Zoho API 한도 내에서 유지하도록 내장된 슬라이딩 윈도우 속도 제한기(30 req/min)

  • 401 시 재시도 - 인증 실패 시 토큰을 자동으로 갱신하고 재시도합니다.

  • HTML을 일반 텍스트로 변환 - 이메일 내용이 AI가 소비하기 좋은 깨끗한 일반 텍스트로 변환됩니다.

  • 멀티 계정, 낮은 메모리 - 위의 "이 포크가 존재하는 이유" 참조

요구 사항

  • Bun 런타임

  • API 액세스 권한이 있는 Zoho Mail 계정 하나 이상

라이선스

MIT (c) 2026 Sami Hindi — LICENSE 참조. 이 포크의 멀티 계정/멀티 포트 추가 기능은 동일한 라이선스로 배포됩니다.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants to email accounts via IMAP/SMTP, enabling reading, searching, sending, and organizing emails with features like smart drafts, scheduling, and attachment handling.
    265
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to read, search, send, and reply to Zoho Mail via IMAP/SMTP using an application-specific password.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Email for AI agents — send, receive as a webhook, manage domains, templates, routing.

  • Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.

  • Give an AI agent its own inbox — receive email as a webhook, send over a verified domain.

View all MCP Connectors

Latest Blog Posts

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/vasparshin/zoho-multi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server