Victorian Council Bin Lookup
Local MCP server for checking council bin collection dates from a residential address.
README
Victorian Council Bin Lookup
Victorian Council Bin Lookup is a local MCP server for checking council bin collection dates from a residential address.
It exposes a get_bin_collection MCP tool that returns upcoming rubbish, recycling, and food/garden collection dates in a structured format.
The server is designed to grow council-by-council, using small adapters for each council's public lookup system.
Supported Councils
- City of Casey
- Hume City Council
Features
- Look up bin collection dates by address
- Supports City of Casey and Hume City Council
- Returns structured MCP output for AI agents
- Handles council-specific address formatting
- No OpenAI API key required
- Runs locally over MCP stdio or remotely over HTTP
Install
Clone this repository and install dependencies:
git clone https://github.com/williamyun7/victorian-council-bin-lookup.git
cd victorian-council-bin-lookup
npm install
This project currently has no external npm dependencies, but npm install will still prepare the local package if dependencies are added later.
Test Directly
npm run test:call
You can pass an address and council:
npm run test:call -- --council casey 123 Demo Street Exampleville 3999
npm run test:call -- --council hume 45 Sample Road Testfield 3998
Add to Codex
codex mcp add victorian-council-bin-lookup -- node /path/to/victorian-council-bin-lookup/server.js
Then start a new Codex thread and ask:
Use the Victorian Council Bin Lookup MCP tool to check which bins are collected for 123 Demo Street Exampleville this week.
The server exposes one MCP tool: get_bin_collection.
Run as an HTTP Server
For Azure or other hosted environments, run the HTTP entrypoint:
npm start
By default this listens on port 3000. You can change it with PORT:
PORT=8080 npm run http
HTTP endpoints:
GET /healthhealth check for hosting platformsPOST /mcpJSON-RPC MCP endpointGET /api/bin-collection?address=...&council=autosimple REST endpoint for testing
Optional environment variables:
API_KEYprotects/mcpand/api/bin-collectionwithAuthorization: Bearer <key>orx-api-key: <key>ALLOWED_ORIGINScomma-separated list of allowed browser originsPORTHTTP listen portHOSTHTTP bind host, defaults to0.0.0.0for container hosting
Example REST test:
curl "http://localhost:3000/api/bin-collection?address=123%20Demo%20Street%20Exampleville%203999&council=casey"
Example MCP initialize call:
curl -X POST "http://localhost:3000/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'
Deploy to Azure App Service
Azure App Service is the recommended Azure deployment path for this project. It avoids Azure Container Registry build tasks and runs the HTTP MCP endpoint with npm start.
az login
az group create \
--name victorian-council-bin-lookup-rg \
--location australiaeast \
--output table
az appservice plan create \
--name victorian-council-bin-lookup-plan \
--resource-group victorian-council-bin-lookup-rg \
--location australiaeast \
--sku F1 \
--is-linux \
--output table
az webapp create \
--name victorian-council-bin-lookup \
--resource-group victorian-council-bin-lookup-rg \
--plan victorian-council-bin-lookup-plan \
--runtime "NODE:22-lts" \
--startup-file "npm start" \
--output table
Deploy from the repository folder:
zip -r app.zip . -x ".git/*" "node_modules/*" "app.zip"
az webapp deploy \
--name victorian-council-bin-lookup \
--resource-group victorian-council-bin-lookup-rg \
--src-path app.zip \
--type zip
Test the deployed app:
curl https://victorian-council-bin-lookup.azurewebsites.net/health
Expected response:
{"ok":true,"service":"victorian-council-bin-lookup"}
Test the MCP endpoint:
curl -X POST "https://victorian-council-bin-lookup.azurewebsites.net/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
To require an API key:
az webapp config appsettings set \
--name victorian-council-bin-lookup \
--resource-group victorian-council-bin-lookup-rg \
--settings API_KEY="replace-with-a-long-random-value"
Then include the key when calling /mcp or /api/bin-collection:
curl -X POST "https://victorian-council-bin-lookup.azurewebsites.net/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer replace-with-a-long-random-value" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
The App Service deployment runs npm start, which starts http-server.js.
Deploy to Azure Container Apps
The included Dockerfile can also run this server on Azure Container Apps, but az containerapp up --source . uses Azure Container Registry Tasks to build the image. Some subscriptions do not allow ACR Tasks and will fail with TasksOperationsNotAllowed.
If your subscription supports ACR Tasks, deploy from the repository folder:
az extension add --name containerapp --upgrade
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
az provider register --namespace Microsoft.ContainerRegistry
az containerapp up \
--name victorian-council-bin-lookup \
--resource-group victorian-council-bin-lookup-rg \
--location australiaeast \
--environment victorian-council-bin-lookup-env \
--source .
Tool Input
get_bin_collection accepts:
addressrequired residential addresscounciloptional value:auto,casey, orhumedateoptional date inYYYY-MM-DDformat, defaulting to today in Melbourne time
Address input is formatted for each council before lookup.
- Casey searches uppercase addresses and keeps/adds
VICbefore a postcode, for example123 DEMO STREET EXAMPLEVILLE VIC 3999. - Hume removes
VICand tidies comma spacing, for example45 Sample Road, Testfield 3998.
Example Prompts
Use the Victorian Council Bin Lookup MCP tool to check which bins are collected for 123 Demo Street Exampleville VIC 3999 this week.
Use the Victorian Council Bin Lookup MCP tool to check the bin collection for 45 Sample Road, Testfield 3998 next week.
Responsible Use
This project uses public council lookup endpoints and is intended for light personal use. Please avoid bulk scraping or frequent polling, and respect each council website's terms and availability.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。