PHP SDK 개요

PHP SDK 개요

MCP(Model Context Protocol)는 애플리케이션이 LLM에 컨텍스트를 표준화된 방식으로 제공하게 해 줘요. 컨텍스트를 제공하는 일과 LLM 상호작용 자체를 분리하는 것이 핵심이에요. 이 문서는 그 표준의 공식 PHP SDK 소개입니다.

출처: MCP PHP SDK

이 SDK는 PHP 재단Symfony 프로젝트의 협업으로 만들어졌어요. 이것으로:

  • MCP 서버를 만든다 — 도구·리소스·프롬프트를 모든 MCP 호스트에 노출
  • MCP 클라이언트를 만든다 — 어떤 MCP 서버에든 연결
  • 두 표준 트랜스포트를 모두 사용 — STDIO와 Streamable HTTP

참고 — 이 SDK는 첫 메이저 릴리스까지 실험적 상태예요. 다음 계획은 로드맵에서 확인하세요.

요구사항

PHP 8.1+.

설치

composer require mcp/sdk

HTTP 서버나 클라이언트가 필요로 하는 선택적 PSR 패키지는 설치 문서를 참고하세요.

예제

server.php 파일을 만듭니다:

<?php

require __DIR__.'/vendor/autoload.php';

use Mcp\Capability\Attribute\McpResource;
use Mcp\Capability\Attribute\McpTool;
use Mcp\Server;
use Mcp\Server\Transport\StdioTransport;

class Calculator
{
    /**
     * Adds two numbers.
     */
    #[McpTool]
    public function add(int $a, int $b): int
    {
        return $a + $b;
    }

    #[McpResource(uri: 'config://calculator/settings')]
    public function settings(): array
    {
        return ['precision' => 2];
    }
}

Server::builder()
    ->setServerInfo('Calculator', '1.0.0')
    ->setDiscovery(__DIR__, ['.'], excludeDirs: ['vendor'])
    ->build()
    ->run(new StdioTransport());

이것으로 완전한 MCP 서버가 완성돼요. add라는 도구 하나와 config://calculator/settings라는 리소스 하나를 노출합니다.

속성 탐색은 symfony/finder가 필요해요(composer require symfony/finder). 없어도 서버는 시작하지만 아무것도 발견하지 못하고 경고만 로깅합니다.

여기서 적지 않은 것들을 보세요: JSON 스키마도 없고(int $a, int $b가 곧 스키마), 요청 파싱도, 직렬화도, 프로토콜 처리도 없어요. 타입 힌트와 docblock이 있는 PHP 클래스를 쓰면 나머지는 SDK가 처리합니다.

첫 서버에서 실행 방법을, Inspector로 시험에서는 클릭해볼 수 있는 UI로 여는 방법을 다룹니다.

다음으로 갈 곳

  • Get startedcomposer require부터 실제 MCP 호스트와 통신하는 서버까지
  • 서버가 노출하는 것 — 도구·리소스·프롬프트 — 은 Servers
  • 클라이언트 앞에 서버를 두는 것(STDIO, HTTP, 기존 Symfony/Laravel 앱)은 Running your server
  • 등록한 함수 안에서 무엇을 쓸 수 있는지는 Inside your handler
  • 반대 쪽, MCP 서버를 사용하는 애플리케이션은 Clients
  • 두 프로토콜 시대와 2026-07-28이 바꾼 내용은 Protocol versions
  • 무엇이 얼마나 오래 폐기되는지, 스펙 티어 지원은 **Deprecation policy**와 SDK tier target
  • 완전하고 실행 가능한 프로젝트는 Examples
  • 정확한 시그니처를 찾는다면 **API Reference**는 소스에서 생성됩니다

더 알아보기 (Learn more)