We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OleksandrKucherenko/mcp-obsidian-via-rest'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
# This file is dedicated for running end-to-end tests with Testcontainers.
# It defines both the Obsidian service (with the REST API plugin) and the MCP server itself,
# ensuring they run in a shared, isolated network environment for reliable testing.
services:
obsidian:
networks:
- mcp-test-net
build:
context: ./dockerize
dockerfile: Dockerfile
container_name: obsidian
environment:
# VNC: tvnviewer -host=localhost -port=50001 -password=testpassword -encoding=zrle
- VNC_PASSWORD=testpassword
ports:
- "50000:27124" # REST API
- "50001:5900" # VNC on 5901 to avoid conflict with dev instance
cap_add:
- SYS_ADMIN
devices:
- /dev/fuse:/dev/fuse
security_opt:
- apparmor:unconfined
healthcheck:
test: [ "CMD", "wget", "--no-check-certificate", "-S", "https://127.0.0.1:27124", "-O", "/dev/null", "-q" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
mcp:
build:
context: .
dockerfile: Dockerfile
container_name: mcp
networks:
- mcp-test-net
depends_on:
obsidian:
condition: service_healthy
ports:
- "3000:3000" # HTTP transport port
environment:
- DEBUG=mcp:*
# Enable both stdio and http transports for testing
- MCP_TRANSPORTS=stdio,http
- MCP_HTTP_PORT=3000
- MCP_HTTP_HOST=0.0.0.0
- MCP_HTTP_PATH=/mcp
# This API_HOST points to the obsidian service name, using Docker's internal DNS.
- API_HOST=https://obsidian
- API_PORT=27124 # REST API port
- API_KEY=190ba65d28ac1ba4797cb195bb06f20965395abbd9c39a0fa9b6cab2345c58b9
stdin_open: true # Keep STDIN open to allow the test runner to send MCP commands.
tty: false # Allocate a TTY for interactive communication.
healthcheck:
# Use HTTP endpoint for health check (HTTP transport is enabled)
# test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health" ]
# OR alternative way to check health:
# test: [ "CMD", "stat", "/tmp/mcp_healthy" ]
# OR alternative way to check health, file change time:
# if file is older than 30 seconds, it is not healthy
test: [ "CMD-SHELL", "test -f /tmp/mcp_healthy && test $(($(date +%s) - $(stat -c %Y /tmp/mcp_healthy))) -lt 30" ]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
mcp-test-net:
driver: bridge