MCP协议服务器

基于PHP 8.1+的MCP协议服务器实现,支持JSON-RPC协议及stdio和Streamable HTTP传输,适用于与Cursor、Claude Code等MCP客户端的交互。

  • by quanzo
  • PHP
  • 混合部署
  • 更新于

使用说明

MCP(模型上下文协议)——PHP

PHP 8.1+上的标准MCP服务器实现:JSON-RPC协议+传输 标准 和 可流式传输的HTTP.

与Cursor、Claude Code、Codex和其他MCP客户端兼容。

机会

  • 生命周期: initialize / notifications/initialized / ping
  • 工具: tools/list, tools/call
  • 资源: resources/list, resources/read
  • JSON Schema参数验证
  • Stdio(换行符分隔的JSON)
  • Streamable HTTP(单一端点) /mcp)
  • PSR登录到文件(不是stdout)
  • 错误输入稳定性(JSON-RPC error) isError(没有摔倒)

要求

  • PHP 8.1+
  • 作曲家

安装

composer install
mkdir -p logs config data

STDIO(代理)

php bin/mcp_server.php

Конфиг光标/克劳德桌面:

{
  "mcpServers": {
    "quanzo-mcp": {
      "command": "php",
      "args": ["/var/www/mcp/bin/mcp_server.php"]
    }
  }
}

可流式传输的HTTP

# По умолчанию 127.0.0.1:8080
php bin/http_server.php

# Amp-вариант
php bin/http_server_amp.php 127.0.0.1 8080

端点: http://127.0.0.1:8080/mcp

可选:

MCP_HTTP_BEARER=token php bin/http_server.php -b token

代理配置(HTTP):

{
  "mcpServers": {
    "quanzo-mcp-http": {
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

快速检查

php bin/test_client.php

结构

bin/
├── mcp_server.php          # stdio MCP
├── http_server.php         # Streamable HTTP (php -S)
├── http_server_amp.php     # Streamable HTTP (Amp)
└── test_client.php

src/classes/
├── McpServer.php           # протокольное ядро
├── McpServerFactory.php
├── transport/
│   ├── StdioTransport.php
│   ├── StreamableHttpTransport.php
│   └── ...
├── commands/               # tools
├── resources/
├── client/MCPClient.php
└── dto/mcp/                # DTO ответов MCP

docs/
├── overview.md
├── quickstart.md
├── mcp-protocol.md
├── streamable-http.md
├── commands.md
├── resources.md
└── ...

文档

  • 概述: docs/overview.md
  • 快速启动: docs/quickstart.md
  • 协议: docs/mcp-protocol.md
  • HTTP: docs/streamable-http.md
  • 细微差别/错误: docs/mcp-nuances.md
  • 命令/资源: docs/commands.md, docs/resources.md
  • 开发: docs/development.md