From bb7ee08152c304ab6fb545d7f4442174e2da078e Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 2 Aug 2026 17:33:43 +0200 Subject: [PATCH] docs: add JSON MCP configuration examples --- README.md | 76 ++++++++++++++++++++++++++++++++ examples/claude-desktop-mcp.json | 14 ++++++ examples/cursor-mcp.json | 14 ++++++ examples/generic-mcp.json | 14 ++++++ examples/hermes-mcp.json | 14 ++++++ examples/local-dev-mcp.json | 15 +++++++ examples/windsurf-mcp.json | 14 ++++++ 7 files changed, 161 insertions(+) create mode 100644 examples/claude-desktop-mcp.json create mode 100644 examples/cursor-mcp.json create mode 100644 examples/generic-mcp.json create mode 100644 examples/hermes-mcp.json create mode 100644 examples/local-dev-mcp.json create mode 100644 examples/windsurf-mcp.json diff --git a/README.md b/README.md index c4fbf32..eb882e0 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,82 @@ Restart Hermes Agent after editing `~/.hermes/config.yaml`. An equivalent ready-to-copy snippet is available at [`examples/hermes-openherbarium-uvx.yaml`](examples/hermes-openherbarium-uvx.yaml). +### JSON setup examples + +Some MCP clients use a JSON config file instead of YAML. Ready-to-copy JSON +examples are provided in [`examples/`](examples/): + +| Client / use case | Example file | Notes | +|---|---|---| +| Hermes-style JSON | [`examples/hermes-mcp.json`](examples/hermes-mcp.json) | Same structure as Hermes `mcp_servers`, but JSON. Useful if you keep MCP snippets in a separate `mcp.json` before converting/merging into `config.yaml`. | +| Generic MCP clients | [`examples/generic-mcp.json`](examples/generic-mcp.json) | Uses the common `mcpServers` JSON key. | +| Claude Desktop / Claude Code-style configs | [`examples/claude-desktop-mcp.json`](examples/claude-desktop-mcp.json) | Copy the `openherbarium` entry under your existing `mcpServers`. | +| Cursor | [`examples/cursor-mcp.json`](examples/cursor-mcp.json) | Copy into Cursor's MCP configuration when it expects `mcpServers`. | +| Windsurf | [`examples/windsurf-mcp.json`](examples/windsurf-mcp.json) | Copy into Windsurf's MCP configuration when it expects `mcpServers`. | +| Local development checkout | [`examples/local-dev-mcp.json`](examples/local-dev-mcp.json) | Uses `uv --directory /absolute/path/to/openherbarium-mcp run openherbarium-mcp`. | + +Hermes JSON-style snippet: + +```json +{ + "mcp_servers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} +``` + +Generic `mcp.json` snippet used by many MCP clients: + +```json +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ] + } + } +} +``` + +If your client supports environment variables in MCP server definitions, you can +enable targeted Firecrawl search like this: + +```json +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "env": { + "FIRECRAWL_API_URL": "http://localhost:3002", + "FIRECRAWL_API_KEY": "" + } + } + } +} +``` + +Client-specific file locations change between applications and versions. When in +doubt, use the app's MCP settings screen and paste the `openherbarium` server +entry under its existing `mcpServers` object. + ### Development install with `uv` ```bash diff --git a/examples/claude-desktop-mcp.json b/examples/claude-desktop-mcp.json new file mode 100644 index 0000000..2946499 --- /dev/null +++ b/examples/claude-desktop-mcp.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} diff --git a/examples/cursor-mcp.json b/examples/cursor-mcp.json new file mode 100644 index 0000000..2946499 --- /dev/null +++ b/examples/cursor-mcp.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} diff --git a/examples/generic-mcp.json b/examples/generic-mcp.json new file mode 100644 index 0000000..2946499 --- /dev/null +++ b/examples/generic-mcp.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} diff --git a/examples/hermes-mcp.json b/examples/hermes-mcp.json new file mode 100644 index 0000000..62d45f9 --- /dev/null +++ b/examples/hermes-mcp.json @@ -0,0 +1,14 @@ +{ + "mcp_servers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} diff --git a/examples/local-dev-mcp.json b/examples/local-dev-mcp.json new file mode 100644 index 0000000..9556a19 --- /dev/null +++ b/examples/local-dev-mcp.json @@ -0,0 +1,15 @@ +{ + "mcpServers": { + "openherbarium": { + "command": "uv", + "args": [ + "--directory", + "/absolute/path/to/openherbarium-mcp", + "run", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +} diff --git a/examples/windsurf-mcp.json b/examples/windsurf-mcp.json new file mode 100644 index 0000000..2946499 --- /dev/null +++ b/examples/windsurf-mcp.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "openherbarium": { + "command": "uvx", + "args": [ + "--from", + "git+https://git.home-deneuville.fr/Edern/openherbarium-mcp.git", + "openherbarium-mcp" + ], + "timeout": 120, + "connect_timeout": 60 + } + } +}