Plane MCP Server

공식

Plane 공식 MCP 서버는 Plane API와의 통합을 제공하여 Plane 프로젝트, 작업 항목, 사이클 등의 전체 AI 자동화를 가능하게 합니다.

문서

Plane MCP 서버

Plane 통합을 위한 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버는 AI 에이전트를 통해 Plane과 상호 작용하기 위한 도구와 리소스를 제공합니다.

기능

  • 🔧 Plane 통합: Plane API 및 서비스와 상호 작용
  • 🔌 다중 전송: stdio, SSE, 스트리밍 가능한 HTTP 전송 지원
  • 🌐 원격 및 로컬: 로컬 및 원격 서비스로 모두 작동
  • 🛠️ 확장 가능: 새로운 도구와 리소스를 쉽게 추가 가능

사용법

서버는 세 가지 전송 방법을 지원합니다. 설치가 필요 없는 uvx 사용을 권장합니다.

요구 사항:

  • Python 3.10 이상 (stdio 전송 시, uvx 경유)
  • Node.js 22 이상 (원격 전송 시, npx 경유)

1. Stdio 전송 (로컬 사용 시)

MCP 클라이언트 구성 (uvx 사용 - 권장):

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["plane-mcp-server", "stdio"],
      "env": {
        "PLANE_API_KEY": "<your-api-key>",
        "PLANE_WORKSPACE_SLUG": "<your-workspace-slug>",
        "PLANE_BASE_URL": "https://api.plane.so"
      }
    }
  }
}

2. OAuth를 사용한 원격 HTTP 전송

OAuth 인증을 사용하여 호스팅된 Plane MCP 서버에 연결합니다.

URL: https://mcp.plane.so/http/mcp

MCP 클라이언트 구성 (기본 원격 MCP 지원이 없는 Claude Desktop과 같은 도구용):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
    }
  }
}

참고: 원격 서버에 연결할 때 OAuth 인증이 자동으로 처리됩니다.

3. PAT 토큰을 사용한 원격 HTTP 전송

개인 액세스 토큰(PAT)을 사용하여 호스팅된 Plane MCP 서버에 연결합니다.

URL: https://mcp.plane.so/http/api-key/mcp

헤더:

  • Authorization: Bearer <PAT_TOKEN>
  • X-Workspace-slug: <SLUG>

MCP 클라이언트 구성 (기본 원격 MCP 지원이 없는 Claude Desktop과 같은 도구용):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT_TOKEN>",
        "X-Workspace-slug": "<SLUG>"
      }
    }
  }
}

4. SSE 전송 (레거시)

⚠️ 레거시 전송: SSE(Server-Sent Events) 전송은 하위 호환성을 위해 유지됩니다. 새로운 구현은 대신 HTTP 전송(섹션 2 또는 3)을 사용해야 합니다.

Server-Sent Events를 통해 OAuth 인증을 사용하여 호스팅된 Plane MCP 서버에 연결합니다.

URL: https://mcp.plane.so/sse

MCP 클라이언트 구성 (SSE 전송을 지원하는 도구용):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/sse"]
    }
  }
}

참고: 원격 서버에 연결할 때 OAuth 인증이 자동으로 처리됩니다. 이 전송은 HTTP 전송을 위해 더 이상 사용되지 않습니다.

구성

인증

서버는 환경 변수를 통한 인증이 필요합니다:

  • PLANE_BASE_URL: Plane API의 기본 URL (기본값: https://api.plane.so) - 선택 사항
  • PLANE_API_KEY: 인증용 API 키 (stdio 전송 시 필수)
  • PLANE_WORKSPACE_SLUG: 워크스페이스 슬러그 식별자 (stdio 전송 시 필수)
  • PLANE_ACCESS_TOKEN: 인증용 액세스 토큰 (API 키 대체)

예시 (stdio 전송용):

export PLANE_BASE_URL="https://api.plane.so"
export PLANE_API_KEY="your-api-key"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"

참고: 원격 HTTP 전송(OAuth 또는 PAT)의 경우 인증은 연결 방법(OAuth 흐름 또는 PAT 헤더)을 통해 처리되며 이러한 환경 변수가 필요하지 않습니다.

OAuth 리디렉션 URI

OAuth HTTP/SSE 전송의 경우 서버는 각 클라이언트의 리디렉션 URI를 허용 목록과 비교하여 검증합니다. 일반적인 MCP 클라이언트(Cursor, VS Code, Claude.ai, ChatGPT 커넥터, localhost)는 기본적으로 허용됩니다.

코드 변경이나 릴리스 없이 새 클라이언트를 온보딩하려면 환경 변수를 통해 추가 패턴을 추가하세요:

  • PLANE_OAUTH_ALLOWED_REDIRECT_URIS: 내장 허용 목록에 추가되는 쉼표로 구분된 리디렉션 URI 패턴.
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

패턴은 glob 매칭을 지원합니다(*는 모든 포트, 경로 세그먼트 또는 하위 도메인과 일치). 보안을 위해 호스트는 고정하고 포트/경로만 와일드카드로 지정하세요.

로깅

서버는 구조화된 JSON 로그를 내보냅니다. 각 도구 호출은 도구 이름, 소요 시간, 상태 및 (가능한 경우) 불투명 사용자 ID 및 워크스페이스 슬러그와 함께 기록됩니다.

  • LOG_USER_INFO: true인 경우 불투명 사용자 ID와 함께 사용자 정보(표시 이름과 같은 PII)를 로그에 포함합니다. 기본값은 false이므로 명시적으로 옵트인하지 않는 한 PII가 기록되지 않습니다. OAuth 및 PAT(헤더) HTTP 전송만 표시 이름을 전달하며 stdio는 영향을 받지 않습니다.
export LOG_USER_INFO="true"

사용 가능한 도구

서버는 Plane과 상호 작용하기 위한 포괄적인 도구를 제공합니다. 모든 도구는 유형 안전성과 유효성 검사를 위해 Plane SDK의 Pydantic 모델을 사용합니다.

프로젝트

도구 이름설명
list_projects선택적 페이지 매김 및 필터링을 사용하여 워크스페이스의 모든 프로젝트 나열
create_project이름, 식별자 및 선택적 구성으로 새 프로젝트 생성
retrieve_projectID로 프로젝트 검색
update_project부분 데이터로 프로젝트 업데이트
delete_projectID로 프로젝트 삭제
get_project_worklog_summary프로젝트의 작업 로그 요약 가져오기
get_project_members프로젝트의 모든 멤버 가져오기
update_project_features프로젝트의 기능 구성 업데이트

작업 항목

도구 이름설명
list_work_items선택적 필터링 및 페이지 매김을 사용하여 프로젝트의 모든 작업 항목 나열
create_work_item이름, 담당자, 레이블 및 기타 속성으로 새 작업 항목 생성
retrieve_work_item선택적 필드 확장을 사용하여 ID로 작업 항목 검색
retrieve_work_item_by_identifier프로젝트 식별자 및 이슈 시퀀스 번호로 작업 항목 검색
update_work_item부분 데이터로 작업 항목 업데이트
delete_work_itemID로 작업 항목 삭제
search_work_items쿼리 문자열을 사용하여 워크스페이스 전체에서 작업 항목 검색

주기

도구 이름설명
list_cycles프로젝트의 주기 나열 (보관된 항목은 archived=true 설정)
create_cycle이름, 날짜 및 소유자로 새 주기 생성
retrieve_cycleID로 주기 검색
update_cycle부분 데이터로 주기 업데이트
delete_cycleID로 주기 삭제
manage_cycle_work_items주기에 작업 항목 추가 및/또는 제거
list_cycle_work_items주기의 작업 항목 나열
transfer_cycle_work_items한 주기에서 다른 주기로 작업 항목 전송
manage_cycle_archive주기 보관 또는 보관 해제

모듈

도구 이름설명
list_modules프로젝트의 모듈 나열 (보관된 항목은 archived=true 설정)
create_module이름, 날짜, 상태 및 멤버로 새 모듈 생성
retrieve_moduleID로 모듈 검색
update_module부분 데이터로 모듈 업데이트
delete_moduleID로 모듈 삭제
manage_module_work_items모듈에 작업 항목 추가 및/또는 제거
list_module_work_items모듈의 작업 항목 나열
manage_module_archive모듈 보관 또는 보관 해제

이니셔티브

도구 이름설명
list_initiatives워크스페이스의 모든 이니셔티브 나열
create_initiative이름, 날짜, 상태 및 리드로 새 이니셔티브 생성
retrieve_initiativeID로 이니셔티브 검색
update_initiative부분 데이터로 이니셔티브 업데이트
delete_initiativeID로 이니셔티브 삭제

접수 작업 항목

도구 이름설명
list_intake_work_items선택적 페이지 매김을 사용하여 프로젝트의 모든 접수 작업 항목 나열
create_intake_work_item프로젝트에 새 접수 작업 항목 생성
retrieve_intake_work_item선택적 필드 확장을 사용하여 작업 항목 ID로 접수 작업 항목 검색
update_intake_work_item부분 데이터로 접수 작업 항목 업데이트
delete_intake_work_item작업 항목 ID로 접수 작업 항목 삭제

작업 항목 속성

도구 이름설명
list_work_item_properties작업 항목 유형에 대한 작업 항목 속성 나열
create_work_item_property유형, 설정 및 유효성 검사 규칙으로 새 작업 항목 속성 생성
retrieve_work_item_propertyID로 작업 항목 속성 검색
update_work_item_property부분 데이터로 작업 항목 속성 업데이트
delete_work_item_propertyID로 작업 항목 속성 삭제

마일스톤

도구 이름설명
list_milestones프로젝트의 모든 마일스톤 나열
create_milestone새 마일스톤 생성
retrieve_milestoneID로 마일스톤 검색
update_milestoneID로 마일스톤 업데이트
delete_milestoneID로 마일스톤 삭제
manage_milestone_work_items마일스톤에 작업 항목 추가 및/또는 제거
list_milestone_work_items마일스톤의 작업 항목 나열

레이블

도구 이름설명
list_labels프로젝트의 모든 레이블 나열
create_label새 레이블 생성
retrieve_labelID로 레이블 검색
update_labelID로 레이블 업데이트
delete_labelID로 레이블 삭제

상태

도구 이름설명
list_states프로젝트의 모든 상태 나열
create_state새 상태 생성
retrieve_stateID로 상태 검색
update_stateID로 상태 업데이트
delete_stateID로 상태 삭제

작업 항목 댓글

도구 이름설명
list_work_item_comments작업 항목의 댓글 나열
retrieve_work_item_comment작업 항목의 특정 댓글 검색
create_work_item_comment작업 항목에 댓글 생성
update_work_item_comment작업 항목의 댓글 업데이트
delete_work_item_comment작업 항목의 댓글 삭제

작업 항목 링크

도구 이름설명
list_work_item_links작업 항목의 링크 나열
retrieve_work_item_link작업 항목의 특정 링크 검색
create_work_item_link작업 항목에 링크 생성
update_work_item_link작업 항목의 링크 업데이트
delete_work_item_link작업 항목의 링크 삭제

작업 항목 유형

도구 이름설명
list_work_item_types프로젝트의 모든 작업 항목 유형 나열
create_work_item_type새 작업 항목 유형 생성
retrieve_work_item_typeID로 작업 항목 유형 검색
update_work_item_typeID로 작업 항목 유형 업데이트
delete_work_item_typeID로 작업 항목 유형 삭제
import_work_item_types_to_project워크스페이스 수준 작업 항목 유형을 프로젝트에 대량 연결
resolve_work_item_type프로젝트에 대해 명명된 유형을 찾거나 생성하고, 워크스페이스 vs 프로젝트 범위 및 가져오기를 자동 처리

작업 항목 관계

도구 이름설명
list_work_item_relations작업 항목의 관계 나열
create_work_item_relation작업 항목에 대한 관계 생성
remove_work_item_relation작업 항목에서 관계 제거

작업 항목 관계 정의

도구 이름설명
list_work_item_relation_definitions워크스페이스 사용자 정의 관계 정의 나열
create_work_item_relation_definition워크스페이스 관계 정의 생성
update_work_item_relation_definition관계 정의 업데이트
delete_work_item_relation_definition관계 정의 삭제

작업 항목 활동

도구 이름설명
list_work_item_activities작업 항목의 활동 나열
retrieve_work_item_activity작업 항목의 특정 활동 검색

작업 로그

도구 이름설명
list_work_logs작업 항목의 작업 로그 나열
create_work_log작업 항목에 대한 작업 로그 생성
update_work_log작업 항목의 작업 로그 업데이트
delete_work_log작업 항목의 작업 로그 삭제

페이지

도구 이름설명
list_pages페이지 나열 (워크스페이스, 또는 project_id가 제공된 경우 프로젝트의 페이지)
retrieve_pageID로 페이지 검색 (워크스페이스, 또는 project_id이 제공된 경우 프로젝트의 페이지)
create_page워크스페이스 또는 프로젝트 페이지 생성

워크스페이스

도구 이름설명
get_workspace_members현재 워크스페이스의 모든 멤버 가져오기
get_features기능 플래그 가져오기 (워크스페이스, 또는 project_id이 제공된 경우 프로젝트의 플래그)
update_workspace_features현재 워크스페이스의 기능 업데이트

사용자

도구 이름설명
get_me현재 인증된 사용자 정보 가져오기

총 도구 수: 20개 카테고리에서 100개 이상의 도구

개발

테스트 실행

pytest

코드 포맷팅

black plane_mcp/
ruff check plane_mcp/

라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.

기여하기

기여는 언제나 환영합니다! Pull Request를 자유롭게 제출해 주세요.

지원 중단 안내

⚠️ Node.js 기반 plane-mcp-server는 지원이 중단되었으며 더 이상 유지보수되지 않습니다.

이 저장소는 Plane MCP 서버의 새로운 Python+FastMCP 기반 구현을 나타냅니다. 이전 Node.js 버전을 사용 중이었다면, 지속적인 지원과 업데이트를 위해 이 Python 기반 버전으로 마이그레이션해 주시기 바랍니다.

새로운 구현이 제공하는 것:

  • Pydantic 모델을 통한 향상된 타입 안전성
  • FastMCP를 통한 개선된 성능
  • 강화된 도구 지원 범위
  • 활발한 유지보수 및 개발

마이그레이션 지원이 필요하시면 이 README의 구성 예시를 참조하거나 이슈를 열어 지원을 요청해 주세요.

이전 Node.js 구성 (지원 중단됨):

이전 Node.js 기반 @makeplane/plane-mcp-server를 사용 중이었다면, 구성은 다음과 같았습니다:

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": [
        "-y",
        "@makeplane/plane-mcp-server"
      ],
      "env": {
        "PLANE_API_KEY": "<YOUR_API_KEY>",
        "PLANE_API_HOST_URL": "<HOST_URL_FOR_SELF_HOSTED>",
        "PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>"
      }
    }
  }
}

위의 사용법 섹션에 표시된 새로운 Python 기반 구성으로 마이그레이션해 주세요.