피카르드 MCP 서버
개요
Picard MCP는 모델 컨텍스트 프로토콜(MCP) 표준을 기반으로 구축된 완전한 메모리 관리 시스템입니다. 이 시스템은 두 가지 주요 구성 요소로 구성됩니다. 안전한 메모리 저장 및 검색 서비스를 제공하는 MCP 서버와 MCP 서버와의 통합 방법을 보여주는 Django 클라이언트 애플리케이션입니다. 이 시스템을 통해 사용자는 접근 권한을 제어하면서 메모리를 저장, 검색 및 관리할 수 있으며, 저장된 메모리를 기반으로 의미론적 검색 및 AI 기반 쿼리를 수행할 수 있습니다.
MCP 준수
이 구현은 LLM 애플리케이션이 표준화된 방식으로 서버와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜(MCP) 표준을 따릅니다. MCP 서버는 다음을 제공합니다.
- 리소스 : LLM에 데이터를 제공하는 읽기 전용 엔드포인트(메모리 콘텐츠)
- 도구 : 작업(메모리 생성, 업데이트, 쿼리)을 수행하는 기능적 엔드포인트
- 인증 : 보호된 리소스에 대한 보안 액세스를 위한 OAuth 2.0 구현
주요 구성 요소
- MCP 서버 : 다음을 제공하는 모델 컨텍스트 프로토콜의 FastAPI 기반 구현:
- PKCE 지원을 통한 OAuth 2.0 인증 및 권한 부여
- 벡터 임베딩을 사용한 메모리 저장
- 권한 기반 메모리 액세스 제어
- 메모리 기반 쿼리를 위한 LLM 통합
- Django 클라이언트 : MCP 서버와의 통합을 보여주는 웹 애플리케이션입니다.
- 사용자 등록 및 인증
- OAuth 2.0 클라이언트 구현
- 메모리 생성, 검색 및 관리 UI
- 페르소나 기반 쿼리 인터페이스
시스템 아키텍처
전체 아키텍처
Picard MCP 시스템은 다음 구성 요소로 구성된 클라이언트-서버 아키텍처를 따릅니다.
- MCP 서버 : 메모리 저장, 검색 및 AI 작업을 처리하는 핵심 백엔드 서비스
- 고성능 및 비동기 지원을 위해 FastAPI(FastMCP)로 구축됨
- 벡터 저장 및 의미 검색을 위해 pgvector 확장 기능이 있는 PostgreSQL을 사용합니다.
- 사용자, 메모리(벡터 임베딩 포함), OAuth 클라이언트 및 토큰에 대한 데이터 모델을 구현합니다.
- 데이터베이스 관리를 위해 Alembic 마이그레이션과 함께 SQLAlchemy ORM을 사용합니다.
- 안전한 인증 및 권한 부여를 위해 OAuth 2.0을 구현합니다.
- 메모리 임베딩을 위한 OpenAI API와 통합(text-embedding-3-small)
- 사용 가능한 경우 LLM 작업에 LangChain을 사용합니다.
- 상태 저장 및 상태 비저장 운영 모드를 모두 제공합니다.
- 더 나은 확장성을 위해 스트리밍 가능한 HTTP 전송을 지원합니다.
- Django 클라이언트 : MCP 서버와의 통합을 보여주는 웹 애플리케이션
- 사용자 등록, 인증 및 프로필 관리를 제공합니다.
- MCP 서버와의 보안 통신을 위해 OAuth 2.0 클라이언트를 구현합니다.
- 메모리 관리 및 쿼리를 위한 사용자 친화적인 인터페이스를 제공합니다.
- MCP 서버와 별도로 자체 PostgreSQL 데이터베이스를 사용합니다.
- Docker Infrastructure : 간편한 설정 및 확장을 위한 컨테이너화된 배포
- MCP 서버(포트 8001), Django 클라이언트(포트 8000) 및 PostgreSQL 데이터베이스에 대한 별도의 컨테이너
- 안전한 컨테이너 간 통신을 위한 네트워킹 구성
- 영구 데이터 저장을 위한 볼륨 마운팅
- 로컬 Docker 배포와 Render 클라우드 배포 모두와 호환 가능
인증 접근 방식
이 시스템은 두 가지 주요 인증 방법을 제공합니다.
1. 사용자 컨텍스트 토큰 흐름을 통한 직접 연결(권장)
이 간소화된 접근 방식을 사용하면 사용자는 Django 클라이언트에서 한 번만 인증하면 되므로 별도의 MCP 서버 인증이 필요하지 않습니다.
- 고객 등록 :
- Django 클라이언트는
/api/admin/clients/register
엔드포인트를 사용하여 MCP 서버에 등록합니다. - 등록에는 관리자 인증이 필요하며 클라이언트 이름, 리디렉션 URI 및 요청 범위가 포함됩니다.
- MCP 서버는 UUID 기반 클라이언트 ID와 암호학적으로 안전한 클라이언트 비밀번호를 발급합니다.
- 클라이언트 자격 증명은 안전하게 저장되어야 하며 클라이언트 측 코드에 노출되어서는 안 됩니다.
- Django 클라이언트는
- 사용자 인증 흐름 :
- 사용자는 Django 클라이언트로만 인증합니다.
- 사용자가 MCP 서버에 연결을 시작하면 Django 클라이언트는 MCP의
/api/user-tokens/user-token
엔드포인트에 서버 측 요청을 합니다. - 요청에는 다음이 포함됩니다.
- 클라이언트 자격 증명(client_id 및 client_secret)
- 사용자 정보(사용자 이름 및 이메일)
- 존재하지 않는 경우 사용자를 생성하는 옵션
- MCP 서버는 클라이언트 자격 증명을 확인하고 해당 사용자를 찾거나 생성합니다.
- MCP 서버는 사용자에게 액세스 토큰과 새로 고침 토큰을 발급합니다.
- Django 클라이언트는 이러한 토큰을 안전하게 저장하고 API 요청에 사용합니다.
- API 접근 :
- 클라이언트는 모든 API 요청에 대해 Authorization 헤더(
Authorization: Bearer {token}
)에 액세스 토큰을 포함합니다. - MCP 서버는 토큰 서명, 만료 및 대상자 클레임을 검증합니다.
- MCP 서버는 각 엔드포인트에 대해 범위 기반 권한을 적용합니다.
- 액세스 토큰이 만료되면 클라이언트는 새로 고침 토큰을 사용하여 새 토큰을 얻습니다.
- 클라이언트는 모든 API 요청에 대해 Authorization 헤더(
- 보안 기능 :
- 이 방법은 기밀 클라이언트만 사용할 수 있으므로 서버 간 보안이 제공됩니다.
- 각 토큰 요청에 대해 클라이언트 자격 증명이 검증됩니다.
- 재생 공격을 방지하기 위해 토큰은 사용 후 블랙리스트에 등록됩니다.
- 새로 고침 토큰은 회전을 사용합니다. 사용할 때마다 새 새로 고침 토큰이 생성되고 이전 토큰은 무효화됩니다.
2. PKCE를 사용한 표준 OAuth 2.0 인증 코드 흐름(레거시)
이 시스템은 또한 RFC 6749 및 RFC 7636 표준을 준수하여 보안 강화를 위해 PKCE를 포함한 표준 OAuth 2.0 인증 코드 흐름을 지원합니다. 이 접근 방식을 사용하려면 사용자가 클라이언트와 MCP 서버 모두에서 인증해야 합니다.
- 승인 흐름 :
- 사용자는 Django 클라이언트를 통해 로그인을 시작합니다.
- 클라이언트는 CSRF 보호를 위해 암호화된 난수
state
매개변수를 생성합니다. - 클라이언트는 임의의 PKCE
code_verifier
생성하고 SHA-256을 사용하여code_challenge
도출합니다. - 클라이언트는 다음을 사용하여 MCP 서버의
/authorize
엔드포인트로 리디렉션합니다.response_type=code
client_id
(UUID 형식)redirect_uri
scope
(공백으로 구분된 목록, 예:memories:read memories:write
)state
(CSRF 보호용)- PKCE 매개변수(
code_challenge
및code_challenge_method=S256
)
- MCP 서버는 사용자를 인증합니다(아직 인증되지 않은 경우)
- MCP 서버는 모든 매개변수를 검증하고 단기 승인 코드와 함께 클라이언트로 다시 리디렉션합니다.
- 토큰 교환 :
- 클라이언트는 반환된
state
매개변수가 권한 부여 요청에서 전송된 매개변수와 일치하는지 확인합니다. - 클라이언트는
/token
엔드포인트를 통해 액세스 및 새로 고침 토큰에 대한 승인 코드를 교환합니다. - MCP 서버는 JWT 액세스 토큰, 새로 고침 토큰, 만료 시간 및 부여된 범위를 발급합니다.
- 클라이언트는 반환된
- API 접근 :
- Direct Connect 접근 방식과 동일
데이터베이스 모델
MCP 서버는 다음과 같은 주요 모델을 갖춘 SQLAlchemy ORM을 사용합니다.
- 사용자 모델 :
- 이메일, 사용자 이름 및 해시된 비밀번호와 함께 사용자 정보를 저장합니다.
- 계정 상태에 대한 부울 플래그(is_active, is_superuser)가 포함됩니다.
- 일대다 관계를 통해 기억과 연결됨
- 벡터 저장을 통한 메모리 모델 :
- pgvector 확장을 사용하여 벡터 임베딩(1536차원)을 저장하고 쿼리합니다.
- 선택적 암호화를 통해 텍스트 콘텐츠를 지원합니다.
- 권한 제어(비공개/공개) 포함
- 시간 제한이 있는 메모리의 만료 날짜를 지원합니다.
- 외래 키 관계를 통해 사용자와 연결됨
- OAuth 모델 :
- OAuthClient : client_id, client_secret, 리디렉션 URI, 권한 범위를 포함한 클라이언트 애플리케이션 세부 정보를 저장합니다.
- AuthorizationCode : PKCE 지원을 통해 임시 승인 코드를 관리합니다.
- 토큰 : 만료 추적 기능이 있는 액세스 및 새로 고침 토큰을 저장합니다.
이 시스템은 Alembic을 사용하여 데이터베이스 마이그레이션을 수행하고 스키마 버전 관리와 손쉬운 업데이트를 보장합니다.
메모리 관리 시스템
Picard MCP의 핵심 기능은 다음 구성 요소를 사용한 메모리 관리를 중심으로 이루어집니다.
- 메모리 저장 :
- 메모리는 연관된 메타데이터와 함께 텍스트로 저장됩니다.
- 벡터 임베딩(텍스트 임베딩 3-소형 모델 사용)을 통해 의미 검색 기능이 활성화됩니다.
- 권한은 각 메모리에 누가 액세스할 수 있는지 제어합니다.
- 타임스탬프는 생성, 수정 및 만료를 추적합니다.
- 메모리 텍스트는 저장 시 암호화되지만 메타데이터는 검색 가능합니다.
- 모든 식별자는 확장성을 위해 순차적 정수 대신 UUID 형식을 사용합니다.
- 각 메모리는 OpenAI의 임베딩 모델을 사용하여 벡터 임베딩으로 변환됩니다.
- 임베딩을 사용하면 의미 검색 및 유사성 일치가 가능합니다.
- pgvector 확장 기능을 갖춘 PostgreSQL은 효율적인 벡터 저장 및 검색을 제공합니다.
- 권한 관리 :
- 각 메모리에는 권한 수준(비공개 또는 공개)이 있습니다.
- 개인 기억은 소유자만이 접근할 수 있습니다.
- 공개 메모리는 다른 사용자가 페르소나 쿼리를 위해 액세스할 수 있습니다.
- 시스템은 향후 권한 유형(예: 통계/집계 사용)에 대해 확장 가능하도록 설계되었습니다.
- 공유 메모리는 특정 사용자 또는 그룹이 액세스할 수 있습니다.
- 메모리 소유자는 언제든지 권한을 수정할 수 있습니다.
- 기억 회복 :
- 사용자는 필터링 및 정렬 옵션을 사용하여 자신의 메모리를 검색할 수 있습니다.
- 의미 검색을 통해 키워드뿐만 아니라 의미에 기반한 기억을 찾을 수 있습니다.
- 벡터 유사성(코사인)을 통해 데이터베이스 전체에서 관련 메모리를 찾을 수 있습니다.
- 쿼리 관련성에 따라 가장 유사한 상위 N개의 메모리가 반환됩니다.
- 권한 검사를 통해 사용자는 승인된 메모리에만 액세스할 수 있습니다.
- LLM 통합 :
- 메모리는 LLM 쿼리의 컨텍스트로 사용될 수 있습니다.
- 사용자는 공개 기억을 기반으로 페르소나를 생성할 수 있습니다.
- 다른 사용자는 이러한 페르소나를 쿼리하여 기억을 통해 응답을 얻을 수 있습니다.
- 시스템은 컨텍스트 관리 및 신속한 엔지니어링을 자동으로 처리합니다.
주요 특징
MCP 서버 기능
- OAuth 2.0 인증 :
- 보안 강화를 위한 PKCE를 사용한 승인 코드 흐름
- 범위 기반 권한 시스템(
memories:read
,memories:write
,memories:admin
) - 새로고침 토큰 지원을 통한 토큰 관리
- 클라이언트 등록 및 관리
- 메모리 관리 :
- 추억을 만들고, 읽고, 업데이트하고, 삭제하세요
- 의미 검색을 위한 벡터 임베딩
- 권한 기반 액세스 제어
- 효율적인 메모리 관리를 위한 일괄 작업
- 사용자 관리 :
- 사용자 등록 및 인증
- 프로필 관리 및 설정
- 활동 추적 및 분석
- 시스템 관리를 위한 관리자 제어
- AI 통합 :
- 임베딩 및 LLM 쿼리를 위한 OpenAI API 통합
- 사용자 기억 기반 페르소나 생성
- 컨텍스트 인식 쿼리 처리
- 사용자 정의 가능한 AI 매개변수 및 설정
Django 클라이언트 기능
- 사용자 인터페이스 :
- 데스크톱과 모바일에 적합한 깔끔하고 반응성 있는 디자인
- 직관적인 메모리 관리 인터페이스
- 고급 검색 및 필터링 옵션
- 페르소나 생성 및 쿼리 인터페이스
- OAuth 클라이언트 구현 :
- 안전한 토큰 저장 및 관리
- 자동 토큰 새로 고침
- 범위 기반 기능 가용성
- 오류 처리 및 복구
- 메모리 도구 :
- 리치 텍스트 지원을 통한 메모리 생성
- 일괄 가져오기 및 내보내기
- 권한 관리 인터페이스
- 태그 지정 및 분류
MCP 인터페이스
MCP 리소스
- 메모리 리소스 :
memories://{memory_id}
- 권한 검사를 통해 특정 메모리의 내용을 반환합니다.
- 매개변수: memory_id(UUID)
- 응답: 메타데이터가 포함된 메모리 콘텐츠
- 사용자 메모리 리소스 :
users://{user_id}/memories
- 권한 검사를 통해 특정 사용자에 대한 메모리 목록을 반환합니다.
- 매개변수: user_id(UUID), 선택적 필터
- 응답: 기억 요약 목록
MCP 도구
- 메모리 도구 제출 : 새로운 메모리를 만듭니다
- 매개변수: 텍스트(문자열), 권한(문자열)
- 반환: UUID로 생성된 메모리 세부 정보
- 메모리 업데이트 도구 : 기존 메모리를 업데이트합니다.
- 매개변수: memory_id(UUID), text(문자열)
- 반환: 업데이트된 메모리 세부 정보
- 메모리 삭제 도구 : 메모리를 삭제합니다
- 매개변수: memory_id(UUID)
- 반환: 성공 확인
- 쿼리 메모리 도구 : 메모리에 대한 의미 검색을 수행합니다.
- 매개변수: 쿼리(문자열), 제한(정수)
- 반환: 관련 메모리 목록
- 사용자 쿼리 : 메모리를 기반으로 사용자의 페르소나를 쿼리합니다.
- 매개변수: user_id(UUID), query(문자열)
- 반환: 사용자의 기억에 기반한 응답
API 엔드포인트
OAuth 엔드포인트
- 클라이언트 등록 :
/register
- 방법: POST
- 설명: 새로운 OAuth 클라이언트 등록
- 요청: 클라이언트 세부 정보(ID, 비밀번호, 리디���션 URI, 범위)
- 응답: 클라이언트 자격 증명 및 등록 정보
- 권한 부여 :
/authorize
- 방법: GET
- 설명: OAuth 권한 부여 흐름 시작
- 매개변수: response_type, client_id, redirect_uri, scope, state, code_challenge, code_challenge_method
- 응답: 승인 코드를 사용하여 클라이언트로 리디렉션합니다.
- 토큰 교환 :
/token
- 방법: POST
- 설명: 토큰에 대한 승인 코드 교환
- 요청: grant_type, code, redirect_uri, client_id, client_secret, code_verifier
- 응답: 액세스 토큰, 새로 고침 토큰, 만료 및 범위 정보
메모리 엔드포인트
- 메모리 가져오기 :
/api/tools
(도구:get_memories
)- 방법: POST
- 설명: 선택적 필터링을 사용하여 메모리 검색
- 인증: 베어러 토큰
- 요청: 선택적 필터 매개변수(user_id, 권한, 만료 상태)
- 응답: 사용자가 접근 가능한 메모리 목록
- 요청 예시:지엑스피1
- 메모리 제출 :
/api/tools
(도구:submit_memory
)- 방법: POST
- 설명: 새로운 추억을 만들어 보세요
- 인증: 베어러 토큰
- 요청: 메모리 텍스트, 권한 수준 및 만료 날짜(ISO 8601 형식, 예: "2025-12-31T23:59:59Z")
- 응답: UUID 식별자를 포함한 메모리 세부 정보가 생성되었습니다.
- 요청 예시:
- 기억 검색 :
/api/tools
(도구:retrieve_memories
)- 방법: POST
- 설명: 인증된 사용자에 대한 모든 메모리를 가져옵니다.
- 인증: 베어러 토큰
- 응답: UUID 식별자가 있는 메모리 객체 목록
- 요청 예시:
- 메모리 업데이트 :
/api/tools
(도구:update_memory
)- 방법: POST
- 설명: 기존 메모리 업데이트
- 인증: 베어러 토큰
- 요청: 메모리 ID, 업데이트된 콘텐츠 및 선택적으로 업데이트된 만료 날짜(ISO 8601 형식)
- 응답: 메모리 세부 정보가 업데이트되었습니다.
- 요청 예시:
- 권한 수정 :
/api/tools
(도구:modify_permissions
)- 방법: POST
- 설명: 메모리 권한 수준 업데이트
- 인증: 베어러 토큰
- 요청: 메모리 UUID 및 새로운 권한 수준
- 응답: 메모리 세부 정보가 업데이트되었습니다.
- 요청 예시:
- 쿼리 사용자 :
/api/tools
(도구:query_user
)- 방법: POST
- 설명: 메모리를 기반으로 사용자의 페르소나를 쿼리합니다(다른 사용자의 경우 공개, 자신의 경우 공개+비공개)
- 인증: 베어러 토큰
- 요청: 사용자 UUID 및 쿼리 프롬프트
- 응답: 만료되지 않은 메모리를 포함하는 JSON(모든 유효한 메모리 또는 쿼리와 가장 유사한 상위 N개 메모리)
- 응답: 사용자의 기억을 기반으로 AI가 생성하는 응답
- 요청 예시:
설정 및 배포
필수 조건
- Docker와 Docker Compose
- 파이썬 3.10+
- OpenAI API 키
전체 설정 가이드
- 저장소를 복제합니다.
- 두 구성 요소에 대한 환경 파일을 만듭니다.
- 구성을 설정하려면 환경 파일을 편집하세요.
mcp_server/.env
에서: 데이터베이스 자격 증명, OpenAI API 키 및 관리자 자격 증명을 설정합니다.django_client/.env
에서: 데이터베이스 자격 증명과 OAuth 설정을 설정합니다.
- Docker Compose를 사용하여 서비스를 시작합니다.그러면 다음 서비스가 시작됩니다.
db-mcp
: MCP 서버용 PostgreSQL 데이터베이스db-django
: Django 클라이언트용 PostgreSQL 데이터베이스mcp_server
: http://localhost:8001 에서 실행되는 MCP 서버django_client
: http://localhost:8000 에서 실행되는 Django 클라이언트
- MCP 서버에 대한 관리자 사용자를 만듭니다.이렇게 하면 환경 변수에 지정된 자격 증명을 사용하는 관리자 사용자가 생성됩니다.
- Django 클라이언트를 MCP 서버에 등록합니다.이렇게 하면 Django 클라이언트가 MCP 서버에 등록되고 Django 클라이언트의
.env
파일이 클라이언트 자격 증명으로 업데이트됩니다. - 애플리케이션에 접속하세요:
- MCP 서버: http://localhost:8001
- Django 클라이언트: http://localhost:8000
- Django 클라이언트에서 사용자 계정을 만들고 애플리케이션 사용을 시작하세요.
초기 테스트
설정이 올바르게 작동하는지 확인하려면 다음 테스트를 실행하세요.
- MCP 서버 테스트 :이렇게 하면 OAuth 엔드포인트, 관리 기능, 메모리 관리를 포함하여 MCP 서버에 대한 모든 단위 테스트가 실행됩니다.
- Django 클라이언트 테스트 :이는 Django 클라이언트와 MCP 서버의 통합을 테스트합니다.
- 수동 테스트 :
- http://localhost:8000/register 에서 Django 클라이언트에 사용자 계정을 만듭니다.
- OAuth를 통해 MCP 서버에 로그인하고 연결합니다.
- 추억을 만들고, 검색하고, 관리하세요
- 의미 검색 기능을 테스트하세요
보안 고려 사항
데이터 보호
- 메모리 텍스트 콘텐츠는 PKCS7 패딩이 있는 CBC 모드에서 AES-128을 사용하여 Python의 Fernet 대칭 암호화를 사용하여 암호화되며 메타데이터는 검색 가능한 상태로 유지됩니다.
- 개인 식별 정보(PII)는 텍스트 필드 암호화를 통해 보호됩니다.
- 액세스 토큰은 노출을 제한하기 위해 1시간의 만료 시간을 갖습니다.
- 새로 고침 토큰은 수명이 길지만 회전을 사용합니다. 사용할 때마다 새 새로 고침 토큰이 생성되고 이전 토큰은 무효화됩니다.
- OAuth 토큰은 Django 클라이언트의 PostgreSQL 데이터베이스에 안전하게 저장됩니다.
UUID 사용
시스템의 모든 식별자는 여러 가지 이유로 순차적인 정수 대신 UUID v4 형식을 사용합니다.
- 보안 : UUID는 시스템 정보나 레코드 수를 노출하지 않습니다.
- 확장성 : 데이터베이스 조정 없이 UUID를 생성할 수 있으므로 분산 시스템이 가능합니다.
- 추측 불가능 : UUID는 사실상 추측이 불가능하므로 열거형 공격이 방지됩니다.
- 일관성 : 시스템 전체에서 UUID를 사용하면 다른 서비스와의 통합이 간소화됩니다.
API의 모든 ID(user_id, memory_id, client_id 등)는 UUID 형식이어야 합니다.
OAuth 모범 사례
- 모든 OAuth 통신은 프로덕션 환경에서 HTTPS를 사용해야 합니다.
- 승인 코드는 한 번만 사용 가능하며 유효 기간이 짧습니다(최대 5분).
- PKCE는 심층 방어를 위해 기밀 클라이언트를 포함한 모든 클라이언트에게 필요합니다.
- 새로 고침 토큰은 장기적으로 유효하지만 사용자 또는 관리자가 취소할 수 있습니다.
- 시스템은 취소된 토큰에 대한 토큰 블랙리스트를 유지합니다.
선적 서류 비치
API 문서
MCP 서버에는 모든 엔드포인트에 대한 Swagger/OpenAPI 문서가 포함되어 있습니다.
- 서버가 실행 중일 때
/docs
에서 Swagger UI에 액세스합니다. - OpenAPI 사양은
/openapi.json
에서 확인할 수 있습니다. - 모든 API 엔드포인트는 요청/응답 스키마와 예제를 통해 완전히 문서화됩니다.
추가 문서 파일
- TESTING.md : 애플리케이션 테스트를 위한 포괄적인 가이드
- 구현된 모든 테스트와 그 목적을 설명합니다.
- 로컬 및 CI/CD에서 테스트를 실행하기 위한 지침
- 문서 테스트 범위를 확인하고 추가 테스트가 필요한 영역을 식별합니다.
- DEBUGGING.md : 문제와 해결 방법을 추적합니다.
- 아직 수정되지 않은 알려진 버그를 기록합니다.
- 이전에 해결된 버그와 그 해결책을 문서화합니다.
- 일반적인 문제에 대한 문제 해결 지침을 제공합니다.
- PLANNING.md : 사이트 구현에 필요한 작업의 세부 내용을 추적합니다.
- 사이트를 구현하는 데 필요한 작업 및 하위 작업을 나열합니다.
- 체크박스로 작업이 완료되었는지 문서화합니다.
전개
이 프로젝트에는 로컬 개발을 위한 docker-compose.yml
과 Render에 배포하기 위한 render.yaml
청사진이 포함되어 있습니다. 동일한 코드베이스가 Docker 컨테이너에서 로컬로 실행되며 Render 클라우드 서비스에 배포될 때도 작동합니다.
MCP 서버 배포
- Docker 배포 (프로덕션에 권장):Docker Compose 구성에는 다음이 포함됩니다.
- 컨테이너 간 통신을 위한 네트워크 구성
- 영구 데이터 저장을 위한 볼륨 마운트
- .env 파일에서 환경 변수 구성
- 포트 매핑(Django 클라이언트의 경우 8000, MCP 서버의 경우 8001)
- 서비스 종속성에 대한 상태 점검
- Render Cloud 배포 : 포함된
render.yaml
블루프린트를 사용하여 Render에 배포합니다.
특허
MIT
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
정치적 선호도와 미래에 대한 비전을 관리하기 위한 모델 컨텍스트 프로토콜(MCP)의 Django 기반 구현입니다.
Related MCP Servers
- AsecurityAlicenseAqualityModel Context Protocol (MCP) is a new, standardized protocol for managing context between large language models (LLMs) and external systems. In this repository, we provide an installer as well as an MCP Server for Upstash Developer API's.Last updated -165827TypeScriptMIT License
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that optimizes token usage by caching data during language model interactions, compatible with any language model and MCP client.Last updated -4JavaScript
- -securityFlicense-qualityA Model Context Protocol service that wraps Django's migration commands as MCP endpoints, making it easy to manage migrations across multiple services and integrate with CI/CD pipelines.Last updated -Python
- -securityFlicense-qualityA Python-based implementation of the Model Context Protocol that enables communication between a model context management server and client through a request-response architecture.Last updated -Python