# Use PinSharing from AI assistants (MCP)

PinSharing runs a hosted MCP server. Endpoint `https://api.pinsharing.com/v1/mcp` (Streamable HTTP). Uses your normal API key; calls count against the same monthly caps as the REST API, no extra charge; hard caps still apply.

Listed in the official [MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=com.pinsharing) as `com.pinsharing/maps`, so clients and directories that read the registry can find it.

## Tools

| Tool | What it does | Counts |
| --- | --- | --- |
| `geocode` | Address or place to coordinates | 1 geocode |
| `reverse_geocode` | Coordinates to nearest address | 1 geocode |
| `static_map` | Map image with markers or a route, returned as an image | 1 static image |
| `privacy_area_map` | Approximate-area image that never reveals the exact point | 1 static image |
| `map_setup` | URLs and code for an interactive map | free |

## Connect

### Claude Code

```
claude mcp add --transport http pinsharing https://api.pinsharing.com/v1/mcp --header "Authorization: Bearer YOUR_KEY"
```

### Cursor (`~/.cursor/mcp.json` or `.cursor/mcp.json` in a project)

```
{
  "mcpServers": {
    "pinsharing": {
      "url": "https://api.pinsharing.com/v1/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}
```

### VS Code (`.vscode/mcp.json`)

```
{
  "servers": {
    "pinsharing": {
      "type": "http",
      "url": "https://api.pinsharing.com/v1/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}
```

### Gemini CLI (`~/.gemini/settings.json`)

```
{
  "mcpServers": {
    "pinsharing": {
      "httpUrl": "https://api.pinsharing.com/v1/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}
```

### Claude Desktop and other clients that only run local servers

Use the open-source stdio bridge, [pinsharing-mcp](https://github.com/Software-Consulting/pinsharing-mcp). It forwards each message to the hosted server and stores nothing. It needs Node.js 18+ and Git. In `claude_desktop_config.json`:

```
{
  "mcpServers": {
    "pinsharing": {
      "command": "npx",
      "args": ["-y", "github:Software-Consulting/pinsharing-mcp"],
      "env": { "PINSHARING_API_KEY": "YOUR_KEY" }
    }
  }
}
```

### Clients that take only a URL

For custom connectors in Claude or ChatGPT, use `https://api.pinsharing.com/v1/mcp?key=YOUR_KEY`. Treat that URL like a password.

## Test with curl

```bash
curl -s https://api.pinsharing.com/v1/mcp -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"geocode","arguments":{"query":"Oswego, Illinois","limit":1}}}'
```

## Notes

- Use a key that is not restricted to websites; MCP requests come from the AI client, not a web page.
- On paid plans, create a separate key for AI clients so you can revoke it on its own.
- Results follow the same storage terms as the REST API.

## Attribution

Show © OpenStreetMap contributors wherever results or maps appear.

## Keys in web pages

Keys used in web pages are visible to visitors. In the dashboard, limit such a key to your websites; keep an unrestricted key on your servers. See [Keys & websites](https://pinsharing.com/docs#keys).

## Next

- [Leaflet](https://pinsharing.com/docs/leaflet)
- [MapLibre GL JS](https://pinsharing.com/docs/maplibre)
- [OpenLayers](https://pinsharing.com/docs/openlayers)

---
Source: https://pinsharing.com/docs/mcp · Map data © OpenStreetMap contributors · Index: https://pinsharing.com/llms.txt
