https://github.com/seuros/mcp_rails_template
A minimal Rails API template for creating MCP (Model Context Protocol) servers with robust tool execution capabilities.
https://github.com/seuros/mcp_rails_template
agents claude mcp-server rails-api
Last synced: 3 months ago
JSON representation
A minimal Rails API template for creating MCP (Model Context Protocol) servers with robust tool execution capabilities.
- Host: GitHub
- URL: https://github.com/seuros/mcp_rails_template
- Owner: seuros
- Created: 2025-02-04T22:10:26.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2025-03-21T20:57:59.000Z (3 months ago)
- Last Synced: 2025-03-21T21:29:53.955Z (3 months ago)
- Topics: agents, claude, mcp-server, rails-api
- Language: Ruby
- Homepage:
- Size: 80.1 KB
- Stars: 13
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Action MCP Example 🚀
A simple Ruby on Rails application demonstrating how to integrate and use the **ActionMCP** gem. The gem source code can be found on GitHub at [https://github.com/seuros/action_mcp](https://github.com/seuros/action_mcp).
This application showcases how to define and use MCP components within a Rails project.
---
## Requirements
- Ruby (see `.ruby-version` for recommended version)
- PostgreSQL (or Docker)---
## Getting Started
### 1. Clone and Setup
```bash
git clone https://github.com/seuros/mcp_rails_template.git
cd mcp_rails_template
bin/setup
```### 2. Environment Configuration
Copy the provided `.env.example` file:
```bash
cp .env.example .env
```Edit `.env` and fill in necessary values according to your setup (especially any required API keys for tools like `fetch_weather_by_location_tool`).
### 3. Database Setup
You can quickly spin up a temporary PostgreSQL instance using Docker:
```bash
make up
```This will start PostgreSQL on port `5466`.
Alternatively, configure your own PostgreSQL database by editing `config/database.yml`.
### 4. Run the Application
Launch the Rails server:
```bash
bin/rails s
```The app will be available at [http://localhost:3002](http://localhost:3002).
---
## ActionMCP Engine
The **ActionMCP** engine is mounted at `/action_mcp`. Feel free to mount it at a custom location by modifying the routes in your application.
---
## MCP Components (`app/mcp/`)
This application includes several examples of ActionMCP components:
### Prompts (`app/mcp/prompts/`)
- **`epic_adventure_prompt.rb`**: Generates a short, narrative adventure story based on a provided hero name and adventure type (fantasy, sci-fi, mystery). It can optionally include a placeholder image data string.
### Resource Templates (`app/mcp/resource_templates/`)
- **`gemfile_template.rb`**: Provides access to the project's Gemfile dependencies as a JSON resource. It uses Bundler to fetch gems based on the specified environment (`production`, `test`, `development`, or `default`). The resource URI follows the pattern `gemfile://{environment}`.
### Tools (`app/mcp/tools/`)
Tools define specific actions that a language model can request to be executed.
- **`dependency_info_tool.rb`**: Retrieves dependency information using Bundler from the `Gemfile` and `Gemfile.lock`. It also checks for a `.gemspec` file for runtime dependencies. It outputs separate JSON resources for `production`, `test`, and `runtime` dependencies.
- **`fetch_weather_by_location_tool.rb`**: Fetches weather forecast data from the Open-Meteo API (`https://api.open-meteo.com`) based on provided latitude and longitude coordinates. It returns the raw JSON response from the API.
- **`rubocop_tool.rb`**: Analyzes a provided Ruby code snippet using the RuboCop gem's API. It reports any detected style or code quality offenses, including the rule name, message, line, and column number.
- **`ruby_code_analyzer_tool.rb`**: Performs basic static analysis of Ruby code within the project directory. It indexes classes, modules, and methods by parsing `.rb` files. It can be queried to list all found classes, modules, or methods, or to get details (including source snippets) for a specific class/module (`constant`) or method (`method_details`).---
## Usage
To test and inspect MCP functionality interactively, you can use the MCP Inspector:
```bash
npx @modelcontextprotocol/inspector --url http://localhost:3002/action_mcp
```Make sure your Rails server (`bin/rails s`) is running before executing the inspector command.
---
## Contributing
Feel free to contribute! Open issues or submit pull requests to help improve this example.
---
Happy Coding! ✨🚀