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
요구사항
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 started —
composer 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**는 소스에서 생성됩니다