Skip to content

CMP-354 | Add an MCP generator to bootstrap an MCP server with Oauth#187

Merged
justwiebe merged 22 commits intomasterfrom
cmp-354-add-generator-for-bootstrapping-an-mcp-server
Apr 3, 2026
Merged

CMP-354 | Add an MCP generator to bootstrap an MCP server with Oauth#187
justwiebe merged 22 commits intomasterfrom
cmp-354-add-generator-for-bootstrapping-an-mcp-server

Conversation

@justwiebe
Copy link
Copy Markdown
Contributor

Why?

We want to be able to quickly spin up an MCP server with built-in oauth

What Changed

What changed in this PR?

  • Add MCP generator

Pre-merge checklist

  • Run bin/bump_version or bin/bump_version --patch

@linear
Copy link
Copy Markdown

linear bot commented Apr 2, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new rolemodel:mcp generator intended to bootstrap an MCP server endpoint in a Rails app with Doorkeeper-based OAuth (including dynamic client registration and well-known OAuth metadata endpoints).

Changes:

  • Introduces an Rolemodel::MCPGenerator that installs/configures mcp + doorkeeper, adds routes, and updates inflections for the MCP acronym.
  • Adds generator templates for MCP + OAuth controllers, Doorkeeper layout/views/styles, and request specs.
  • Adds doorkeeper as a development dependency and updates the lockfile.

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
spec/generators/rolemodel/mcp_generator_spec.rb Adds generator spec assertions for created files/routes and Gemfile updates
rolemodel-rails.gemspec Adds doorkeeper as a development dependency
lib/rolemodel-rails.rb Adds an MCP inflection acronym at gem load time
lib/generators/rolemodel/mcp/USAGE Adds generator help text (currently appears to be copied from mailers)
lib/generators/rolemodel/mcp/README.md Documents the MCP generator at a high level
lib/generators/rolemodel/mcp/mcp_generator.rb Implements the MCP generator (bundler add, doorkeeper install/config, routes, inflections)
lib/generators/rolemodel/all_generator.rb Runs rolemodel:mcp as part of rolemodel:all
lib/generators/rolemodel/mcp/templates/app/controllers/mcp_controller.rb.tt MCP controller template wiring MCP server transport + Doorkeeper auth
lib/generators/rolemodel/mcp/templates/app/controllers/oauth_registrations_controller.rb Dynamic OAuth client registration controller template
lib/generators/rolemodel/mcp/templates/app/controllers/well_known_controller.rb Well-known OAuth metadata controller template
lib/generators/rolemodel/mcp/templates/app/controllers/doorkeeper/base_controller.rb Doorkeeper base controller template
lib/generators/rolemodel/mcp/templates/config/initializers/doorkeeper.rb Doorkeeper initializer template (opinionated config)
lib/generators/rolemodel/mcp/templates/app/views/layouts/doorkeeper.html.slim Doorkeeper layout template
lib/generators/rolemodel/mcp/templates/app/views/doorkeeper/authorizations/new.html.slim.tt Doorkeeper authorize view template
lib/generators/rolemodel/mcp/templates/app/views/doorkeeper/authorizations/error.html.slim.tt Doorkeeper authorization error view template
lib/generators/rolemodel/mcp/templates/app/assets/stylesheets/components/doorkeeper.css Doorkeeper UI styling (Optics token-based)
lib/generators/rolemodel/mcp/templates/spec/requests/mcp_controller_spec.rb Request spec template for /mcp
lib/generators/rolemodel/mcp/templates/spec/requests/oauth_registrations_controller_spec.rb Request spec template for dynamic registration
lib/generators/rolemodel/mcp/templates/spec/requests/well_known_controller_spec.rb Request spec template for well-known endpoints
Gemfile.lock Adds doorkeeper + updates platforms / nokogiri resolution

justwiebe and others added 7 commits April 2, 2026 21:29
…eeper.html.slim

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@justwiebe justwiebe merged commit 786f68d into master Apr 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants