search_people
Search for people by full or partial name to locate individuals in your photo library. Returns matching people with ID, name, and photo count.
Instructions
Search for people by name (partial match). Use this when you know the person's name. For browsing all people, use list_people instead. Read-only.
Args:
name: Full or partial name to match (case-insensitive).
with_hidden: Include hidden people in results (default false).
Returns: JSON array of matching people with id, name, and photo count.Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| with_hidden | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/immich_mcp_server/server.py:958-970 (registration)MCP tool registration for 'search_people' — decorated with @mcp.tool(), defines the tool interface (name, with_hidden params) and delegates to ImmichClient.search_people().
@mcp.tool() async def search_people(ctx: Context, name: str, with_hidden: bool = False) -> str: """Search for people by name (partial match). Use this when you know the person's name. For browsing all people, use list_people instead. Read-only. Args: name: Full or partial name to match (case-insensitive). with_hidden: Include hidden people in results (default false). Returns: JSON array of matching people with id, name, and photo count. """ result = await _client(ctx).search_people(name, with_hidden=with_hidden) return json.dumps(result, default=str) - Actual implementation: calls Immich REST API GET /search/person with query params 'name' and 'withHidden'.
async def search_people(self, name: str, with_hidden: bool = False) -> list[dict]: """Search people by name.""" params = {"name": name, "withHidden": str(with_hidden).lower()} return await self._request("GET", "/search/person", params=params)