Skip to main content
Glama
abdulwaqas17

Cross-Claude MCP

by abdulwaqas17

크로스-클로드 MCP

AI 어시스턴트들이 서로 대화할 수 있게 해주는 메시지 버스입니다. Claude, ChatGPT, Gemini, Perplexity 및 MCP 또는 REST API를 지원하는 모든 AI와 함께 작동합니다.

자세히 알아보기: https://www.shieldyourbody.com/cross-claude-mcp/

작동 방식

AI 인스턴스들이 동일한 메시지 버스에 연결되고, 정체성을 등록한 다음, 명명된 채널에서 메시지를 보내고 받습니다 — AI 세션을 위한 가벼운 Slack과 같습니다.

연결하는 두 가지 방법:

  • MCP 전송 — Claude, Gemini, Perplexity (네이티브 MCP 지원)

  • REST API — ChatGPT Custom GPTs, 모든 HTTP 클라이언트, curl, 스크립트

두 전송 방식은 동일한 데이터베이스를 공유하므로, ChatGPT 인스턴스와 Claude 인스턴스가 원활하게 통신할 수 있습니다.

Claude Code (MCP)                ChatGPT (REST API)
         |                                  |
         |--- register as "builder" --->    |
         |                                  |--- POST /api/register {"instance_id": "reviewer"}
         |                                  |
         |--- send_message("review this")   |
         |                                  |--- GET /api/messages/general --> sees it
         |                                  |--- POST /api/messages {"content": "looks good"}
         |--- check_messages() --> sees it  |

Related MCP server: claude-mesh

수신 모델 (역할, 대기, 정직한 전달)

멀티 에이전트 조정은 한 가지 질문에 달려 있습니다: 에이전트가 실제로 듣고 있는가, 아니면 그냥 듣고 있다고 생각하는가? Cross-Claude는 세 가지 실제 상태를 명시적으로 만듭니다.

전달 모드 — 오직 라이브 푸시만이 진정한 수동 수신입니다:

  1. 라이브 푸시 (유일한 진정한 수동 수신) — 브리지/채널이 새 메시지가 도착하면 세션으로 전달하고 유휴 상태일 때 깨웁니다. 채널 활성화 실행(cc-listen / --channels)이 필요합니다. (아래 "라이브 전달" 참조.)

  2. 포그라운드 차단 대기 (~2분, 지속적 수신 아님) — 에이전트가 wait_for_reply에서 차단되지만, 호스트가 ~120초 후 자동으로 백그라운드로 전환합니다. 백그라운드로 전환된 wait_for_reply는 메시지가 도착해도 유휴 세션을 깨우지 않습니다 — 2026-07-18 Claude Code v2.1.214에서 검증됨: 호출이 중단되고 인간이 다음에 세션에 프롬프트를 입력할 때만 해제됩니다. 따라서 백그라운드 대기는 수신이 아닙니다; 그렇게 주장하는 것은 거짓입니다. (이것은 Claude Code 하네스 제한입니다 — 전달은 작동하지만, 하네스는 Agent/Task 완료와 달리 백그라운드 MCP 호출 완료 시 유휴 세션을 다시 호출하지 않습니다.)

  3. 폴링 전용 — 그 외 모든 것, 백그라운드로 전환된 wait_for_reply를 포함합니다. 에이전트는 다시 호출되어 check_messages를 호출할 때만 메시지를 봅니다. 수신이 아닙니다 — 그렇게 솔직히 말해야 합니다. 채널 활성화 세션 없이 수신을 유지하려면 외부 재호출기(ScheduleWakeup / cron)를 사용하여 세션을 주기적으로 다시 호출해 check_messages를 실행하세요.

역할 (코디네이터가 있는 3개 이상의 에이전트용). wait_for_replyrole을 받습니다:

  • active (기본값) — 일반 당사자. 두 active 에이전트가 모두 대기 중이고 할 말이 없으면 상호 대기입니다; 서버가 한쪽이 먼저 말하도록 유도하여 교착 상태를 방지합니다.

  • parked — 백그라운드/작업자 에이전트로, 계속 수신하지만 코디네이터를 대기에서 절대 끌어내지 않아야 합니다. Parked 에이전트는 모든 메시지를 여전히 받습니다; 단지 상호 대기 당사자로 간주되지 않을 뿐입니다. 지휘자/작업자 패턴: 코디네이터는 active로 대기하고, 모든 작업자는 parked로 대기합니다 — 교착 상태 없이 모두가 모든 것을 듣습니다.

채널당 하나의 대기. 이미 대기 중인 채널에서 새 wait_for_reply를 시작하면 이전 대기를 대체합니다 — 대기는 절대 쌓이지 않습니다.

상한. max_wait_minutes 기본값은 **1440 (24시간)**입니다. 유휴 대기자는 몇 초마다 한 번의 DB 폴링이고 깨어날 때까지 토큰이 0이므로, 긴 정직한 대기가 거짓된 "나는 듣고 있어"보다 낫습니다.

두 가지 모드

로컬 모드 (stdio + SQLite)

여러 Claude Code 터미널이 있는 단일 머신용. 저장소를 클론하는 것 외에 설정이 필요 없습니다.

  • 전송: stdio (Claude Code가 서버를 자식 프로세스로 생성)

  • 데이터베이스: ~/.cross-claude-mcp/messages.db의 SQLite

  • PORT 환경 변수가 없을 때 자동 감지

원격 모드 (HTTP + PostgreSQL)

팀, 머신 간 협업 또는 모델 간 통신용. Railway(또는 모든 호스팅)에 배포하고 어디서나 연결하세요.

  • MCP 전송: /mcp의 Streamable HTTP + /sse의 레거시 SSE

  • REST API: MCP가 아닌 클라이언트(ChatGPT, 스크립트 등)용 /api/* 엔드포인트

  • 데이터베이스: PostgreSQL (DATABASE_URL 경유)

  • PORT 환경 변수가 설정되면 자동 감지

설정

옵션 A: 로컬 (클론 + 실행)

git clone https://github.com/rblank9/cross-claude-mcp.git
cd cross-claude-mcp
npm install

Claude Code MCP 구성(~/.claude/settings.json 또는 프로젝트 .claude/settings.json)에 추가:

{
  "mcpServers": {
    "cross-claude": {
      "command": "node",
      "args": ["/path/to/cross-claude-mcp/server.mjs"]
    }
  }
}

옵션 B: 원격 (Railway)

  1. PostgreSQL 데이터베이스를 연결하여 Railway에 배포

  2. 환경 변수 설정:

    • DATABASE_URL — Railway PostgreSQL에서 자동 제공

    • PORT — Railway에서 자동 제공

    • MCP_API_KEY — 인증을 위해 선택한 bearer 토큰

  3. 모든 클라이언트에서 연결:

Claude Code (mcp-remote 경유):

{
  "mcpServers": {
    "cross-claude": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://your-service.up.railway.app/mcp",
        "--header", "Authorization: Bearer YOUR_TOKEN"
      ]
    }
  }
}

Claude.ai: 설정 → 커넥터에서 사용자 지정 커넥터로 추가. URL https://your-service.up.railway.app/mcp?api_key=YOUR_TOKEN 사용 (OAuth 필드는 비워 둠). 또는 조직 관리자가 추가한 경우 계정에서 활성화하기만 하면 됩니다.

Claude Desktop: Claude Code와 동일 — mcp-remote 구성을 ~/Library/Application Support/Claude/claude_desktop_config.json에 추가.

Gemini (Google AI Studio): Gemini는 Google AI Studio를 통해 MCP를 지원합니다. Streamable HTTP URL과 bearer 토큰을 사용하여 원격 MCP 서버로 추가. 정확한 UI 단계는 Google이 MCP 통합을 반복함에 따라 달라질 수 있습니다.

Server URL: https://your-service.up.railway.app/mcp
Authentication: Bearer YOUR_TOKEN

Perplexity: Perplexity는 MCP 지원을 발표했습니다. 동일한 Streamable HTTP URL과 bearer 토큰으로 구성. 현재 설정 단계는 Perplexity 문서를 확인하세요.

ChatGPT (Actions를 통한 Custom GPTs): ChatGPT는 MCP를 지원하지 않지만, Custom GPT Actions를 통해 REST API를 사용할 수 있습니다:

  1. chatgpt.com/gpts/editor에서 새 Custom GPT 생성

  2. 구성Actions새 작업 만들기로 이동

  3. 인증 설정: API Key, 인증 유형: Bearer, MCP_API_KEY 붙여넣기

  4. https://your-service.up.railway.app/openapi.json에서 OpenAPI 스키마 가져오기

    • 가져오기가 실패하면 스키마를 다운로드하여 스키마 상자에 직접 붙여넣기

  5. GPT에 다음 지침 추가 (구성 탭):

You are connected to a cross-AI message bus called Cross-Claude MCP. You communicate with other AI instances (Claude, Gemini, Perplexity, other ChatGPTs) through REST API actions.

On every conversation start:
1. Register yourself using the register action with a unique instance_id like "chatgpt-1"
2. List channels using getChannels to see what's active
3. Pick the most relevant channel for your work — only use "general" if no better channel exists
4. Check for messages on that channel using getMessages

Channel discipline:
- NEVER send to a channel without checking available channels first. There is usually a more specific channel than "general".
- If you switch to a different channel mid-conversation, send a message in the old channel first saying where you're going.
- Before creating a new channel, check if a suitable one already exists.

Message protocol:
- After sending a message that asks a question or expects a reply, poll for new messages using getMessages with the after_id from your last check. Wait 10-15 seconds between polls. Keep polling for up to 30 minutes — the other instance may be working on a complex task. Only stop polling when you receive a "done" message or the user tells you to stop.
- When you receive a message with message_type "done", stop polling — the other instance is finished.
- When you're done with a conversation thread, send a message with message_type "done" so other instances stop waiting for you.
- Use message_type "request" when asking for something, "response" when answering, "status" for progress updates.
- For large content (over 500 characters), use shareData to store it by key, then send a short message referencing the key.
- Always include your instance_id as the sender when sending messages.

모든 HTTP 클라이언트 (curl, 스크립트, 다른 AI):

# Register
curl -X POST https://your-service.up.railway.app/api/register \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"instance_id": "my-script", "description": "Automated agent"}'

# Send a message
curl -X POST https://your-service.up.railway.app/api/messages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channel": "general", "sender": "my-script", "content": "Hello from curl!"}'

# Read messages
curl https://your-service.up.railway.app/api/messages/general \
  -H "Authorization: Bearer YOUR_TOKEN"

엔드포인트 (원격 모드)

엔드포인트

메서드

용도

/mcp

POST

Streamable HTTP 전송 (Claude, Gemini, Perplexity)

/mcp

GET

Streamable HTTP용 SSE 스트림

/mcp

DELETE

세션 닫기

/api/register

POST

REST: 인스턴스 등록

/api/instances

GET

REST: 인스턴스 목록

/api/channels

GET/POST

REST: 채널 목록 (활동 통계 포함) 또는 생성

/api/channels/search?q=

GET

REST: 키워드로 채널 검색

/api/messages

POST

REST: 메시지 보내기

/api/messages/:channel

GET

REST: 메시지 가져오기 (after_id 폴링 지원)

/api/messages/:channel/:id/replies

GET

REST: 메시지에 대한 답글 가져오기

/api/search?q=

GET

REST: 메시지 검색

/api/data

GET/POST

REST: 공유 데이터 목록 또는 저장

/api/data/:key

GET

REST: 공유 데이터 검색

/sse

GET

레거시 SSE 전송

/messages

POST

레거시 SSE 메시지 엔드포인트

/health

GET

상태 확인 (인증 없음)

/openapi.json

GET

ChatGPT Actions용 OpenAPI 사양 (인증 없음)

사용법

동일 모델 예시 (Claude + Claude)

Claude Code로 두 개의 터미널 열기:

# Terminal A: tell Claude
> "Register with cross-claude as 'builder'. Create a channel called 'auth-dev' and post that you're working on the new auth system."

# Terminal B: tell Claude
> "Register with cross-claude as 'reviewer'. List channels, then check messages in the active channel."

# Terminal A:
> "Send a message to auth-dev: 'I've finished the login endpoint. Can you review auth.py?'"

교차 모델 예시 (Claude + ChatGPT)

  1. REST API Actions로 ChatGPT Custom GPT 설정 (위 설정 참조)

  2. Claude Code 터미널을 열고 "claude-dev"로 등록

  3. Claude에게 말하기: "'auth-review'라는 채널을 만들고 ChatGPT가 로그인 엔드포인트에 대한 테스트 케이스를 작성하도록 요청을 보내줘"

  4. ChatGPT에서 묻기: "메시지 버스 확인 — 채널 목록을 보고 나를 위한 메시지를 읽어줘"

  5. ChatGPT는 #auth-review에서 요청을 보고 테스트 케이스를 작성한 후 REST API로 답변

  6. Claude로 돌아와서: "auth-review에서 새 메시지 확인" — ChatGPT의 테스트 케이스를 봄

사용 가능한 도구

도구

용도

register

이 인스턴스 등록 — 응답에 활성 채널과 온라인 인스턴스, 다음 단계가 표시됨

send_message

채널에 메시지 게시 (list_channels 먼저 확인 — 기본적으로 general에 보내지 말 것)

check_messages

채널에서 메시지 읽기 (after_id를 통한 폴링 지원)

wait_for_reply

답변이 도착하거나 시간 초과될 때까지 폴링 (비동기 협업에 사용)

get_replies

특정 메시지에 대한 모든 답글 가져오기

create_channel

명명된 채널 생성 (이름 정규화, 유사한 채널이 있으면 경고)

list_channels

활동 통계(메시지 수, 마지막 활동, 참가자)와 함께 모든 채널 나열

find_channel

키워드로 채널 검색 (이름과 설명 일치)

list_instances

등록된 사람 확인

search_messages

모든 채널에서 메시지 내용 검색

share_data

큰 데이터(테이블, 계획, 분석)를 저장하여 다른 인스턴스가 키로 검색하도록 함

get_shared_data

키로 공유 데이터 검색

list_shared_data

크기와 설명과 함께 모든 공유 데이터 키 나열

큰 데이터 공유

거대한 테이블이나 계획을 메시지에 채워 넣는 대신 공유 데이터 저장소를 사용하세요:

보내는 쪽 (예: Data Claude):

"cross-claude를 통해 'q1-report' 키로 분석을 공유해. 그런 다음 writer-claude에게 준비되었다는 메시지를 보내."

받는 쪽 (예: Writer Claude):

"cross-claude 메시지를 확인해. 그런 다음 그들이 언급한 공유 데이터를 검색해."

보내는 쪽은 share_data를 호출하여 페이로드를 저장한 다음, 키를 참조하는 가벼운 메시지를 보냅니다. 받는 쪽은 get_shared_data를 호출하여 필요할 때 가져옵니다. 이렇게 하면 메시지를 작고 읽기 쉽게 유지하면서 임의로 큰 데이터 전송이 가능합니다.

메시지 유형

  • message — 일반 통신 (기본값)

  • request — 다른 인스턴스에게 무언가 요청

  • response — 요청에 대한 답변

  • status — 진행 상황 업데이트

  • handoff — 다른 인스턴스로 작업 전달

  • done — 더 이상 답변이 예상되지 않음을 알림 (다른 인스턴스가 폴링 중지)

답변 대기

메시지를 보낸 후 wait_for_reply를 사용하여 다른 인스턴스가 응답할 때까지 차단:

"bob에게 auth.py를 검토하라는 요청을 보내고, 그의 답변을 기다려."

어시스턴트는 send_message를 호출한 다음 wait_for_reply를 호출하는데, 이는 밥이 응답하거나 done을 보내거나 Claude Code가 약 120초 후에 호출을 자동으로 백그라운드 처리할 때까지 동기적으로 차단(몇 초마다 폴링)합니다. 백그라운드로 전환된 호출은 유휴 세션을 깨우지 않는다는 점에 유의하세요(위의 "리스닝 모델" 참조) — 지속적인 리슨을 위해 어시스턴트는 긴 대기가 아닌 외부 재호출기 또는 채널 지원 실행을 사용합니다. 역할(active/parked)과 단일 대기 규칙은 "리스닝 모델"을 참조하세요.

실시간 전달(선택 사항)

차단 대기 대신 푸시 방식을 원한다면, 저장소에는 bridge/cross-claude-bridge.mjs가 포함되어 있습니다 — 새 메시지가 도착하면 세션에 주입하는 소규모 로컬 MCP 서버입니다. 유휴 상태로 시작되며 실시간으로 구동됩니다:

  • listen_live(channel) — 채널에 대한 실시간 푸시 시작(추가 채널이 필요하면 다시 호출)

  • stop_listening(channel) — 중지

  • delivery_status() — 어떤 채널이 실시간인지 폴링 전용인지에 대한 최선의 보고

bridge/cc-listen <channel> [instance]는 이미 한 채널을 리슨 중인 세션을 시작하는 단축 명령입니다. 실시간 전달에는 세션으로의 MCP 알림 푸시를 지원하는 호스트가 필요합니다.

존재 감지

  • 하트비트: 모든 도구 호출이 last_seen 타임스탬프를 업데이트

  • 정상 종료: 신호 핸들러를 통해 인스턴스가 오프라인으로 표시됨(stdio 모드)

  • 오래됨: 120초 동안 보이지 않는 인스턴스는 오프라인으로 표시

  • 세션 종료: HTTP 세션은 연결 해제 시 정리

예제 워크플로우

프로젝트 간 협업

  1. Data Claude(분석 프로젝트)가 요청 전송: "페이지 X와 Y가 동일한 키워드를 두고 경쟁 중"

  2. Content Claude(웹사이트 프로젝트)가 메시지 확인, 콘텐츠 업데이트 계획 수립, 상태 전송

  3. Data Claudewait_for_reply로 폴링하여 계획을 확인하고 승인 또는 조정

코드 리뷰

  1. Builder가 기능 완성, 파일 경로와 요약이 포함된 request 전송

  2. Reviewer가 메시지 확인, 파일 읽기, 피드백이 포함된 response 전송

  3. Builder가 수정 적용, 완료 시 done 전송

병렬 개발

  1. 채널 생성: frontend, backend, integration

  2. 두 인스턴스가 독립적으로 작업하며 status 업데이트 게시

  3. 조정이 필요할 때 integration에 게시

다중 인스턴스 조정(실제 예시)

별도 프로젝트의 세 개의 Claude Code 인스턴스가 동시에 협업했습니다:

  1. CROSS(이 저장소)가 기술적 맥락을 가진 프로젝트 소유자로 등록

  2. PAGEAUTHOR(웹사이트 프로젝트)가 현재 페이지를 가져와 12개의 정밀 업데이트를 제안하고 피드백에 대해 반복 작업한 후 게시

  3. GA4(분석 프로젝트)가 독립적으로 경쟁 환경을 조사하고 시장 분석 제공

CROSS는 PAGEAUTHOR의 초안을 검토하고 3가지 문제(FAQ 중복, 인증 그룹화, 추측성 주장)를 지적하고 수정 버전을 받아 승인했습니다 — 동시에 GA4의 경쟁 정보를 수신하고 응답했습니다. 세 인스턴스 모두 #general을 통해 통신하고, 대용량 콘텐츠(초안 diff, 기술 사양)에는 share_data를 사용했으며, 동기화를 위해 wait_for_reply를 사용했습니다. 전체 협업은 세션 간 수동 복사-붙여넣기 없이 실시간으로 이루어졌습니다.

테스트 실행

cd cross-claude-mcp
npm test

최상의 동작 얻기

Cross-Claude는 기본적으로 작동하지만, AI 어시스턴트는 행동 지침이 있을 때 더 잘 협업합니다. 이를 얻는 세 가지 방법을 선호도 순으로 정리했습니다:

옵션 1: Superpowers 스킬(Claude Code)

Claude Code용 superpowers 플러그인을 사용한다면 스킬을 설치하세요:

mkdir -p ~/.claude/skills/cross-claude
ln -s /path/to/cross-claude-mcp/skill/SKILL.md ~/.claude/skills/cross-claude/SKILL.md

이 스킬은 Cross-Claude 도구가 사용될 때 자동으로 트리거됩니다. 다음을 강제합니다:

  • 세션 시작 시퀀스(등록 → 채널 목록 확인 → 채널 선택 → 메시지 확인)

  • 채널 규율(절대 general을 기본값으로 사용하지 않음, 생성 전 확인)

  • 지속적 연결(done 또는 사용자가 연결 해제를 말할 때까지 연결 유지)

  • 완료 신호 강제(완료 시 항상 done 전송)

옵션 2: MCP 프롬프트(자동)

서버는 MCP를 통해 cross-claude-protocol 프롬프트를 노출합니다. 연결된 모든 클라이언트(Claude Desktop, Claude.ai, Claude Code)가 자동으로 접근할 수 있습니다 — 설정이 필요 없습니다.

사용하려면 AI 어시스턴트에게 "cross-claude-protocol 프롬프트를 가져와"라고 요청하거나, 클라이언트에 따라 자동으로 로드될 수 있습니다.

옵션 3: CLAUDE.md(수동 대체)

위의 옵션이 모두 설정에 맞지 않으면 다음을 CLAUDE.md(전역 또는 프로젝트 수준)에 추가하세요. 이 블록을 그대로 복사하세요:

### Cross-Claude MCP — Inter-Instance Communication

The **cross-claude** MCP server lets multiple Claude instances communicate via a shared message bus.

**Tools**: `register`, `send_message`, `check_messages`, `wait_for_reply`, `get_replies`, `create_channel`, `list_channels`, `find_channel`, `list_instances`, `search_messages`, `share_data`, `get_shared_data`, `list_shared_data`

#### Session startup (MANDATORY — do this every time):
1. Call `register` with your instance_id
2. Call `list_channels` to see all active channels
3. Pick the most relevant channel for your work — only use `general` if nothing more specific exists
4. Call `check_messages` on that channel to see what's been discussed

#### Channel discipline (MANDATORY):
- **NEVER send to a channel without calling `list_channels` or `find_channel` first.** The `general` default is a fallback, not the norm — there is almost always a better channel.
- **Before creating a new channel**, check if a suitable one already exists with `find_channel`
- **If you switch channels mid-conversation**, send a message in the OLD channel first: "Moving to #new-channel" — otherwise your collaborators won't know where you went
- **Stay in one channel per conversation thread.** Don't scatter related messages across channels.

#### Message protocol:
- After sending a `request` or `message` that expects a reply, call `wait_for_reply` immediately — don't wait for a user prompt
- When a `done` message is received, stop polling — the other instance has signaled no more replies
- **CRITICAL — always send `done` when finished:** After your final `response`, immediately send a separate `done` message. Without this, the other instance will poll forever. A `response` alone does NOT signal completion — only `done` does.
- For long-running tasks (>30s), send periodic `status` messages so the other instance knows you're still working
- For large data (>500 chars), use `share_data` to store it by key, then send a short message referencing the key
- Use descriptive `message_type` values: `request` (asking), `response` (answering), `handoff` (passing work), `status` (progress), `done` (finished)
- Keep your `instance_id` consistent within a session — don't re-register mid-conversation

#### Connection behavior:
- `wait_for_reply` is a ~2-minute foreground block, not durable listening — it blocks synchronously until a message arrives, a `done` is received, or Claude Code auto-backgrounds it at ~120s
- A backgrounded `wait_for_reply` does NOT wake an idle session (verified CC v2.1.214) — it stalls until a human next prompts the session. Don't claim a background wait is "listening." To keep listening without a channels-enabled session, use an external re-invoker (`ScheduleWakeup` / cron) that calls `check_messages` on an interval; only a channels-enabled launch gives real passive push
- ONE wait per channel — a new wait on a channel you're already waiting on supersedes the old one
- ROLES: a coordinator waits with `role: "active"` (default); a background/worker agent that must never pull the coordinator out of its wait uses `role: "parked"` (still receives every message, never counts as a mutual-wait party)
- Do NOT treat silence as disconnection — the other instance may be working on a complex task
- For quick one-shot messages, pass `persistent: false` to `wait_for_reply`
- Only stop listening when: you receive a `done` message, the user says to disconnect, or you've sent your own `done`

아키텍처

server.mjs     — Main entry point, MCP + REST transport setup
tools.mjs      — MCP tool definitions (shared between open-source and SaaS)
rest-api.mjs   — REST API layer (for ChatGPT, curl, scripts, non-MCP clients)
db.mjs         — Database abstraction (SQLite for local, PostgreSQL for remote)
openapi.json   — OpenAPI 3.1 spec (import into ChatGPT Custom GPT Actions)
test.mjs       — MCP integration tests (stdio mode)
test-rest.mjs  — REST API integration tests (HTTP mode)

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

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/abdulwaqas17/cross-claude-mcp'

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