0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCPサーバーをGithub SpecKitで構築してみた

Posted at

学べること

  • Github Spec Kit(以下、SpecKit)の大まかな使い方
  • MCPサーバー構築方法
  • 作成したソースコード

SDDの各コマンド(後述)ごとにコミットしたGithubリンクも載せておきます。各段階の変化をみれるので分かりやすいはず。

開発を始める前に

Vibe Codingとは

「音楽を聴きながら気持ちよくコーディング」…ではなく(笑)、AIと人間が「ノリ」を合わせて進めるコーディング体験を指します。ペアプロの相方がAIになったイメージで、思考の流れを止めずに試行錯誤していけるのが魅力。

👉 補足: Vibe Codingは「AIがテンポを作り、人間がそこに乗っかる」協働スタイル。正確性よりも「まず動かす→修正する」の反復が中心で、後述のSDDのようにコマンドでフェーズを区切ると特に効果的。

SDD(Spec-Driven Development)とは?

「仕様からすべてが始まる開発スタイル」。
通常のTDD(テスト駆動開発)が「テスト → コード」なら、**SDDは「仕様 → 計画 → タスク → 実装」**という流れをAIで補助しつつ回していきます。

👉 補足: SDDは「AIに誤魔化されない」ための開発手法でもある。仕様を先に定義しておけば、AIが勝手に最新フレームワークに飛びつくリスクを抑え、プロジェクトの一貫性を守れる。

SpecKitとは?

SpecKitは、AIエージェントに開発のプロセスを「スラッシュコマンド」で指示できるキット。

コマンドを叩くだけで仕様化・計画化・実装タスク化をAIに促せる。

👉 補足: 「LLM用のGitフロー補助ツール」と言ってもいい。開発者が「憲法(constitution)」を定め、AIにタスクを割り振り、最後は人間がレビューする流れを強制できるため、暴走を防ぎつつ生産性を上げる。

開発環境

  • mac、iTerm(CLI)、VS Code
  • LLM:gemini-2.5-pro
  • Gアカウントのみで簡単に利用可。比較的無料枠が大きかったので。

いざ、開発開始

まず何を作るか?

  • Why:Verが古いLaravelを使っていているが、AIコーディング支援は新しいVerの提案が多く毎回チェックしないといけない
  • What:特定のVerに制限してAIコーディング支援してくれるMCPが欲しい
  • How:SpechKitを使ってMCPサーバーを構築する
  • SpecKit選定基準
    • 2025年9月リリースで他が触っていないので選考優位ありそう
    • CLIベースなので簡単に試すことができそう(Kiroも気になったけど)

1. Speckitをインストール

たくさん記事あるので省略

2. Start - using slash commands with your AI agent:

Geminiから以下を指示します。
コマンドはこんな感じ、順に実施していきます。(わくわく)

  • 2.1 /speckit.constitution - Establish project principles
  • 2.2 /speckit.specify - Create baseline specification
  • 2.3 /speckit.plan - Create implementation plan
  • 2.4 /speckit.tasks - Generate actionable tasks
  • 2.5 /speckit.implement - Execute implementation

2.1 /speckit.constitution - Establish project principles

まずは、プロジェクトで絶対守る原則みたいなものを作成します。

抽象的すぎて逆に何入力すればわからん

/speckit.constitution の目的 • プロジェクトで「これは絶対に守るべきルール/制約」を明示する

仕様 → 計画 → タスク → 実装の各フェーズで、判断基準として使う • 技術的判断や設計選択の際のレール を用意する

後から仕様やコードが逸脱しないようガードレールとなる

Spec Kit のドキュメントでは、/speckit.constitution コマンドを使って、プロジェクトの「開発方針」「原則」「制約条件」を定義するよう案内されています。また、Microsoft の記事では、constitution ドキュメントを「プロジェクトにとって譲れない非交渉原則 (non-negotiable principles)」と呼んでいます。Medium 記事でも、「Constitution がプロジェクトの DNA」だという表現で、仕様や設計がその上に重なるべきだという考え方が紹介されています。

/speckit.constitution laravel5.6の開発支援に特化したコーディング支援のMCPサーバーを作成したい

注)このプロンプトだとMCPサーバー自体をLaravel5.6で実装を始めてしまった。システム基盤はモダンで、コーディング支援の対象が5.6と明示する必要あり。

ソースコード

2.2 /speckit.specify - Create baseline specification

/speckit.specify(または /specify)の目的・機能 • プロジェクトや機能の 「何を作るか (What)」「なぜそれが必要か (Why)」 を記述する段階。技術スタックや実装詳細はまだ入れない。

ユーザー視点、ユースケース、振る舞い、成功基準、制約条件(非機能要件)などを明示する。

曖昧性や抜けを検出・修正するプロセスを通じて、仕様を洗練していく。

仕様が完成したら次に /speckit.plan → /speckit.tasks → /speckit.implement という流れで開発を進める。

/speckit.specify ソフトウェアエンジニアがLaravel5.6で開発する際に参考にするAIコーディング支援用のAIエージェントを提供するMCPサーバーを構築したい。

ソースコード

2.3 /speckit.plan - Create implementation plan

/speckit.plan(または plan フェーズ)は、/specify で定義した仕様(「何を作るか」)をもとに、「どう実装するか」

=技術設計、アーキテクチャ、技術スタック、構成、制約条件などを定める段階です。

Spec Kit のドキュメントでも、/plan フェーズで「技術的な選択肢」を提示するように書かれています。

/speckit.plan フレームワークはFastMCPでMCPサーバーとしてバックエンドのみ提供。Dockerコンテナー開発をベースとする。

ソースコード

2.4 /speckit.tasks - Generate actionable tasks

チェックリスト形式で実装計画を作成します。

チェックリスト形式なので、途中のやり直しも簡単。

/speckit.tasks
※ 実行方法は特に引数は必要なく、コマンド叩くだけ

ソースコード

2.5 /speckit.implement - Execute implementation

チェックリストに応じて実際にコーディングが開始される。

ここが醍醐味。かつ一番時間が掛かり、レビュー力が試される。(後述のフロントエンドしか勝たんに繋がります)

ペアプロしてる気分で「こうしました」とか、バグがあると何度もトライして「三度目の正直です。今度こそテストが通るはず」みたいな発言があり、本当にペアプロしてる気分。

/speckit.implement
※ 実行方法は特に引数は必要なく、コマンド叩くだけ

ソースコード
めっちゃ何度も叩きます、、

テスト・検証

以下のようにドキュメントを整備してくれます。(全自動)

/001-laravel-5-6

  • spec.md: 機能仕様書
  • plan.md: 実装計画書
  • tasks.md: タスクリスト
  • research.md: 技術調査記録
  • data-model.md: データモデル定義
  • quickstart.md: クイックスタートガイド
  • contracts/: APIコントラクト
  • checklists/: 品質チェックリスト

テスト結果

Query: "Laravel make:configの使い方を教えて"

--- AI Assistant Response ---
申し訳ありませんが、Laravel5.6の公式ドキュメントには`make:config`のコマンドについての情報は含まれていません。
このバージョンでは、`make:config`コマンドは存在しない可能性があります。通常、Laravelでの設定ファイルの管理は、
`config`ディレクトリ内に手動でPHPファイルを作成することで行われます。新しい設定を追加したい場合は〜省略

MCPサーバー構築方法

MCPとは?

Model Context Protocol(言わずもがな)

AIエージェントとアプリケーションをつなぐ標準プロトコルで、拡張可能な「AIの新しいAPI」的な存在。

MCPサーバーとは?

AIとやりとりするための裏方サーバー。
自前の仕様を守らせつつ、AIにコーディング支援をさせる「仲介役」。

参考書籍
[PythonではじめるMCP開発入門](https://amzn.to/4qwXWQG)


分かりやすい!

最新のMCP開発方法がまとまっている
薄いのが嬉しいw

FastMCPを使ってみる

公式:https://gofastmcp.com/getting-started/welcome

構築手順(ソースコード)

  • FastMCPなど環境構築
  • Laravelの公式ドキュメントからベクトルストアのアーティファクトを作成しRAG化。
  • 検索システムを構築
  • 詳細はソースコードを。チェックリスト形式綺麗にまとめてくれてます。

inspectorでテスト実施

MCPサーバの設定等を読み込みAPIの仕様を確認できるツール(超便利

npx @modelcontextprotocol/inspector uv run hgehoge.py

少しだけ見えた未来

  • 今回はバックエンドがメインだったけど、フロントやインフラ、CI/CD等構築していく。この辺もSDDでやれそう

  • SpecKit配下のscriptsやtemplatesを自分(チーム)用にカスタマイズしていく。
    このカスタマイズが組織のコアコンピタンスになっていきそう

  • フルスタックエンジニアしか勝たん?

  • 当たり前かもですが、仕様把握も踏まえ、全ての工程を一人で作るため、ソフトウェアエンジニアリング全般の知識が必要。

    • 例えば仮に自動テストが通ったとしても、まだ人がレビューしないと危険=横断的な知識が必要
    • SDDできる人(=フルスタックエンジニア)とそうじゃない人の二極化が進みそう。前者は希少人材として、すごいもてはやされる。

よもやま話

  • uv入れてと指示したら、uvicorn入ったw、FastMCPじゃなくてFastAPIの実装始めたw(プロンプトとLLMの特性上仕方ない)・・・今後ここは人間が注意しないといけない領域
  • テストでVScodeのCodexにMCPサーバー追加してみた
  • Geminiとお互いに情報交換してエラー解析し出した。(A2Aの走り?)
  • LLM無料枠で試したので補充のため3日かかってますが、正味3時間程度。
  • 本当はLLMの実際のやりとり見てもらうのが一番分かりやすいですが、生々しいやりとりのため割愛(- -;)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?