WhatsApp Business API (Meta Cloud API)
- New client: src/clients/whatsapp.ts
- Tools: whatsapp_send_message, whatsapp_send_template, whatsapp_list_templates
- REST endpoints: POST /api/whatsapp/send, POST /api/whatsapp/template, GET /api/whatsapp/templates
- Multi-account env var pattern: WHATSAPP_{ACCOUNT}_*
LinkedIn API (OpenID Connect)
- New client: src/clients/linkedin.ts
- Tools: linkedin_get_profile, linkedin_create_post, linkedin_search_connections, linkedin_send_message
- REST endpoints: GET /api/linkedin/profile, POST /api/linkedin/post, POST /api/linkedin/search-connections, POST /api/linkedin/message
- Multi-account env var pattern: LINKEDIN_{ACCOUNT}_*
- Uses /v2/userinfo (OpenID Connect) for profile reads
Domain migration
- hermes.fetcherpay.com -> hermes.squaremcp.com
- Updated K8s ingress, TLS cert, SERVER_URL env var
- Updated OPENCODE.md and opencode.json references
SquareMCP site
- Added logo assets (SVG, LinkedIn variants)
- Added terms.html
- Updated Dockerfile, nginx config, styles, index, privacy pages
Docs
- Added OPENCODE.md for opencode AI integration setup
- Updated .env.example with WhatsApp and LinkedIn credentials
- Added opencode.json to .gitignore (contains live API key)
Total tools: 19 (email 6, obsidian 5, whatsapp 4, linkedin 4)
94 lines
2.5 KiB
Markdown
94 lines
2.5 KiB
Markdown
# Connecting hermes-mcp to opencode AI
|
|
|
|
The server is deployed at `https://hermes.squaremcp.com` with a Streamable HTTP MCP endpoint (MCP 1.x).
|
|
|
|
## Quick setup
|
|
|
|
An `opencode.json` is already in this repo with the connection pre-configured. Open opencode in this directory and hermes-mcp will be available automatically.
|
|
|
|
## Manual configuration
|
|
|
|
### Project-level (`opencode.json` in project root)
|
|
|
|
```json
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"mcp": {
|
|
"hermes": {
|
|
"type": "remote",
|
|
"url": "https://hermes.squaremcp.com/mcp",
|
|
"headers": {
|
|
"x-api-key": "YOUR_MCP_API_KEY"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Global (`~/.config/opencode/config.json`)
|
|
|
|
```json
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"mcp": {
|
|
"hermes": {
|
|
"type": "remote",
|
|
"url": "https://hermes.squaremcp.com/mcp",
|
|
"headers": {
|
|
"x-api-key": "YOUR_MCP_API_KEY"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Replace `YOUR_MCP_API_KEY` with the value of `MCP_API_KEY` from your `.env` or Kubernetes secret.
|
|
|
|
## Connection details
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Transport | Streamable HTTP (MCP 1.x) |
|
|
| Endpoint | `https://hermes.squaremcp.com/mcp` |
|
|
| Auth | `x-api-key` header (or `?key=` query param, or `Authorization: Bearer`) |
|
|
| Legacy SSE | `https://hermes.squaremcp.com/sse` |
|
|
|
|
## Fallback: SSE transport
|
|
|
|
If opencode requires SSE transport instead of Streamable HTTP:
|
|
|
|
```json
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"mcp": {
|
|
"hermes": {
|
|
"type": "sse",
|
|
"url": "https://hermes.squaremcp.com/sse",
|
|
"headers": {
|
|
"x-api-key": "YOUR_MCP_API_KEY"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Available tools
|
|
|
|
| Tool | Description |
|
|
|------|-------------|
|
|
| `get_profile` | Get email address for an account |
|
|
| `search_messages` | Search INBOX by keyword / sender / subject |
|
|
| `read_message` | Read full message body by UID |
|
|
| `list_folders` | List all mailbox folders |
|
|
| `create_draft` | Save a draft to the Drafts folder |
|
|
| `send_email` | Send an email |
|
|
| `whatsapp_send_message` | Send a WhatsApp message |
|
|
| `whatsapp_send_template` | Send an approved WhatsApp template message |
|
|
| `whatsapp_get_message_status` | Check WhatsApp message delivery status |
|
|
| `whatsapp_list_templates` | List approved WhatsApp templates |
|
|
| `obsidian_search_notes` | Search notes in the Obsidian vault |
|
|
| `obsidian_read_note` | Read a specific note |
|
|
| `obsidian_append_to_note` | Append content to a note |
|
|
| `obsidian_update_note` | Overwrite a note |
|
|
| `obsidian_sync_status` | Check Obsidian sync status |
|