Cooked.wiki MCP server
cooked-wiki recipe llm mcp-server

README.md

cooked-mcp #

Go module documentation MutuaL-1.2 license This project scratched an itch REUSE status Liberapay donation status

Open an issue on Tangled Open a pull request on Tangled

Have your LLM save and manage recipes in your Cooked. You can ask it to find the lentil soup you saved last winter, save a recipe from a TikTok video, or help you figure out why your crumb's too dense.

Capabilities #

It only supports operations available through their API, which isn't everything. It can:

  • list, search, and read your saved recipes
  • clean up raw recipe text
  • import recipes from a URL, with a chance to review Cooked's draft first
  • create, edit, and delete recipes
  • read and change your shopping list, including quantities, aisles, and checked items

Destructive operations are marked as such for MCP clients that pay attention to tool annotations.

Install #

For now, you'll need to install Go first. I'll publish builds soon. Then:

go install secluded.site/cooked-mcp@latest

This puts cooked-mcp in your Go binary directory, usually ~/go/bin.

To build from a clone instead, run:

mise run build

Configure Cooked #

The quickest option is providing your username and password as environment variables:

export COOKED_LOGIN_USERNAME='your-name'
export COOKED_LOGIN_PASSWORD='your-password'

You can also create ~/.config/cooked-mcp/config.toml (it respects $XDG_CONFIG_HOME when set):

[user]
name = "$COOKED_LOGIN_USERNAME"
password = "!pass show services/cooked.wiki"

Configuration values can be plain text, refer to environment variables with $NAME or ${NAME}, or begin with ! to read the value from a shell command. The last form is handy with pass, rbw, op, or another secret manager, and keeps a password out of the config file itself.

Important

cooked-mcp currently logs in with a Cooked username and password. Accounts that only use Google, Facebook, Apple, or another passwordless login are not supported yet (may never be? unsure).

Connect an MCP client #

The default transport is stdio. Add an entry like this to your client's MCP server configuration, adjusting the shape and executable path to suit the client:

{
	"mcpServers": {
		"cooked": {
			"command": "/home/you/go/bin/cooked-mcp",
			"env": {
				"COOKED_LOGIN_USERNAME": "your-name",
				"COOKED_LOGIN_PASSWORD": "your-password"
			}
		}
	}
}

If you use the TOML file above, leave out env. In either case, remember that putting a password directly in an MCP client config stores it as plain text.

There's also a Streamable HTTP transport:

cooked-mcp --transport http

It listens on 127.0.0.1:8123 and serves MCP at http://127.0.0.1:8123/mcp. Set COOKED_MCP_HTTP_ADDR to change the listen address and COOKED_MCP_HTTP_TOKEN to require bearer authentication. The equivalent TOML settings are mcp.http_addr and mcp.http_token.

Run cooked-mcp -help for all command-line options.

Contributing #

You can open an issue or pull request on Tangled. The project uses mise for its development tasks; mise run check runs the complete formatter, linter, build, and test suite.