get_businessesLABSCO SUMMARY
Hours changed by saying so.
Opening hours are the write a multi-location business feels most: a holiday closure or a seasonal change goes in as a sentence instead of a pass through the CMS. The same key also creates and updates blog posts and uploads images.
What it is
An integration with DevHub's CMS, which manages content for multi-location businesses. It lists the businesses in an account and the locations under them, reads and writes a location's hours of operation, finds the nearest location to a point, and reads, creates and updates blog posts and uploads images to the media gallery.
What you get
- Every business in the DevHub account, listed
- The locations sitting under a business
- A location's current hours of operation, read back in full
- New opening hours written to a location
- The nearest location to a latitude and longitude, and the site and locations behind a URL
- Blog posts read, created and updated, and images uploaded to the media gallery
Requirements
A DevHub API key and secret, plus your DevHub base URL — all three go in the server's environment. Run it with uvx and no install, or add it through the Claude Code CLI.
Setup effort
Add the configuration to your client
USE CASES
Changing opening hours for a holiday
Find the location, read what is published now, and write the new hours — in one conversation rather than one form per site.
Checking what hours are actually live
Read the published hours back, for when someone says the website is wrong.
Finding a location's record in a large account
Businesses first, then the locations under the right one.
Rolling a seasonal change across sites
Work down the location list and apply the same change to each, without the CMS in between.
10 tools
Listed in project docs. Your client may show a different list.
get_locationsget_hours_of_operationupdate_hoursget_nearest_locationsite_from_urlget_blog_postcreate_blog_postupdate_blog_postupload_imageBEFORE YOU INSTALL
What to know first
Tools you get
10 tools named in the project's documentation.
Requires
- uvx on PATH
- DEVHUB_API_KEY in your environment
- DEVHUB_API_SECRET in your environment
- DEVHUB_BASE_URL in your environment
INSTALLATION
Connect your client
MCP Clients
Claude Desktop, Cursor
{
"mcpServers": {
"devhub_cms_mcp": {
"command": "uvx",
"args": [
"devhub-cms-mcp"
],
"env": {
"DEVHUB_API_KEY": "<YOUR_DEVHUB_API_KEY>",
"DEVHUB_API_SECRET": "<YOUR_DEVHUB_API_SECRET>",
"DEVHUB_BASE_URL": "https://<YOUR_BRAND>.cloudfrontend.net"
}
}
}
}Claude Code
claude mcp add devhub-cms-mcp \
-e DEVHUB_API_KEY=<YOUR_DEVHUB_API_KEY> \
-e DEVHUB_API_SECRET=<YOUR_DEVHUB_API_SECRET> \
-e DEVHUB_BASE_URL=https://<YOUR_BRAND>.cloudfrontend.net \
-- uvx devhub-cms-mcpClaude Desktop — local build
Clone the repository:
git clone https://github.com/devhub/devhub-cms-mcp.gitAdd this to the mcpServers section of claude_desktop_config.json; <YOUR_LOCAL_PATH>/devhub-cms-mcp/ is the full path to that clone:
{
"mcpServers": {
"devhub_cms_mcp": {
"command": "uv",
"args": [
"--directory",
"<YOUR_LOCAL_PATH>/devhub-cms-mcp/",
"run",
"main.py"
],
"env": {
"DEVHUB_API_KEY": "<YOUR_DEVHUB_API_KEY>",
"DEVHUB_API_SECRET": "<YOUR_DEVHUB_API_SECRET>",
"DEVHUB_BASE_URL": "https://<YOUR_BRAND>.cloudfrontend.net"
}
}
}
}