Integrates with the Nextcloud Cookbook app API to manage recipes.
Nextcloud Cookbook MCP Server
A Model Context Protocol (MCP) server that provides integration with the Nextcloud Cookbook app API. This server allows AI assistants like Claude to interact with your Nextcloud recipes through a standardized interface.
Features
- List and search recipes
- Get detailed recipe information
- Create, update, and delete recipes
- Import recipes from URLs
- Get recipe images
- Manage categories and keywords
- Full Docker support for easy deployment
Prerequisites
- Node.js 18 or higher (for local development)
- Docker and Docker Compose (for containerized deployment)
- Nextcloud instance with Cookbook app installed
- Nextcloud app password (recommended) or user password
Getting a Nextcloud App Password
- Log into your Nextcloud instance
- Go to Settings > Security
- Scroll to "Devices & sessions"
- Enter a name (e.g., "MCP Server") and click "Create new app password"
- Copy the generated password (you won't see it again!)
Installation
Option 1: Docker Deployment (Recommended)
Clone or download this repository
Copy
.env.exampleto.env:cp .env.example .envEdit
.envwith your Nextcloud credentials:NEXTCLOUD_URL=https://your-nextcloud-instance.com NEXTCLOUD_USERNAME=your-username NEXTCLOUD_PASSWORD=your-app-password PORT=3000Build and run with Docker Compose:
docker-compose up -dThe server will be available on
stdio(standard input/output)
Option 2: Local Development
Install dependencies:
npm installCopy
.env.exampleto.envand configure your credentialsBuild the TypeScript code:
npm run buildRun the server:
npm start
Configuration
Configure the server using environment variables:
| Variable | Description | Required | Default |
|---|---|---|---|
NEXTCLOUD_URL |
Your Nextcloud instance URL | Yes | - |
NEXTCLOUD_USERNAME |
Your Nextcloud username | Yes | - |
NEXTCLOUD_PASSWORD |
App password or user password | Yes | - |
PORT |
Server port (currently unused for stdio) | No | 3000 |
Configuring Claude Code
To use this MCP server with Claude Code, add it to your MCP settings:
For stdio transport:
Add to your Claude Code MCP configuration file:
{
"mcpServers": {
"nextcloud-cookbook": {
"command": "node",
"args": ["/path/to/nextcloud-cookbook-mcp/dist/index.js"],
"env": {
"NEXTCLOUD_URL": "https://your-nextcloud-instance.com",
"NEXTCLOUD_USERNAME": "your-username",
"NEXTCLOUD_PASSWORD": "your-app-password"
}
}
}
}
Or if using Docker:
{
"mcpServers": {
"nextcloud-cookbook": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "NEXTCLOUD_URL=https://your-nextcloud-instance.com",
"-e", "NEXTCLOUD_USERNAME=your-username",
"-e", "NEXTCLOUD_PASSWORD=your-app-password",
"nextcloud-cookbook-mcp"
]
}
}
}
Available Tools
The MCP server provides the following tools:
Recipe Management
list_recipes- List all recipes in the cookbooksearch_recipes- Search recipes by keyword, tag, or categoryget_recipe- Get detailed information about a specific recipecreate_recipe- Create a new recipeupdate_recipe- Update an existing recipedelete_recipe- Delete a recipeimport_recipe- Import a recipe from a URL
Images
get_recipe_image_url- Get the URL for a recipe image (full, thumb, or thumb16)
Organization
list_categories- List all recipe categories with countslist_keywords- List all recipe keywords/tagsget_recipes_by_keyword- Get recipes tagged with a specific keyword
Example Usage
Once configured with Claude Code, you can interact with your Nextcloud Cookbook using natural language:
User: "Show me all my recipes"
Claude: [Uses list_recipes tool]
User: "Search for pasta recipes"
Claude: [Uses search_recipes tool with query "pasta"]
User: "Get the details for recipe ID 42"
Claude: [Uses get_recipe tool with id 42]
User: "Import this recipe: https://example.com/recipe"
Claude: [Uses import_recipe tool]
User: "Create a new recipe for chocolate chip cookies"
Claude: [Uses create_recipe tool with recipe data]
Development
Project Structure
nextcloud-cookbook-mcp/
├── src/
│ ├── index.ts # MCP server implementation
│ └── nextcloud-client.ts # Nextcloud API client
├── dist/ # Compiled JavaScript (generated)
├── Dockerfile # Docker container configuration
├── docker-compose.yml # Docker Compose setup
├── package.json # Node.js dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # This file
Building
npm run build
Development
Tools (11)
list_recipesList all recipes in the cookbooksearch_recipesSearch recipes by keyword, tag, or categoryget_recipeGet detailed information about a specific recipecreate_recipeCreate a new recipeupdate_recipeUpdate an existing recipedelete_recipeDelete a recipeimport_recipeImport a recipe from a URLget_recipe_image_urlGet the URL for a recipe imagelist_categoriesList all recipe categories with countslist_keywordsList all recipe keywords/tagsget_recipes_by_keywordGet recipes tagged with a specific keywordEnvironment Variables
NEXTCLOUD_URLrequiredYour Nextcloud instance URLNEXTCLOUD_USERNAMErequiredYour Nextcloud usernameNEXTCLOUD_PASSWORDrequiredApp password or user passwordPORTServer portConfiguration
{"mcpServers": {"nextcloud-cookbook": {"command": "node", "args": ["/path/to/nextcloud-cookbook-mcp/dist/index.js"], "env": {"NEXTCLOUD_URL": "https://your-nextcloud-instance.com", "NEXTCLOUD_USERNAME": "your-username", "NEXTCLOUD_PASSWORD": "your-app-password"}}}}