Harris Teeter grocery pickup — search, cart, pickup times and checkout via your browser
Connect Runs on your machine
claude mcp add harristeeter-mcp -e HARRISTEETER_WS_PORT=<HARRISTEETER_WS_PORT> -e HARRISTEETER_DEBUG=<HARRISTEETER_DEBUG> -e MCP_USER_TZ=<MCP_USER_TZ> -e KROGER_API_CLIENT_ID=<KROGER_API_CLIENT_ID> -e KROGER_API_CLIENT_SECRET=<KROGER_API_CLIENT_SECRET> -e HARRISTEETER_LOCATION_ID=<HARRISTEETER_LOCATION_ID> -e HARRISTEETER_STATE_DIR=<HARRISTEETER_STATE_DIR> -e FETCHPROXY_WS_HOST=<FETCHPROXY_WS_HOST> -e FETCHPROXY_IDENTITY_DIR=<FETCHPROXY_IDENTITY_DIR> -- npx -y @chrischall/[email protected]
{
"mcpServers": {
"harristeeter-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/[email protected]"
],
"env": {
"HARRISTEETER_WS_PORT": "<HARRISTEETER_WS_PORT>",
"HARRISTEETER_DEBUG": "<HARRISTEETER_DEBUG>",
"MCP_USER_TZ": "<MCP_USER_TZ>",
"KROGER_API_CLIENT_ID": "<KROGER_API_CLIENT_ID>",
"KROGER_API_CLIENT_SECRET": "<KROGER_API_CLIENT_SECRET>",
"HARRISTEETER_LOCATION_ID": "<HARRISTEETER_LOCATION_ID>",
"HARRISTEETER_STATE_DIR": "<HARRISTEETER_STATE_DIR>",
"FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
"FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
}
}
}
}
{
"mcpServers": {
"harristeeter-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/[email protected]"
],
"env": {
"HARRISTEETER_WS_PORT": "<HARRISTEETER_WS_PORT>",
"HARRISTEETER_DEBUG": "<HARRISTEETER_DEBUG>",
"MCP_USER_TZ": "<MCP_USER_TZ>",
"KROGER_API_CLIENT_ID": "<KROGER_API_CLIENT_ID>",
"KROGER_API_CLIENT_SECRET": "<KROGER_API_CLIENT_SECRET>",
"HARRISTEETER_LOCATION_ID": "<HARRISTEETER_LOCATION_ID>",
"HARRISTEETER_STATE_DIR": "<HARRISTEETER_STATE_DIR>",
"FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
"FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
}
}
}
}
{
"servers": {
"harristeeter-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@chrischall/[email protected]"
],
"env": {
"HARRISTEETER_WS_PORT": "<HARRISTEETER_WS_PORT>",
"HARRISTEETER_DEBUG": "<HARRISTEETER_DEBUG>",
"MCP_USER_TZ": "<MCP_USER_TZ>",
"KROGER_API_CLIENT_ID": "<KROGER_API_CLIENT_ID>",
"KROGER_API_CLIENT_SECRET": "<KROGER_API_CLIENT_SECRET>",
"HARRISTEETER_LOCATION_ID": "<HARRISTEETER_LOCATION_ID>",
"HARRISTEETER_STATE_DIR": "<HARRISTEETER_STATE_DIR>",
"FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
"FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
HARRISTEETER_WS_PORTOptional | Override the fetchproxy WebSocket port (default 37149). |
HARRISTEETER_DEBUGOptional | Set to 1 for verbose bridge logging to stderr. |
MCP_USER_TZOptional | IANA time zone sent with pickup-time requests (default America/New_York). |
KROGER_API_CLIENT_IDOptional | Optional Kroger developer app id: product search and prices without the browser. |
KROGER_API_CLIENT_SECRETOptional, secret | Optional Kroger developer app secret. |
HARRISTEETER_LOCATION_IDOptional | Optional 8-digit store id for bridge-free search; a store saved with ht_set_store wins. |
HARRISTEETER_STATE_DIROptional | Where the saved and remembered store live (default ~/.harristeeter-mcp). |
FETCHPROXY_WS_HOSTOptional | Bind interface for the fetchproxy concentrator (default 127.0.0.1; a literal IP only). For a hosted child in its own network namespace only — never bind a laptop's concentrator to the network. |
FETCHPROXY_IDENTITY_DIROptional | Absolute path where fetchproxy stores its long-term identity keypair (default ~/.fetchproxy/identity/). For a host that runs a separate child per caller, so they share one identity. |
Details
| Package | @chrischall/[email protected] (NPM, stdio) |
| First published | 11 Nov 2026 |
| Last updated | 11 Nov 2026 |
| Registry name | io.github.chrischall/harristeeter-mcp |
More search and web servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
