Add Freshservice MCP server for Cowork deployment
Cowork runs the agent in an isolated VM, so the uploaded skill can't see host credentials or reach the Freshservice host. Add an HTTP/streamable MCP server (bearer-auth, Dockerfile, compose) to run as a container on the LAN box and connect via mcp-remote like the existing sharepoint-lists server. The skill remains the right tool for the non-sandboxed Claude Code CLI. Also gitignore mcp-server/.env and include the desktop skill install package. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
67
mcp-server/README.md
Normal file
67
mcp-server/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Freshservice MCP server (for Cowork / Claude Desktop)
|
||||
|
||||
Cowork runs the agent inside an isolated VM, so a locally-installed *skill*
|
||||
can't see your credentials or reach your Freshservice host. This MCP server
|
||||
runs as a container on the LAN box (`192.168.101.12`) — outside the VM — and
|
||||
Claude Desktop connects to it through `mcp-remote`, exactly like the existing
|
||||
`sharepoint-lists` server. Credentials and network both live on the LAN box.
|
||||
|
||||
(The skill in the parent directory remains the right tool for the Claude Code
|
||||
CLI, which is not sandboxed.)
|
||||
|
||||
## Deploy on 192.168.101.12
|
||||
|
||||
```bash
|
||||
# on the LAN box, in this directory
|
||||
cp .env.example .env
|
||||
# edit .env: FRESHSERVICE_DOMAIN, FRESHSERVICE_API_KEY, MCP_AUTH_TOKEN
|
||||
# token: openssl rand -hex 32
|
||||
docker compose up -d --build
|
||||
docker compose logs -f # confirm it started on :3838 inside the container
|
||||
```
|
||||
|
||||
The container listens on container port 3838, published to host port **3839**
|
||||
(3838 is used by sharepoint-lists). Adjust in `docker-compose.yml` if needed.
|
||||
|
||||
### Verify
|
||||
|
||||
```bash
|
||||
# from the LAN box or any host that can reach it:
|
||||
curl -s -o /dev/null -w "%{http_code}\n" -X POST \
|
||||
http://192.168.101.12:3839/mcp \
|
||||
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "Accept: application/json, text/event-stream" \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"0"}}}'
|
||||
# expect 200 (401 means bad/missing token)
|
||||
```
|
||||
|
||||
## Connect Claude Desktop
|
||||
|
||||
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` under
|
||||
`mcpServers` (alongside `sharepoint-lists`):
|
||||
|
||||
```json
|
||||
"freshservice": {
|
||||
"command": "/opt/homebrew/bin/npx",
|
||||
"args": [
|
||||
"-y", "mcp-remote",
|
||||
"http://192.168.101.12:3839/mcp",
|
||||
"--allow-http",
|
||||
"--header", "Authorization:${MCP_AUTH_HEADER}"
|
||||
],
|
||||
"env": { "MCP_AUTH_HEADER": "Bearer <MCP_AUTH_TOKEN>" }
|
||||
}
|
||||
```
|
||||
|
||||
Restart Claude Desktop. The Freshservice tools then appear in chat and Cowork.
|
||||
|
||||
## Tools
|
||||
|
||||
Tickets (`list_tickets`, `get_ticket`, `create_ticket`, `update_ticket`,
|
||||
`reply_ticket`, `add_note`, `list_ticket_conversations`), assets
|
||||
(`search_assets`, `get_asset`, `update_asset`), people (`find_requester`,
|
||||
`list_agents`, `list_groups`, `list_departments`), change/problem/release
|
||||
(`list_changes`, `get_change`, `create_change`, `list_problems`, `get_problem`,
|
||||
`list_releases`, `get_release`), and `freshservice_request` for any other v2
|
||||
endpoint.
|
||||
Reference in New Issue
Block a user