dev-mcps/README.md

32 lines
1.7 KiB
Markdown

# MCP servers
Four independent Streamable HTTP MCP servers, each in its own directory with its own README and tests:
- `coding-agent-mcp` - scoped workspace editing.
- `dev-server-mcp` - authenticated facade for an allowlisted development-server worker (the same image runs the facade and the worker).
- `browser-mcp` - Playwright automation restricted to exact allowed origins.
- `minio-mcp` - bounded list/read/stat/write access to object storage.
This repository holds their code. **Deploying them is a separate repository**,
[`mcps-docker-compose`](https://gitea-s2i2s.isti.cnr.it/lelii/mcps-docker-compose): the compose files,
the gateway's Caddyfiles, the example `.env` and the documentation of every environment variable. It pulls
the images published from here, so a server needs no sources and no build toolchain.
## Publishing the images
```sh
docker login -u luciolelii # once; use an access token with read and write permission
./publish-images.sh # all four
./publish-images.sh minio-mcp # or just some
```
Each image is built for `linux/amd64` and `linux/arm64` and pushed to `luciolelii/<name>` tagged with
this repository's commit hash and `latest`. The script refuses to run on a dirty working tree, because
the tag names a commit. Afterwards, deploy by setting `MCP_IMAGE_TAG` in the deployment repository (or
the default in its `mcp-stack.compose.yml`) to the printed hash.
The dev-server image fixes its user at `10001:10001` when it is built, because the two volumes its worker
mounts take their owner from the image. See the deployment repository for what that means at run time.
Tests: `npm test` inside each server's directory.