planwire-mcp
by beshogun
README.md
# PlanWire MCP Server
Use UK planning application data inside Claude, Cursor, and any MCP client.
PlanWire exposes fresh, normalised UK planning application data through a public API. This MCP server wraps that API as agent tools so an assistant can search applications, inspect a specific record, look near a location, and list supported councils without you writing API calls by hand.
Get a free sandbox API key at https://planwire.io/?utm_source=npm&utm_medium=mcp_readme&utm_campaign=mcp.
## What MCP Is
Model Context Protocol (MCP) is a standard way for AI tools to call external services. You run this package locally through `npx`; it talks to PlanWire using your own API key and returns structured planning data to the MCP client.
This server uses stdio transport. It does not store credentials or run a hosted proxy.
## Install
You need Node.js 18+ and a PlanWire API key.
```bash
npx -y planwire-mcp
```
Use the package name exactly as shown: `planwire-mcp`. If an MCP directory shows an install command for `beshogun-planwire-mcp`, that directory has stale generated metadata and the install will fail.
The server expects `PLANWIRE_API_KEY` in the environment. Optional: set `PLANWIRE_API_BASE` to override the default `https://api.planwire.io`.
## Claude Desktop
Add this to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"planwire": {
"command": "npx",
"args": ["-y", "planwire-mcp"],
"env": {
"PLANWIRE_API_KEY": "your_planwire_key_here"
}
}
}
}
```
Restart Claude Desktop after saving the config.
## Claude Code
Add this to your project `.mcp.json`:
```json
{
"mcpServers": {
"planwire": {
"command": "npx",
"args": ["-y", "planwire-mcp"],
"env": {
"PLANWIRE_API_KEY": "your_planwire_key_here"
}
}
}
}
```
## Cursor
Add the same server command in Cursor's MCP settings:
```json
{
"mcpServers": {
"planwire": {
"command": "npx",
"args": ["-y", "planwire-mcp"],
"env": {
"PLANWIRE_API_KEY": "your_planwire_key_here"
}
}
}
}
```
## Tools
| Tool | What it does |
| --- | --- |
| `search_planning_applications` | Search by keyword, council, postcode, status, type, or date range. |
| `nearby_planning_applications` | Find applications near a latitude/longitude point. |
| `get_planning_application` | Fetch one application by PlanWire application id. |
| `list_councils` | List covered councils and their IDs. |
## Example Prompts
- "Search PlanWire for recent planning applications in Camden."
- "Find refused householder extensions in OX1 from the last year."
- "What planning applications are within 1km of 51.5074, -0.1278?"
- "List the councils PlanWire covers."
- "Find planning applications mentioning HMOs in Manchester."
## Limits And Pricing
Free sandbox keys are suitable for testing and are capped on daily calls and result size. Paid plans increase limits for production use.
Pricing: https://planwire.io/?utm_source=npm&utm_medium=mcp_readme&utm_campaign=mcp#pricing
## Troubleshooting
If the tool says `PLANWIRE_API_KEY is not set`, add your key to the MCP client config and restart the client.
If PlanWire returns `401`, check that the key is correct and active.
If PlanWire returns `429`, the key has reached its rate limit. Use fewer calls or upgrade at https://planwire.io/?utm_source=npm&utm_medium=mcp_readme&utm_campaign=mcp#pricing.
## Development
```bash
npm install
npm run build
npm start
```
MIT licensed. Built by PlanWire: https://planwire.io/?utm_source=npm&utm_medium=mcp_readme&utm_campaign=mcp
TDQS
A3.9/5.0
Scored across 4 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: fetching by ID, listing councils, spatial search, and keyword search. No overlap in functionality.
Naming Consistency4/5
Most names follow a verb_noun pattern (get, list, search), but 'nearby_planning_applications' omits a verb, creating a slight inconsistency. Otherwise snake_case is used consistently.
Tool Count5/5
Four tools cover the core needs of the domain (search, detail retrieval, council reference) without excess or deficiency.
Completeness4/5
The set covers essential read operations: keyword search, spatial search, and detail retrieval. A minor gap is the lack of a tool to get an application by reference number, but most workflows are supported.
Maintenance
ActivityMaintained
ResponsivenessNo issues