Action MCP Example ๐
seuros/mcp_rails_template ยท 42 stars ยท Ruby
MCP server A minimal Rails API template for creating MCP (Model Context Protocol) servers with robust tool execution capabilities and examples.
Install
The repo has no one-line install. Follow its README.
Files
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/mcp.
This application showcases how to define and use MCP components within a Rails project.
Requirements
- Ruby (see
.ruby-versionfor recommended version) - PostgreSQL (or Docker)
Getting Started
1. Clone and Setup
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:
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:
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:
bin/rails s
The app will be available at http://localhost:3002.
ActionMCP Server
ActionMCP runs as a standalone server on port 62770 (via mcp.ru). Nginx proxies /mcp requests to this server.
Client โ nginx:8080/mcp โ ActionMCP:62770
Authentication
This application uses JWT-based authentication via the ApplicationGateway class.
Test Users (from fixtures)
| Password | Role | |
|---|---|---|
| test@example.com | password123 | Test User |
| admin@example.com | password123 | Admin User |
Loading Fixtures
bin/rails db:fixtures:load FIXTURES=users
Generating a JWT Token
# In Rails console user = User.find_by(email: 'test@example.com') token = user.generate_jwt(expires_in: 10.years) # Long-lived for demo
MCP Client Configuration
A .mcp.json file is provided with a pre-configured long-lived token:
{
"mcpServers": {
"mcp_rails_template": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer <token>"
}
}
}
}
Or test manually with curl:
curl -H "Authorization: Bearer <token>" http://localhost:8080/mcp
Gateway Configuration
The gateway is configured in config/mcp.yml:
development: authentication: ["jwt"] gateway_class: "ApplicationGateway"
Accessing User in Tools
class MyTool < ApplicationMCPTool
def perform
render text: "Hello #{current_user.name}!"
end
end
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, ordefault). The resource URI follows the patterngemfile://{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 theGemfileandGemfile.lock. It also checks for a.gemspecfile for runtime dependencies. It outputs separate JSON resources forproduction,test, andruntimedependencies.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.rbfiles. 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:
npx @modelcontextprotocol/inspector --url http://localhost:8080/mcp
Make sure Docker is running (docker compose up) before executing the inspector command.
Contributing
Feel free to contribute! Open issues or submit pull requests to help improve this example.
Happy Coding! โจ๐
Facts
- Kind
- MCP server
- Group
- Uncategorized
- Stars
- 42
- Language
- Ruby
- Last push
- 2026-06-19
- Forks
- 6
- Topics
- agents, claude, mcp-server, rails-api
- 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
- 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
- 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
- 4Scrapling MCP Serverd4vinci/scrapling๐ท๏ธ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
- 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k