Rails MCP Server
An MCP server for Rails projects, allowing LLMs to interact with your application.
Rails MCP Server
A Ruby implementation of a Model Context Protocol (MCP) server for Rails projects. This server allows LLMs (Large Language Models) to interact with Rails projects through the Model Context Protocol, providing capabilities for code analysis, exploration, and development assistance.
What is MCP?
The Model Context Protocol (MCP) is a standardized way for AI models to interact with their environment. It defines a structured method for models to request and use tools, access resources, and maintain context during interactions.
This Rails MCP Server implements the MCP specification to give AI models access to Rails projects for code analysis, exploration, and assistance.
Features
- Manage multiple Rails projects
- Browse project files and structures
- View Rails routes with filtering options
- Inspect model information and relationships (with Prism static analysis)
- Get database schema information
- Analyze controller-view relationships
- Analyze environment configurations
- Execute sandboxed Ruby code for custom queries
- Access comprehensive Rails, Turbo, Stimulus, and Kamal documentation
- Context-efficient architecture with progressive tool discovery
- Seamless integration with LLM clients
Installation
Install the gem:
gem install rails-mcp-server
After installation, the following executables will be available in your PATH:
rails-mcp-server- The MCP server itselfrails-mcp-config- Interactive configuration tool (recommended)rails-mcp-setup-claude- Legacy Claude Desktop setup scriptrails-mcp-server-download-resources- Legacy resource download script
Configuration
Using the Configuration Tool (Recommended)
The easiest way to configure the Rails MCP Server is using the interactive configuration tool:
rails-mcp-config
This provides a user-friendly TUI (Terminal User Interface) for:
- Managing Projects: Add, edit, remove, and validate Rails projects
- Downloading Guides: Download Rails, Turbo, Stimulus, and Kamal documentation
- Importing Custom Guides: Add your own markdown documentation
- Claude Desktop Integration: Automatically configure Claude Desktop
The tool uses Gum for an enhanced experience if installed, but works with a basic terminal fallback.
# Install Gum for best experience (optional)
brew install gum # macOS
sudo apt install gum # Debian/Ubuntu
yay -S gum # Arch Linux
Manual Configuration
The Rails MCP Server follows the XDG Base Directory Specification for configuration files:
- On macOS:
$XDG_CONFIG_HOME/rails-mcpor~/.config/rails-mcpif XDG_CONFIG_HOME is not set - On Windows:
%APPDATA%\rails-mcp
The server will automatically create these directories and an empty projects.yml file the first time it runs.
To configure your projects manually:
- Edit the
projects.ymlfile in your config directory to include your Rails projects:
store: "~/projects/store"
blog: "~/projects/rails-blog"
ecommerce: "/full/path/to/ecommerce-app"
Each key in the YAML file is a project name (which will be used with the switch_project tool), and each value is the path to the project directory.
Usage
Starting the server
The Rails MCP Server can run in two modes:
- STDIO mode (default): Communicates over standard input/output for direct integration with clients like Claude Desktop.
- HTTP mode: Runs as an HTTP server with JSON-RPC and Server-Sent Events (SSE) endpoints.
# Start in default STDIO mode
rails-mcp-server
# Start in HTTP mode on the default port (6029)
rails-mcp-server --mode http
# Start in HTTP mode on a custom port
rails-mcp-server --mode http -p 8080
# Start in HTTP mode binding to all interfaces (for local network access)
rails-mcp-server --mode http --bind-all
When running in HTTP mode, the server provides two endpoints:
- JSON-RPC endpoint:
http://localhost:<port>/mcp/messages - SSE endpoint:
http://localhost:<port>/mcp/sse
Network Access (HTTP Mode)
By default, the HTTP server only binds to localhost for security. If you need to access the server from other machines on your local network (e.g., for testing with multiple devices), you can use the --bind-all flag:
# Allow access from any machine on your local network
rails-mcp-server --mode http --bind-all
# With a custom port
rails-mcp-server --mode http --bind-all -p 8080
When using --bind-all:
- The server binds to
0.0.0.0instead oflocalhost - Access is allowed from local network IP ranges (192.168.x.x, 10.x.x.x)
- The server accepts connections from
.localdomain names (e.g.,my-computer.local) - Security features remain active to prevent unauthorized access
Security Note: Only use --bind-all on trusted networks. The server includes built-in security features to validate origins and IP addresses, but exposing any service to your network increases the attack surface.
Logging Options
The server logs to a file in the ./log directory by default. You can customize logging with these options:
# Set the log level (debug, info, error)
rails-mcp-server --log-level debug
Claude Desktop Integration
The Rails MCP Server can be used with Claude Desktop. There are multiple options to set this up:
Option 1: Use the configuration tool (recommended)
Run the interactive configuration tool and select "Claude Desktop integration":
rails-mcp-config
The tool will:
- Detect your current Claude Desktop configuration
- Let you choose between STDIO or HTTP mode
- Automatically find the correct Ruby and server paths
- Create a backup before making changes
- Update the Claude Desktop configuration
Option 2: Use the setup script (legacy)
Run the setup script which will automatically configure Claude Desktop:
rails-mcp-setup-claude
The script will:
- Create the appropriate config directory for your platform
- Create an empty
projects.ymlfile if it doesn't exist - Update the Claude Desktop configuration
After running the script, restart Claude Desktop to apply the changes.
Option 3: Direct Configuration
-
Create the appropriate config directory for your platform:
- macOS:
$XDG_CONFIG_HOME/rails-mcpor~/.config/rails-mcpif XDG_CONFIG_HOME is not set - Windows:
%APPDATA%\rails-mcp
- macOS:
-
Create a
projects.ymlfile in that directory with your Rails projects. -
Find or create the Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add or update the MCP server configuration:
{
"mcpServers": {
"railsMcpServer": {
"command": "ruby",
"args": ["/full/path/to/rails-mcp-server/exe/rails-mcp-server"]
}
}
}
- Restart Claude Desktop to apply the changes.
Ruby Version Manager Users
Claude Desktop launches the MCP server using your system's default Ruby environment, bypassing version manager initialization (e.g., rbenv, RVM). The MCP server needs to use the same Ruby version where it was installed, as MCP server startup failures can occur when using an incompatible Ruby version.
If you are using a Ruby version manager such as rbenv, you can use the Ruby shim path to ensure the correct version is used:
{
"mcpServers": {
"railsMcpServer": {
"command": "/home/your_user/.rbenv/shims/ruby",
"args": ["/full/path/to/rails-mcp-server/exe/rails-mcp-server"]
}
}
}
Replace "/home/your_user/.rbenv/shims/ruby" with your actual path for the Ruby shim.
Tip: The rails-mcp-config tool automatically detects your Ruby path and uses the correct shim path when configuring Claude Desktop.
Using an MCP Proxy (Advanced)
Claude Desktop and many other LLM clients only support STDIO mode communication, but you might want to use the HTTP/SSE capabilities of the server. An MCP proxy can bridge this gap:
- Start the Rails MCP Server in HTTP mode:
rails-mcp-server --mode http
- Install and run an MCP proxy. There are several implementations available in different languages. An MCP proxy allows a client that only supports STDIO communication to communicate via HTTP SSE. Here's an example using a JavaScript-based MCP proxy:
# Install the Node.js based MCP proxy
npm install -g mcp-remote
# Run the proxy, pointing to your running Rails MCP Server
npx mcp-remote http://localhost:6029/mcp/sse
- Configure Claude Desktop (or other LLM client) to use the proxy instead of connecting directly to the server:
{
"mcpServers": {
"railsMcpServer": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:6029/mcp/sse"]
}
}
}
This setup allows STDIO-only clients to communicate with the Rails MCP Server through the proxy, benefiting from the HTTP/SSE capabilities while maintaining client compatibility.
Tip: The rails-mcp-config tool can configure HTTP mode with mcp-remote automatically.
GitHub Copilot Agent Integration
Rails MCP Server works with GitHub Copilot coding agent out of the box. The server auto-detects Rails projects when started from a Rails directory or when configured with environment variables.
Quick Setup
- Configure MCP - Create
.github/copilot/mcp.jsonin your repository:
{
"mcpServers": {
"rails": {
"type": "local",
"command": "rails-mcp-server",
"args": ["--single-project"],
"tools": ["switch_project", "search_tools", "execute_tool", "execute_ruby"]
}
}
}
- Setup Steps - Create
.github/workflows/copilot-setup-steps.yml:
name: "Copilot Setup Steps"
on: workflow_dispatch
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
bundler-cache: true
- name: Install Rails MCP Server
run: gem install rails-mcp-server
Alternative: Environment Variable
You can also use the RAILS_MCP_PROJECT_PATH environment variable:
{
"mcpServers": {
"rails": {
"type": "local",
"command": "rails-mcp-server",
"env": {
"RAILS_MCP_PROJECT_PATH": "."
},
"tools": ["switch_project", "search_tools", "execute_tool", "execute_ruby"]
}
}
}
Limitations
- GitHub Copilot Agent only supports MCP tools, not resources or prompts
- The
load_guideanalyzer works viaexecute_tool, but requires guides to be downloaded during setup
For detailed instructions, see docs/COPILOT_AGENT.md.
How the Server Works
The Rails MCP Server implements the Model Context Protocol using either:
- STDIO mode: Reads JSON-RPC 2.0 requests from standard input and returns responses to standard output.
- HTTP mode: Provides HTTP endpoints for JSON-RPC 2.0 requests and Server-Sent Events.
Each request includes a sequence number to match requests with responses, as defined in the MCP specification. The server maintains project context and provides Rails-specific analysis capabilities across multiple codebases.
Context-Efficient Architecture
The server uses a progressive tool discovery architecture to minimize context usage. Instead of exposing all tools upfront, it provides 4 bootstrap tools that allow LLMs to discover and invoke additional analyzers on-demand:
switch_project- Select the active Rails projectsearch_tools- Discover available tools by category or keywordexecute_tool- Invoke internal analyzers with parametersexecute_ruby- Run sandboxed Ruby code for custom queries
This design reduces initial context from ~2,400 tokens to ~800 tokens while maintaining full functionality.
AI Agent Guide
For AI agents (Claude, GPT, etc.) using this server, see the comprehensive AI Agent Guide which covers:
- Quick start workflow
- Tool selection guide for common tasks
- Helper methods available in
execute_ruby - Common pitfalls and how to avoid them
- Error handling and fallback strategies
- Integration with other MCP servers (e.g., Neovim MCP)
Available Tools
The server provides 4 registered tools plus internal analyzers accessible via execute_tool.
Registered Tools
1. switch_project
Description: Change the active Rails project. Must be called before using other tools.
Parameters:
project_name: (String, required) Name of the project as defined in projects.yml
After switching, you'll see a Quick Start guide with common commands.
2. search_tools
Description: Discover available tools by category or keyword.
Parameters:
query: (String, optional) Search term (e.g., 'routes', 'model', 'schema')category: (String, optional) Filter by category: models, database, routing, controllers, files, project, guidesdetail_level: (String, optional) Output detail: 'names', 'summary', or 'full' (default: 'summary')
3. execute_tool
Description: Invoke internal analyzers by name.
Parameters:
tool_name: (String, required) Name of the analyzer (e.g., 'get_routes', 'analyze_models')params: (Hash, optional) Parameters for the analyzer
4. execute_ruby
Description: Execute sandboxed Ruby code in the Rails project context.
Parameters:
code: (String, required) Ruby code to executetimeout: (Integer, optional) Timeout in seconds (default: 30, max: 60)
Available helper methods:
read_file(path)- Read a file safelyfile_exists?(path)- Check if a file existslist_files(pattern)- Glob files (e.g.,'app/models/**/*.rb')project_root- Get the project root path
Note: Use puts to see output from your code.
Security: The sandbox prevents file writes, system calls, network access, and reading sensitive files (.env, credentials, etc.).
Internal Analyzers (via execute_tool)
project_info
Retrieve comprehensive project information including Rails version, directory structure, and organization.
execute_tool(tool_name: "project_info")
list_files
List files matching a pattern in a directory.
execute_tool(tool_name: "list_files", params: { directory: "app/models", pattern: "*.rb" })
get_file
Retrieve the content of a specific file.
execute_tool(tool_name: "get_file", params: { path: "app/models/user.rb" })
get_routes
Retrieve Rails routes with optional filtering.
execute_tool(tool_name: "get_routes")
execute_tool(tool_name: "get_routes", params: { controller: "users" })
execute_tool(tool_name: "get_routes", params: { verb: "POST" })
execute_tool(tool_name: "get_routes", params: { path_contains: "api" })
analyze_models
Analyze Active Record models with associations, validations, and optional Prism static analysis.
execute_tool(tool_name: "analyze_models")
execute_tool(tool_name: "analyze_models", params: { model_name: "User" })
execute_tool(tool_name: "analyze_models", params: { model_name: "User", analysis_type: "full" })
execute_tool(tool_name: "analyze_models", params: { detail_level: "names" })
Parameters:
model_name: Specific model to analyzemodel_names: Array of models to analyzedetail_level: 'names', 'summary', or 'full'analysis_type: 'introspection', 'static', or 'full' (includes Prism AST analysis)
get_schema
Retrieve database schema information.
execute_tool(tool_name: "get_schema")
execute_tool(tool_name: "get_schema", params: { table_name: "users" })
execute_tool(tool_name: "get_schema", params: { detail_level: "tables" })
analyze_controller_views
Analyze controller-view relationships with optional Prism static analysis.
execute_tool(tool_name: "analyze_controller_views")
execute_tool(tool_name: "analyze_controller_views", params: { controller_name: "users" })
execute_tool(tool_name: "analyze_controller_views", params: { controller_name: "users", analysis_type: "full" })
analyze_environment_config
Analyze environment configurations for inconsistencies and security issues.
execute_tool(tool_name: "analyze_environment_config")
load_guide
Load documentation guides from Rails, Turbo, Stimulus, Kamal, or Custom.
execute_tool(tool_name: "load_guide", params: { library: "rails" })
execute_tool(tool_name: "load_guide", params: { library: "rails", guide: "getting_started" })
execute_tool(tool_name: "load_guide", params: { library: "turbo" })
execute_tool(tool_name: "load_guide", params: { library: "stimulus" })
execute_tool(tool_name: "load_guide", params: { library: "custom", guide: "tailwind" })
Resources and Documentation
The Rails MCP Server provides access to comprehensive documentation through both the load_guide tool and direct MCP resource access. You can access official guides for Rails, Turbo, Stimulus, and Kamal, as well as import your own custom documentation.
Available Resource Categories
- Rails Guides: Official Ruby on Rails 8.0.2 documentation
- Turbo Guides: Official Turbo (Hotwire) framework documentation
- Stimulus Guides: Official Stimulus JavaScript framework documentation
- Kamal Guides: Official Kamal deployment tool documentation
- Custom Guides: Your imported markdown files
Getting Started with Resources
The easiest way to manage resources is using the configuration tool:
rails-mcp-config
Then select "Download guides" or "Import custom guides" from the menu.
Alternatively, you can use the legacy command-line tools:
# Download Rails guides
rails-mcp-server-download-resources rails
# Download Turbo guides
rails-mcp-server-download-resources turbo
# Import custom markdown files
rails-mcp-server-download-resources --file /path/to/your/docs/
Resource Access Methods
- Tool-based access: Use the
load_guidetool in conversations - Direct resource access: MCP clients can query resources using URI patterns like
rails://guides/{guide_name}
For complete information about downloading, managing, and using resources, see the Resources Guide.
Testing and Debugging
The easiest way to test and debug the Rails MCP Server is by using the MCP Inspector, a developer tool designed specifically for testing and debugging MCP servers.
To use MCP Inspector with Rails MCP Server:
# Install and run MCP Inspector
npm -g install @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector /path/to/rails-mcp-server
This will:
- Start your Rails MCP Server in HTTP mode
- Launch the MCP Inspector UI in your browser (default port: 6274)
- Set up an MCP Proxy server (default port: 6277)
In the MCP Inspector UI, you can:
- See all available tools (you should see 4 registered tools)
- Execute tool calls interactively
- View request and response details
- Debug issues in real-time
The Inspector UI provides an intuitive interface to interact with your MCP server, making it easy to test and debug your Rails MCP Server implementation.
Testing Workflow
- Switch to a project:
switch_projectwith your project name - Discover tools:
search_toolsto see available analyzers - Test analyzers:
execute_toolto invoke specific analyzers - Test Ruby execution:
execute_rubywith code likeputs read_file('Gemfile')
Integration with LLM Clients
This server is designed to be integrated with LLM clients that support the Model Context Protocol, such as Claude Desktop or other MCP-compatible applications.
To use with an MCP client:
- Start the Rails MCP Server (it will use STDIO mode by default)
- Connect your MCP-compatible client to the server
- The client will be able to use the available tools to interact with your Rails projects
Security
For security concerns, please see SECURITY.md.
License
This Rails MCP server is released under the MIT License, a permissive open-source license that allows for free use, modification, distribution, and private use.
Copyright (c) 2025 Mario Alberto Chávez Cárdenas
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/maquina-app/rails-mcp-server.
Serveurs connexes
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
animotion-mcp
745+ CSS3 animations and 9,000+ real SVG icons for AI coding agents. 10 MCP tools. Zero-clone setup via npx.
Unity MCP Template
A template project demonstrating interaction between a TypeScript-based MCP server and a Unity client.
MCP Context Server
Server providing persistent multimodal context storage for LLM agents.
MCP Cat PSQL
An example of a remote, authentication-free MCP server deployable on Cloudflare Workers.
Creatify
MCP Server that exposes Creatify AI API capabilities for AI video generation, including avatar videos, URL-to-video conversion, text-to-speech, and AI-powered editing tools.
BCMS MCP
Give me a one - two sentence description of the BCMS MCP # MCP The BCMS Model Context Protocol (MCP) integration enables AI assistants like Claude, Cursor, and other MCP-compatible tools to interact directly with your BCMS content. This allows you to create, read, and update content entries, manage media files, and explore your content structure—all through natural language conversations with AI. ## What is MCP? The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) is an open standard developed by Anthropic that allows AI applications to securely connect to external data sources and tools. With BCMS MCP support, you can leverage AI assistants to: - Query and explore your content structure - Create new content entries with AI-generated content - Update existing entries - Manage your media library - Get intelligent suggestions based on your content model --- ## Getting Started ### Prerequisites 1. A BCMS account with an active instance 2. An MCP key with appropriate permissions 3. An MCP-compatible client (Claude Desktop, Cursor, or any MCP client) ### Step 1: Create an MCP Key 1. Navigate to your BCMS dashboard 2. Go to Settings → MCP 3. Click Create MCP Key 4. Configure the permissions for templates you want the AI to access:GET: Read entries 5. POST: Create entries 6. PUT: Update entries 7. DELETE: Delete entries Note: Right now, MCP only supports creating, reading and updating content. ### Step 2: Configure Your MCP Client You can find full instructions for integrating BCMS with your AI tools right inside BCMS, on the MCP page. But in general, installing BCMS MCP works in a standard way: ``` { "mcpServers": { "bcms": { "url": "https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY" } } } ``` ## Available Tools Once connected, your AI assistant will have access to the following tools based on your MCP key permissions: ### Content Discovery #### list_templates_and_entries Lists all templates and their entries that you have access to. This is typically the first tool to call when exploring your BCMS content. Returns: - Template IDs, names, and slugs - Entry IDs with titles and slugs for each language Example prompt: "Show me all the templates and entries in my BCMS" --- ### Entry Management #### list_entries_for_{templateId} Retrieves all entries for a specific template with full content data. A separate tool is generated for each template you have access to. Returns: - Complete entry data including all meta fields - Content in all configured languages - Entry statuses Example prompt: "List all blog posts from my Blog template" --- #### create_entry_for_{templateId} Creates a new entry for a specific template. The input schema is dynamically generated based on your template's field structure. Input: - statuses: Array of status assignments per language - meta: Array of metadata for each language (title, slug, custom fields) - content: Array of content nodes for each language Example prompt: "Create a new blog post titled 'Getting Started with BCMS' with a brief introduction paragraph" --- #### update_entry_for_{templateId} Updates an existing entry for a specific language. Input: - entryId: The ID of the entry to update - lng: Language code (e.g., "en") - status: Optional status ID - meta: Updated metadata - content: Updated content nodes Example prompt: "Update the introduction paragraph of my 'Getting Started' blog post" --- ### Media Management #### list_all_media Lists all media files in your media library. Returns: - Media IDs, names, and types - File metadata (size, dimensions for images) - Parent directory information Example prompt: "Show me all images in my media library" --- #### list_media_dirs Lists the directory structure of your media library. Returns: - Hierarchical directory structure - Directory IDs and names Example prompt: "Show me the folder structure of my media library" --- #### create-media-directory Creates a new directory in your media library. Input: - name: Name of the directory - parentId: Optional parent directory ID (root if not specified) Example prompt: "Create a new folder called 'Blog Images' in my media library" --- #### request-upload-media-url Returns a URL you use to upload a file (for example via POST with multipart form data), which avoids pushing large binaries through the MCP tool payload. You still need a valid file name and MIME type when uploading, as described in the tool response. Availability: Only when the MCP key has Can mutate media enabled. Example prompt: “Give me an upload URL for a new hero image, then tell me how to upload it.” Input: - fileName: Name of the file with extension - fileData: Base64-encoded file data (with data URI prefix) - parentId: Optional parent directory ID Example prompt: "Upload this image to my Blog Images folder" --- ### Linking Tools #### get_entry_pointer_link Generates an internal BCMS link to an entry for use in content. Input: - entryId: The ID of the entry to link to Returns: - Internal link format: entry:{entryId}@*_{templateId}:entry Example prompt: "Get me the internal link for the 'About Us' page entry" --- #### get_media_pointer_link Generates an internal BCMS link to a media item for use in content. Input: - mediaId: The ID of the media item Returns: - Internal link format: media:{mediaId}@*_@*_:entry Example prompt: "Get the link for the hero image so I can use it in my blog post" --- ## Content Structure ### Entry Content Nodes When creating or updating entries, content is structured as an array of nodes. Supported node types include: Type Description paragraph Standard text paragraph heading Heading (h1-h6) bulletList Unordered list orderedList Numbered list listItem List item codeBlock Code block with syntax highlighting blockquote Quote block image Image node widget Custom widget with props ### Example Content Structure ``` { "content": [ { "lng": "en", "nodes": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Welcome to BCMS" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "This is your first paragraph." } ] } ] } ] } ``` ## Security & Permissions ### MCP Key Scopes Your MCP key controls what the AI can access: - Template Access: Only templates explicitly granted in the MCP key are visible - Operation Permissions: Each template can have independent GET/POST/PUT/DELETE permissions - Media Access: Media operations are controlled separately ### Best Practices 1. Principle of Least Privilege: Only grant the permissions needed for your use case 2. Separate Keys: Create different MCP keys for different purposes or team members 3. Regular Rotation: Periodically rotate your MCP keys ## Use Cases ### Content Creation Workflows Blog Post Creation "Create a new blog post about the benefits of headless CMS. Include an introduction, three main benefits with explanations, and a conclusion. Use the Blog template." Product Updates "Update the price field for all products in the Electronics category to apply a 10% discount" ### Content Exploration Content Audit "List all blog posts that don't have a featured image set" Translation Status "Show me which entries are missing German translations" ### Media Organization Library Cleanup "Show me all unused images in the media library" Folder Setup "Create folder structure for: Products > Categories > Electronics, Clothing, Home" ## Troubleshooting ### Common Issues #### "MCP key not found" - Verify your MCP key format: keyId.keySecret.instanceId - Ensure the MCP key hasn't been deleted or deactivated - Check that you're using the correct instance #### "MCP key does not have access to template" - Review your MCP key permissions in the dashboard - Ensure the required operation (GET/POST/PUT/DELETE) is enabled for the template #### Session Expired - MCP sessions may timeout after periods of inactivity - Simply start a new conversation to establish a fresh session ### Getting Help - Documentation: [thebcms.com/docs](https://thebcms.com/docs) - Support: [[email protected]](mailto:[email protected]) - Community: [Join BCMS Discord](https://discord.com/invite/SYBY89ccaR) for community support ## Technical Reference ### Endpoint POST https://app.thebcms.com/api/v3/mcp?mcpKey={MCP_KEY} ### Transport BCMS MCP uses the Streamable HTTP transport with session management. Sessions are maintained via the mcp-session-id header. ### Response Format All tools return structured JSON responses conforming to the MCP specification with: - content: Array of content blocks - structuredContent: Typed response data ## Rate Limits MCP requests are subject to the same rate limits as API requests: - Requests are tracked per MCP key - Contact support if you need higher limits for production workloads
MCP Command Server
A server for securely executing commands on the host system, requiring Java 21 or higher.
Sentinel Signal MCP
Agent tools via MCP for workflow scoring, limits/usage, and feedback (trial key supported)
Cursor History MCP
Best MCP server for browsing, searching, backup, and exporting Cursor AI chat history.
APS AEC Data Model MCP (.NET)
A .NET MCP server for interacting with the Autodesk AEC Data Model API and Viewer.