スキル一覧に戻る
stateless-mcp-xserver-buildertek.jp ORIGINALv1.0.0
レンタルサーバー(Xserver)で常時起動不要の Stateless MCP サーバーを構築する PHP ガイド
Node.js や Python サーバーの常時起動プロセス不要!PHP + JSON-RPC 2.0 (Streamable HTTP) を組み合わせ、既存のエックスサーバー環境を完全な MCP サーバー化する実装テンプレート。
Author: tek.jp Lab
Updated: 2026-08-06
Agents: Antigravity · Claude Code · Cursor · Windsurf
#MCP#JSON-RPC#PHP#Xserver#Serverless#オリジナルノウハウ
Stateless MCP Server Builder for PHP & Static Hosts
1. 目的と基本原理
エックスサーバー等の一般的なレンタルサーバーにおいて、Node.jsやPythonの常時起動プロセス(デーモン)を用いずに、PHPと静的ファイル(JSON)の組み合わせだけで完全な MCP (Model Context Protocol) サーバーを構築・運用するための実装規範である。
2. アーキテクチャ構成
- SSGビルド時:
scripts/prerender.mjs等を用いて、MCPで提供するリソースデータやツール定義をdist/assets/data/*.jsonなどの静的ファイルとして全自動出力する。 - MCP Endpoint (
public/api/mcp.php): JSON-RPC 2.0仕様 (initialize,tools/list,tools/call,resources/list,resources/read) を実装。POSTリクエストを受け取り、JSON-RPCリクエストを解析して静的JSONから検索・返却する。- CORS & Xserver 対策:
Access-Control-Allow-Origin: *をヘッダーで返す。Access-Control-Allow-Headers: Content-Type, Authorization, MCP-Session-Id, Mcp-Versionを許可する。public/api/.htaccessでRequire all grantedを設定し、WAF等による403 Forbiddenを回避する。- リクエストには必ず
jsonrpc: "2.0"、method、id(通知以外) が含まれる。 - レスポンスには必ず
jsonrpc: "2.0"、id、およびresultまたはerrorのいずれかが含まれる。 - 禁止事項: 開発環境以外で無制限の CORS を許可したままにすること。
- ただし、Claude Desktop 等のローカルクライアントからアクセスする場合は
*が必要になるケースがあるため、要件に応じてAccess-Control-Allow-Originを適切に絞る。 - [ ] エンドポイントのPHPスクリプトが
php://inputからJSONを読み込んでいるか。 - [ ]
initializeメソッドに対して正しいケイパビリティ(capabilities)を返しているか。 - [ ] ツールやリソースのリストが正しくフォーマットされているか。
- [ ] エラー時のレスポンスが JSON-RPC 2.0 準拠の error オブジェクトになっているか。
3. 実装上の必須ルール (Mandatory Rules)
3.1. リクエストボディの確実な取得
PHP環境では、$_POST 変数は application/json の場合に自動でパースされない。必ず php://input を読み込むこと。
❌ 悪い例(POSTデータを正しく取得できない)
$request = $_POST; // application/jsonの場合は空になる
✅ 良い例(ストリームから取得してパース)
$rawInput = file_get_contents('php://input');
$request = json_decode($rawInput, true);
if (json_last_error() !== JSON_ERROR_NONE) {
// パースエラー時の対応
}
3.2. JSON-RPC 2.0 仕様の厳守
3.3. HTTPステータスコードの扱い
JSON-RPCの仕様に従い、リクエストのパース自体が成功し、プロトコル上のエラー(例: メソッドが見つからない)を返す場合も HTTP ステータスは 200 OK にする。HTTP 4xx/5xx は致命的なサーバーエラーやルーティングエラーの場合にのみ使用する。
4. セキュリティとCORS(禁止事項)
5. 出力チェックリスト
スキルレジストリ一覧 (6)
OFFICIAL & COMMUNITY SKILLSAI文章の平坦さを解消する「認知リズムライティング」規範
ORIGINAL
code: cognitive-rhythm-writing
#ライティング#認知心理学#推敲#日本語思考#オリジナル規範
code: stateless-mcp-xserver-builder
#MCP#JSON-RPC#PHP#Xserver#Serverless
code: living-press-design-system
#デザインシステム#CSS#LIVING PRESS#Dark Mode#UI/UX
code: gsc-redirect-zero-seo
#SEO#Google Search Console#Apache#Trailing Slash#SSG
code: chrome-extension-mv3-builder
#Chrome Extension#Manifest V3#TypeScript#Service Worker
code: prompt-engineering-framework
#プロンプトエンジニアリング#CoT#LLM最適化#指示文設計