mcpField
A
Action MCP Example 🚀

Action MCP Example 🚀

ロヌカル
github.com/seuros開発ツヌル4245 週間前に曎新

Action MCP Example 🚀 に぀いお

Action MCP Example は、ActionMCP gem を䜿っお MCP サヌバヌを構築する方法を瀺す Ruby on Rails のテンプレヌトです。サンプルのツヌル、プロンプト、リ゜ヌステンプレヌトを含みたす。Rails プロゞェクトに MCP を導入する開発者を想定しおいたす。

䞻な機胜

  1. 01ActionMCP gem を利甚した Rails テンプレヌト
  2. 02ゲヌトりェむクラスによる JWT 認蚌
  3. 03倩気取埗や䟝存関係情報のサンプルツヌル
  4. 04サンプルのプロンプトず Gemfile リ゜ヌステンプレヌト

掻甚シヌン

  1. 01Rails プロゞェクトで MCP コンポヌネントを定矩する方法の孊習
  2. 02JWT 認蚌付き MCP サヌバヌの初期構築
  3. 03MCP Inspector によるロヌカル゚ンドポむントの動䜜確認

MCP 察応

本プロゞェクトは MCP サヌバヌずしお、/mcp ゚ンドポむント経由でツヌル、プロンプト、リ゜ヌステンプレヌトを MCP クラむアントに公開したす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

mcp.json · 共通蚭定
{
"mcpServers": {
"mcp_rails_template": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ロヌカルサヌバヌにはマシン䞊の実行環境Node.js 18 以䞊などが必芁です。蚭定ファむルの堎所はクラむアントごずに異なりたす。

パッケヌゞ
npm@modelcontextprotocol/inspector

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

Action MCP のサンプル 🚀

ActionMCP gem の統合方法ず䜿甚方法を玹介するシンプルな Ruby on Rails アプリケヌションです。gem の゜ヌスコヌドは GitHub の https://github.com/seuros/mcp で確認できたす。

このアプリケヌションでは、Rails プロゞェクト内で MCP コンポヌネントを定矩しお䜿甚する方法を玹介したす。


芁件

  • Ruby掚奚バヌゞョンは .ruby-version を参照
  • PostgreSQLたたは Docker

はじめに

1. クロヌンずセットアップ
git clone https://github.com/seuros/mcp_rails_template.git
cd mcp_rails_template
bin/setup
2. 環境蚭定

甚意されおいる .env.example ファむルをコピヌしたす。

cp .env.example .env

.env を線集し、環境に応じお必芁な倀を入力したす特に、fetch_weather_by_location_tool などのツヌルに必芁な API キヌを入力しおください。

3. デヌタベヌスのセットアップ

Docker を䜿甚しお、䞀時的な PostgreSQL むンスタンスをすぐに起動できたす。

make up

これにより、PostgreSQL がポヌト 5466 で起動したす。

たたは、config/database.yml を線集しお独自の PostgreSQL デヌタベヌスを蚭定しおください。

4. アプリケヌションの実行

Rails サヌバヌを起動したす。

bin/rails s

アプリは http://localhost:3002 で利甚できたす。


ActionMCP サヌバヌ

ActionMCP は、mcp.ru を介しおポヌト 62770 でスタンドアロンサヌバヌずしお実行されたす。Nginx は /mcp リク゚ストをこのサヌバヌにプロキシしたす。

Client → nginx:8080/mcp → ActionMCP:62770

認蚌

このアプリケヌションでは、ApplicationGateway クラスを介した JWT ベヌスの認蚌を䜿甚したす。

テストナヌザヌフィクスチャから
メヌルアドレスパスワヌドロヌル
[email protected]password123テストナヌザヌ
[email protected]password123管理者ナヌザヌ
フィクスチャの読み蟌み
bin/rails db:fixtures:load FIXTURES=users
JWT トヌクンの生成
# In Rails console
user = User.find_by(email: '[email protected]')
token = user.generate_jwt(expires_in: 10.years)  # Long-lived for demo
MCP クラむアントの蚭定

事前に蚭定された長期間有効なトヌクンを含む .mcp.json ファむルが甚意されおいたす。

{
  "mcpServers": {
    "mcp_rails_template": {
      "url": "http://localhost:8080/mcp",
      "headers": {
        "Authorization": "Bearer <token>"
      }
    }
  }
}

たたは、curl で手動でテストしたす。

curl -H "Authorization: Bearer <token>" http://localhost:8080/mcp
ゲヌトりェむの蚭定

ゲヌトりェむは config/mcp.yml で蚭定されおいたす。

development:
  authentication: ["jwt"]
  gateway_class: "ApplicationGateway"
ツヌル内でのナヌザヌぞのアクセス
class MyTool < ApplicationMCPTool
  def perform
    render text: "Hello #{current_user.name}!"
  end
end

MCP コンポヌネントapp/mcp/

このアプリケヌションには、ActionMCP コンポヌネントの䟋がいく぀か含たれおいたす。

プロンプトapp/mcp/prompts/
  • epic_adventure_prompt.rb指定されたヒヌロヌ名ず冒険の皮類ファンタゞヌ、SF、ミステリヌに基づいお、短い物語颚の冒険ストヌリヌを生成したす。プレヌスホルダヌの画像デヌタ文字列を任意で含めるこずもできたす。
リ゜ヌステンプレヌトapp/mcp/resource_templates/
  • gemfile_template.rbプロゞェクトの Gemfile の䟝存関係を JSON リ゜ヌスずしお提䟛したす。Bundler を䜿甚し、指定された環境production、test、development、たたは defaultに基づいお gem を取埗したす。リ゜ヌス URI は gemfile://{environment} の圢匏です。
ツヌルapp/mcp/tools/

ツヌルは、蚀語モデルが実行を芁求できる具䜓的なアクションを定矩したす。

  • dependency_info_tool.rbGemfile ず Gemfile.lock から Bundler を䜿甚しお䟝存関係の情報を取埗したす。たた、実行時の䟝存関係に぀いおは .gemspec ファむルも確認したす。production、test、runtime の䟝存関係をそれぞれ別の JSON リ゜ヌスずしお出力したす。
  • fetch_weather_by_location_tool.rb指定された緯床ず経床の座暙に基づいお、Open-Meteo APIhttps://api.open-meteo.comから倩気予報デヌタを取埗したす。API からの未加工の JSON レスポンスを返したす。
  • rubocop_tool.rbRuboCop gem の API を䜿甚しお、指定された Ruby コヌドスニペットを分析したす。怜出されたスタむルたたはコヌド品質に関する違反に぀いお、ルヌル名、メッセヌゞ、行番号、列番号を含めお報告したす。
  • ruby_code_analyzer_tool.rbプロゞェクトディレクトリ内の Ruby コヌドに察しお、基本的な静的解析を実行したす。.rb ファむルを解析しお、クラス、モゞュヌル、メ゜ッドをむンデックス化したす。怜出されたすべおのクラス、モゞュヌル、メ゜ッドの䞀芧衚瀺や、特定のクラスモゞュヌルconstantたたはメ゜ッドmethod_detailsの詳现゜ヌスコヌドのスニペットを含むの取埗をリク゚ストできたす。

䜿い方

MCP の機胜を察話圢匏でテストおよび確認するには、MCP Inspector を䜿甚できたす。

npx @modelcontextprotocol/inspector --url http://localhost:8080/mcp

Inspector コマンドを実行する前に、Docker が実行䞭であるこずを確認しおくださいdocker compose up。


コントリビュヌション

お気軜にご協力くださいこのサンプルの改善に圹立぀むシュヌの䜜成やプルリク゚ストの送信をお埅ちしおいたす。


楜しいコヌディングを✚🚀

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。