Are you the author? Sign in to claim
MCP server that exposes advanced tools for querying a Stash instance.
An MCP (Model Context Protocol) server that provides a concise set of tools to query and analyze an Stash instance with composable, high‑precision filters, optimized caching for faster queries, automated intelligence for performer/scene analysis, and personalized recommendations based on usage and preferences.
| Prompt | Description | Parameters |
|---|---|---|
| analyze-performer | Complete performer analysis with insights | performer_name: str |
| library-insights | Strategic insights for the entire library | — |
| recommend-scenes | Personalized scene recommendations | preferences: str |
| discover-performers | Performer discovery by criteria | criteria: str |
| Resource | Description | URI |
|---|---|---|
| All performers | List of all favorite performers with basic info | stash://performer/all |
| Performers Information | Detailed information about a specific performer | stash://performer/{name} |
| Performers by Country | List of performers filtered by country | stash://performer/country/{country} |
| Performers by Ethnicity | List of performers filtered by ethnicity | stash://performer/ethnicity/{ethnicity} |
| Performers Statistics | Statistical summary of all performers | stash://performer/stats |
| Resource | Description | URI |
|---|---|---|
| All studios | List of all favorite studios with basic info | stash://studio/all |
| Studio Information | Detailed information about a specific studio | stash://studio/{name} |
| Studios Statistics | Statistical summary of all studios | stash://studio/stats |
| Resource | Description | URI |
|---|---|---|
| All tags | List of all favorite tags with basic info | stash://tag/all |
| Tag Information | Detailed information about a specific tag | stash://tag/{name} |
| Tags Statistics | Statistical summary of all tags | stash://tag/stats |
| Tool | Description | Parameters |
|---|---|---|
| advanced_performer_analysis | Deep analysis with progress and logging | performer_name: str, include_similar: bool, deep_scene_analysis: bool |
| batch_performer_insights | Aggregated insights from multiple performers | performer_names: List[str], max_performers: int |
| health_check | Basic connectivity/cache status | — |
| get_performer_info | Detailed performer information | performer_name: str |
| get_all_performers | List performers with advanced filtering | favorites_only: bool=True, advanced filters (see "Advanced Filters" section) |
| get_all_scenes_from_performer | Scenes for a performer | performer_name: str, organized_only: bool=True |
| get_all_scenes | List all scenes with optional filters | advanced filters (see "Advanced Filters" section) |
get_all_performersThis tool now supports advanced filtering by multiple physical and demographic criteria:
favorites_only: bool = True - Limit to favorite performerscountry: str - Filter by countryethnicity: str - Filter by ethnicityeye_color: str - Filter by eye colorhair_color: str - Filter by hair colormeasurements: str - Filter by body measurementspiercings: str - Filter by piercingstattoos: str - Filter by tattoosheight_cm: int - Filter by height in centimetersweight: int - Filter by weightEach filter supports modifiers for different comparison types:
EQUALS (default) - Exact matchNOT_EQUALS - Not equalGREATER_THAN - Greater than (numeric only)LESS_THAN - Less than (numeric only)BETWEEN - Between two values (numeric only, requires _value2)NOT_BETWEEN - Not between two values (numeric only, requires _value2)For BETWEEN and NOT_BETWEEN filters:
height_cm_value2: int - Second value for height rangeweight_value2: int - Second value for weight rangeThe server provides dedicated resources to access performers information in multiple formats:
stash://performer/all - Lists all favorite performers with basic information
stash://performer/{name} - Detailed information for a specific performer
{name} - Exact performer namestash://performer/country/{country} - Filter performers by country
{country} - Country name or code (e.g., "USA", "ES")stash://performer/ethnicity/{ethnicity} - Filter performers by ethnicity
{ethnicity} - Ethnicity name (e.g., "Caucasian", "Asian")stash://performer/stats - Statistical summary of the performer database
The server supports flexible configuration through environment variables:
| Variable | Default | Description |
|---|---|---|
STASH_ENDPOINT | http://localhost:6969 | Stash server endpoint |
STASH_API_KEY | — | Required API key (mandatory) |
STASH_CONNECT_RETRIES | 3 | Initial connection retries |
STASH_CONNECT_DELAY_SECONDS | 1.5 | Delay between retries (seconds) |
FAVORITES | true | Filter resources by favorites only |
LOG_LEVEL | INFO | Log level: DEBUG, INFO, WARNING, ERROR |
cp .env.example .env
.env with your settings:STASH_ENDPOINT=http://localhost:9999
STASH_API_KEY=YOUR_API_KEY
Clone the repository and install with uv:
git clone https://github.com/donlothario/stash_mcp_server.git
cd stash_mcp_server
cp .env.example .env
# Edit .env file with your Stash settings
uv sync
Or install directly from the repository:
uv add git+https://github.com/donlothario/stash_mcp_server.git
Install the package in mode:
git clone https://github.com/donlothario/stash_mcp_server.git
cd stash_mcp_server
cp .env.example .env
# Edit .env file with your Stash settings
python3 -m pip install .
Or install directly from the repository:
python3 -m pip install git+https://github.com/donlothario/stash_mcp_server.git
Build the image:
docker build -t stash_mcp_server:latest .
Pull the latest image from the Docker registry:
docker pull ghcr.io/donlothario/stash_mcp_server:latest
uv run stash_mcp_server
python3 -m stash_mcp_server
Add this configuration to your application's settings (mcp.json):
"stash mcp server": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/stash_mcp_server",
"stash_mcp_server"
],
"env": {
"STASH_ENDPOINT": "http://localhost:9999",
"STASH_API_KEY": "YOUR_API_KEY",
}
}
"stash mcp server": {
"type": "stdio",
"command": "python3",
"args": [
"-m",
"stash_mcp_server"
],
"env": {
"STASH_ENDPOINT": "http://localhost:9999",
"STASH_API_KEY": "YOUR_API_KEY",
}
}
"stash mcp server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--env-file",
"${workspaceFolder}/.env",
"ghcr.io/donlothario/stash_mcp_server"
]
}
FRAGMENTS).Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows