Search / io.github.jeeftor/abs-mcp
Audiobookshelf MCP
L0· runs locallyInspect and safely operate Audiobookshelf libraries over MCP.
v0.6.0 · active · repository · descriptor JSON · versions
Search / io.github.jeeftor/abs-mcp
L0· runs locallyInspect and safely operate Audiobookshelf libraries over MCP.
v0.6.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"abs-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ABS_BASE_URL",
"-e",
"ABS_API_KEY",
"-e",
"ABS_READ_ONLY",
"-e",
"ABS_TIMEOUT",
"-e",
"ABS_FIXTURE_DIR",
"-e",
"ABS_TLS_INSECURE_SKIP_VERIFY",
"-e",
"ABS_TRANSPORT",
"-e",
"ABS_HTTP_ADDR",
"-e",
"ABS_HTTP_PATH",
"-e",
"ABS_HTTP_BEARER_TOKEN",
"ghcr.io/jeeftor/abs-mcp:0.6.0"
],
"env": {
"ABS_BASE_URL": "${ABS_BASE_URL}",
"ABS_API_KEY": "${ABS_API_KEY}",
"ABS_READ_ONLY": "true",
"ABS_TIMEOUT": "30s",
"ABS_FIXTURE_DIR": "test/abs",
"ABS_TLS_INSECURE_SKIP_VERIFY": "false",
"ABS_TRANSPORT": "stdio",
"ABS_HTTP_ADDR": "127.0.0.1:3333",
"ABS_HTTP_PATH": "/mcp",
"ABS_HTTP_BEARER_TOKEN": "${ABS_HTTP_BEARER_TOKEN}"
}
}
}
}claude mcp add abs-mcp -e "ABS_BASE_URL=${ABS_BASE_URL}" -e "ABS_API_KEY=${ABS_API_KEY}" -e "ABS_READ_ONLY=true" -e "ABS_TIMEOUT=30s" -e "ABS_FIXTURE_DIR=test/abs" -e "ABS_TLS_INSECURE_SKIP_VERIFY=false" -e "ABS_TRANSPORT=stdio" -e "ABS_HTTP_ADDR=127.0.0.1:3333" -e "ABS_HTTP_PATH=/mcp" -e "ABS_HTTP_BEARER_TOKEN=${ABS_HTTP_BEARER_TOKEN}" -- docker run -i --rm -e ABS_BASE_URL -e ABS_API_KEY -e ABS_READ_ONLY -e ABS_TIMEOUT -e ABS_FIXTURE_DIR -e ABS_TLS_INSECURE_SKIP_VERIFY -e ABS_TRANSPORT -e ABS_HTTP_ADDR -e ABS_HTTP_PATH -e ABS_HTTP_BEARER_TOKEN ghcr.io/jeeftor/abs-mcp:0.6.0[mcp_servers.abs-mcp]
command = "docker"
args = ["run", "-i", "--rm", "-e", "ABS_BASE_URL", "-e", "ABS_API_KEY", "-e", "ABS_READ_ONLY", "-e", "ABS_TIMEOUT", "-e", "ABS_FIXTURE_DIR", "-e", "ABS_TLS_INSECURE_SKIP_VERIFY", "-e", "ABS_TRANSPORT", "-e", "ABS_HTTP_ADDR", "-e", "ABS_HTTP_PATH", "-e", "ABS_HTTP_BEARER_TOKEN", "ghcr.io/jeeftor/abs-mcp:0.6.0"]
env = { "ABS_BASE_URL" = "${ABS_BASE_URL}", "ABS_API_KEY" = "${ABS_API_KEY}", "ABS_READ_ONLY" = "true", "ABS_TIMEOUT" = "30s", "ABS_FIXTURE_DIR" = "test/abs", "ABS_TLS_INSECURE_SKIP_VERIFY" = "false", "ABS_TRANSPORT" = "stdio", "ABS_HTTP_ADDR" = "127.0.0.1:3333", "ABS_HTTP_PATH" = "/mcp", "ABS_HTTP_BEARER_TOKEN" = "${ABS_HTTP_BEARER_TOKEN}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"abs-mcp": {
"type": "local",
"command": [
"docker",
"run",
"-i",
"--rm",
"-e",
"ABS_BASE_URL",
"-e",
"ABS_API_KEY",
"-e",
"ABS_READ_ONLY",
"-e",
"ABS_TIMEOUT",
"-e",
"ABS_FIXTURE_DIR",
"-e",
"ABS_TLS_INSECURE_SKIP_VERIFY",
"-e",
"ABS_TRANSPORT",
"-e",
"ABS_HTTP_ADDR",
"-e",
"ABS_HTTP_PATH",
"-e",
"ABS_HTTP_BEARER_TOKEN",
"ghcr.io/jeeftor/abs-mcp:0.6.0"
],
"enabled": true,
"environment": {
"ABS_BASE_URL": "{env:ABS_BASE_URL}",
"ABS_API_KEY": "{env:ABS_API_KEY}",
"ABS_READ_ONLY": "true",
"ABS_TIMEOUT": "30s",
"ABS_FIXTURE_DIR": "test/abs",
"ABS_TLS_INSECURE_SKIP_VERIFY": "false",
"ABS_TRANSPORT": "stdio",
"ABS_HTTP_ADDR": "127.0.0.1:3333",
"ABS_HTTP_PATH": "/mcp",
"ABS_HTTP_BEARER_TOKEN": "{env:ABS_HTTP_BEARER_TOKEN}"
}
}
}
}{
"mcpServers": {
"abs-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ABS_BASE_URL",
"-e",
"ABS_API_KEY",
"-e",
"ABS_READ_ONLY",
"-e",
"ABS_TIMEOUT",
"-e",
"ABS_FIXTURE_DIR",
"-e",
"ABS_TLS_INSECURE_SKIP_VERIFY",
"-e",
"ABS_TRANSPORT",
"-e",
"ABS_HTTP_ADDR",
"-e",
"ABS_HTTP_PATH",
"-e",
"ABS_HTTP_BEARER_TOKEN",
"ghcr.io/jeeftor/abs-mcp:0.6.0"
],
"env": {
"ABS_BASE_URL": "${ABS_BASE_URL}",
"ABS_API_KEY": "${ABS_API_KEY}",
"ABS_READ_ONLY": "true",
"ABS_TIMEOUT": "30s",
"ABS_FIXTURE_DIR": "test/abs",
"ABS_TLS_INSECURE_SKIP_VERIFY": "false",
"ABS_TRANSPORT": "stdio",
"ABS_HTTP_ADDR": "127.0.0.1:3333",
"ABS_HTTP_PATH": "/mcp",
"ABS_HTTP_BEARER_TOKEN": "${ABS_HTTP_BEARER_TOKEN}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=abs-mcp&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCItZSIsIkFCU19CQVNFX1VSTCIsIi1lIiwiQUJTX0FQSV9LRVkiLCItZSIsIkFCU19SRUFEX09OTFkiLCItZSIsIkFCU19USU1FT1VUIiwiLWUiLCJBQlNfRklYVFVSRV9ESVIiLCItZSIsIkFCU19UTFNfSU5TRUNVUkVfU0tJUF9WRVJJRlkiLCItZSIsIkFCU19UUkFOU1BPUlQiLCItZSIsIkFCU19IVFRQX0FERFIiLCItZSIsIkFCU19IVFRQX1BBVEgiLCItZSIsIkFCU19IVFRQX0JFQVJFUl9UT0tFTiIsImdoY3IuaW8vamVlZnRvci9hYnMtbWNwOjAuNi4wIl0sImVudiI6eyJBQlNfQkFTRV9VUkwiOiIke0FCU19CQVNFX1VSTH0iLCJBQlNfQVBJX0tFWSI6IiR7QUJTX0FQSV9LRVl9IiwiQUJTX1JFQURfT05MWSI6InRydWUiLCJBQlNfVElNRU9VVCI6IjMwcyIsIkFCU19GSVhUVVJFX0RJUiI6InRlc3QvYWJzIiwiQUJTX1RMU19JTlNFQ1VSRV9TS0lQX1ZFUklGWSI6ImZhbHNlIiwiQUJTX1RSQU5TUE9SVCI6InN0ZGlvIiwiQUJTX0hUVFBfQUREUiI6IjEyNy4wLjAuMTozMzMzIiwiQUJTX0hUVFBfUEFUSCI6Ii9tY3AiLCJBQlNfSFRUUF9CRUFSRVJfVE9LRU4iOiIke0FCU19IVFRQX0JFQVJFUl9UT0tFTn0ifX0%3D"
}{
"servers": {
"abs-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ABS_BASE_URL",
"-e",
"ABS_API_KEY",
"-e",
"ABS_READ_ONLY",
"-e",
"ABS_TIMEOUT",
"-e",
"ABS_FIXTURE_DIR",
"-e",
"ABS_TLS_INSECURE_SKIP_VERIFY",
"-e",
"ABS_TRANSPORT",
"-e",
"ABS_HTTP_ADDR",
"-e",
"ABS_HTTP_PATH",
"-e",
"ABS_HTTP_BEARER_TOKEN",
"ghcr.io/jeeftor/abs-mcp:0.6.0"
],
"env": {
"ABS_BASE_URL": "${ABS_BASE_URL}",
"ABS_API_KEY": "${ABS_API_KEY}",
"ABS_READ_ONLY": "true",
"ABS_TIMEOUT": "30s",
"ABS_FIXTURE_DIR": "test/abs",
"ABS_TLS_INSECURE_SKIP_VERIFY": "false",
"ABS_TRANSPORT": "stdio",
"ABS_HTTP_ADDR": "127.0.0.1:3333",
"ABS_HTTP_PATH": "/mcp",
"ABS_HTTP_BEARER_TOKEN": "${ABS_HTTP_BEARER_TOKEN}"
}
}
}
}{
"mcpServers": {
"abs-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ABS_BASE_URL",
"-e",
"ABS_API_KEY",
"-e",
"ABS_READ_ONLY",
"-e",
"ABS_TIMEOUT",
"-e",
"ABS_FIXTURE_DIR",
"-e",
"ABS_TLS_INSECURE_SKIP_VERIFY",
"-e",
"ABS_TRANSPORT",
"-e",
"ABS_HTTP_ADDR",
"-e",
"ABS_HTTP_PATH",
"-e",
"ABS_HTTP_BEARER_TOKEN",
"ghcr.io/jeeftor/abs-mcp:0.6.0"
],
"env": {
"ABS_BASE_URL": "${ABS_BASE_URL}",
"ABS_API_KEY": "${ABS_API_KEY}",
"ABS_READ_ONLY": "true",
"ABS_TIMEOUT": "30s",
"ABS_FIXTURE_DIR": "test/abs",
"ABS_TLS_INSECURE_SKIP_VERIFY": "false",
"ABS_TRANSPORT": "stdio",
"ABS_HTTP_ADDR": "127.0.0.1:3333",
"ABS_HTTP_PATH": "/mcp",
"ABS_HTTP_BEARER_TOKEN": "${ABS_HTTP_BEARER_TOKEN}"
}
}
}
}extensions:
"abs-mcp":
enabled: true
name: "abs-mcp"
type: stdio
cmd: "docker"
args:
- "run"
- "-i"
- "--rm"
- "-e"
- "ABS_BASE_URL"
- "-e"
- "ABS_API_KEY"
- "-e"
- "ABS_READ_ONLY"
- "-e"
- "ABS_TIMEOUT"
- "-e"
- "ABS_FIXTURE_DIR"
- "-e"
- "ABS_TLS_INSECURE_SKIP_VERIFY"
- "-e"
- "ABS_TRANSPORT"
- "-e"
- "ABS_HTTP_ADDR"
- "-e"
- "ABS_HTTP_PATH"
- "-e"
- "ABS_HTTP_BEARER_TOKEN"
- "ghcr.io/jeeftor/abs-mcp:0.6.0"
envs:
"ABS_BASE_URL": "${ABS_BASE_URL}"
"ABS_API_KEY": "${ABS_API_KEY}"
"ABS_READ_ONLY": "true"
"ABS_TIMEOUT": "30s"
"ABS_FIXTURE_DIR": "test/abs"
"ABS_TLS_INSECURE_SKIP_VERIFY": "false"
"ABS_TRANSPORT": "stdio"
"ABS_HTTP_ADDR": "127.0.0.1:3333"
"ABS_HTTP_PATH": "/mcp"
"ABS_HTTP_BEARER_TOKEN": "${ABS_HTTP_BEARER_TOKEN}"
timeout: 300
Placeholders to fill from your own secret store: ${ABS_API_KEY}, ${ABS_HTTP_BEARER_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured ~updated-83d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/jeeftor/abs-mcp:0.6.0 | oci | unpinned | – | ABS_API_KEY, ABS_HTTP_BEARER_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.jeeftor/abs-mcp",
"title": "Audiobookshelf MCP",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.6.0",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/jeeftor/abs-mcp:0.6.0",
"registryType": "oci",
"environmentVariables": [
{
"name": "ABS_BASE_URL",
"format": "string",
"isRequired": true,
"description": "Base URL of your Audiobookshelf server.",
"placeholder": "http://localhost:13378"
},
{
"name": "ABS_API_KEY",
"format": "string",
"isSecret": true,
"isRequired": true,
"description": "Audiobookshelf API key or bearer token."
},
{
"name": "ABS_READ_ONLY",
"format": "boolean",
"default": "true",
"description": "Set to false to enable scan and cleanup tools."
},
{
"name": "ABS_TIMEOUT",
"format": "string",
"default": "30s",
"description": "Audiobookshelf request timeout as a Go duration or seconds."
},
{
"name": "ABS_FIXTURE_DIR",
"format": "filepath",
"default": "test/abs",
"description": "Optional local ABS fixture directory for fixture resources."
},
{
"name": "ABS_EXTRA_HEADERS_FILE",
"format": "filepath",
"description": "Optional JSON file containing extra request headers."
},
{
"name": "ABS_TLS_CA_CERT_FILE",
"format": "filepath",
"description": "Optional PEM CA bundle for private or corporate ABS TLS."
},
{
"name": "ABS_TLS_INSECURE_SKIP_VERIFY",
"format": "boolean",
"default": "false",
"description": "Temporary TLS verification bypass for local troubleshooting."
},
{
"name": "ABS_TRANSPORT",
"format": "string",
"default": "stdio",
"description": "MCP transport to run at startup. Use stdio for local launchers or http for Streamable HTTP."
},
{
"name": "ABS_HTTP_ADDR",
"format": "string",
"default": "127.0.0.1:3333",
"description": "Bind address used when ABS_TRANSPORT=http."
},
{
"name": "ABS_HTTP_PATH",
"format": "string",
"default": "/mcp",
"description": "Streamable HTTP endpoint path used when ABS_TRANSPORT=http."
},
{
"name": "ABS_HTTP_BEARER_TOKEN",
"format": "string",
"isSecret": true,
"description": "Optional bearer token required from Streamable HTTP MCP clients."
}
]
}
],
"repository": {
"url": "https://github.com/jeeftor/abs-mcp",
"source": "github"
},
"description": "Inspect and safely operate Audiobookshelf libraries over MCP."
}