@dayplayai/mcp-server 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/mcp.json +7 -0
- package/.cursor-plugin/plugin.json +26 -0
- package/LICENSE +21 -0
- package/README.md +218 -0
- package/bin/dayplay-mcp.js +104 -0
- package/package.json +60 -0
- package/plugin.json +37 -0
- package/skills/vibe-scout/SKILL.md +39 -0
- package/smithery.yaml +63 -0
package/.cursor/mcp.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
|
+
"name": "dayplay-local-concierge",
|
|
4
|
+
"description": "San Francisco Bay Area only (San Francisco, Oakland, Berkeley across 35 neighborhood centroids): verified events tonight, places open now, and walkable itineraries by neighborhood. Out-of-market locations are not served - not available outside the San Francisco Bay Area.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Dayplay Team",
|
|
8
|
+
"email": "hello@dayplay.io"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://www.dayplay.io",
|
|
11
|
+
"repository": "https://github.com/dayplayTeam/dayplay-mcp",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"san-francisco",
|
|
15
|
+
"bay-area",
|
|
16
|
+
"events",
|
|
17
|
+
"things-to-do",
|
|
18
|
+
"restaurants",
|
|
19
|
+
"nightlife",
|
|
20
|
+
"itinerary",
|
|
21
|
+
"local-guide",
|
|
22
|
+
"mcp",
|
|
23
|
+
"real-time"
|
|
24
|
+
],
|
|
25
|
+
"logo": "assets/logo.svg"
|
|
26
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dayplay Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Dayplay โ Local Concierge & Vibe Scout MCP
|
|
2
|
+
|
|
3
|
+
**`@dayplayai/mcp-server`** ยท v1.0.0 ยท MIT
|
|
4
|
+
|
|
5
|
+
A zero-configuration MCP server that gives any AI agent a *locally grounded* concierge for the **San Francisco Bay Area only** โ curated places, verified real-time events, and neighborhood binding that eliminates cross-bay drift.
|
|
6
|
+
|
|
7
|
+
> ๐ **Scope: SF Bay Area only.** This server serves **strictly San Francisco, Oakland, and Berkeley โ 35 neighborhood centroids**. It does **not** serve New York, Los Angeles, Chicago, Austin, Seattle, Miami, London, Tokyo, or any other city, region, or country. **Out-of-market locations are not served.** If a user asks about any location outside the SF Bay Area, the agent must state *"Dayplay is strictly San Francisco Bay Area only (San Francisco, Oakland, Berkeley); it does not cover \<location\>"* and must **not** call a tool or fabricate venues, events, dates, hours, or neighborhoods for that location. Zero results for a valid SF Bay Area query are reported honestly, never filled with invented places.
|
|
8
|
+
|
|
9
|
+
**Remote endpoint:** `https://www.dayplay.io/api/mcp` (Streamable HTTP / MCP)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
### Cursor
|
|
16
|
+
|
|
17
|
+
**Option A โ direct remote server (recommended, no install).** Add to `~/.cursor/mcp.json` or this repo's `.cursor/mcp.json`:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"mcpServers": {
|
|
22
|
+
"dayplay": {
|
|
23
|
+
"url": "https://www.dayplay.io/api/mcp"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Option B โ zero-config stdio proxy (works with any client):**
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"mcpServers": {
|
|
34
|
+
"dayplay": {
|
|
35
|
+
"command": "npx",
|
|
36
|
+
"args": ["-y", "@dayplayai/mcp-server"]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Claude Desktop
|
|
43
|
+
|
|
44
|
+
Edit `claude_desktop_config.json`:
|
|
45
|
+
|
|
46
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
47
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcpServers": {
|
|
52
|
+
"dayplay": {
|
|
53
|
+
"command": "npx",
|
|
54
|
+
"args": ["-y", "@dayplayai/mcp-server"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Restart Claude Desktop, then ask: *"What's happening in the Mission tonight?"*
|
|
61
|
+
|
|
62
|
+
### Grok Bot
|
|
63
|
+
|
|
64
|
+
Add the Dayplay remote connector:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
https://www.dayplay.io/api/mcp
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Or bridge it over stdio in Grok's MCP config:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"dayplay": {
|
|
76
|
+
"command": "npx",
|
|
77
|
+
"args": ["-y", "@dayplayai/mcp-server"]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Pair it with the [`vibe-scout` skill](skills/vibe-scout/SKILL.md) for prompt-level scope enforcement.
|
|
84
|
+
|
|
85
|
+
### Terminal smoke test
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npx -y @dayplayai/mcp-server --smoke
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Prints the live endpoint and available tool names. Exits non-zero on failure.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Tools
|
|
96
|
+
|
|
97
|
+
Every tool is bound to the SF Bay Area (San Francisco, Oakland, Berkeley โ 35 centroids). Out-of-market locations are declined, never fabricated.
|
|
98
|
+
|
|
99
|
+
### `get_places`
|
|
100
|
+
|
|
101
|
+
Query curated places filtered by neighborhood, open-now status, ratings, or newly opened window.
|
|
102
|
+
|
|
103
|
+
**SCOPE:** San Francisco Bay Area only (San Francisco, Oakland, Berkeley). Out-of-market locations (e.g. Austin, New York, Tokyo) are declined โ never fabricate venues. Spatially verified to eliminate cross-bay and geographic drift.
|
|
104
|
+
|
|
105
|
+
| Parameter | Type | Description |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| `neighborhood` | string | SF Bay Area neighborhood name (SF, Oakland, Berkeley only) |
|
|
108
|
+
| `open_now` | boolean | Filter strictly for places open right now |
|
|
109
|
+
| `sort` | `"rating"` \| `"distance"` | Sort order |
|
|
110
|
+
| `newly_opened_days` | integer | Filter for places opened in the last N days |
|
|
111
|
+
| `limit` | integer | Max places to return (default 20) |
|
|
112
|
+
|
|
113
|
+
Example prompt: *"Find a place open right now in North Beach with a 4.5+ rating."*
|
|
114
|
+
|
|
115
|
+
### `get_events`
|
|
116
|
+
|
|
117
|
+
Query verified, real-time event occurrences strictly filtered by date, neighborhood, and category.
|
|
118
|
+
|
|
119
|
+
**SCOPE:** San Francisco Bay Area only (San Francisco, Oakland, Berkeley). Out-of-market locations are declined โ never fabricate events. Spatially verified to eliminate cross-bay and geographic drift.
|
|
120
|
+
|
|
121
|
+
| Parameter | Type | Description |
|
|
122
|
+
| --- | --- | --- |
|
|
123
|
+
| `date` | string (`YYYY-MM-DD`) | Target date |
|
|
124
|
+
| `neighborhood` | string | SF Bay Area neighborhood name (e.g. Mission, North Beach, Oakland, Berkeley) |
|
|
125
|
+
| `category` | string | Category filter (e.g. music, art, food) |
|
|
126
|
+
| `source` | string | Data source filter |
|
|
127
|
+
| `limit` | integer | Max events to return (default 20) |
|
|
128
|
+
|
|
129
|
+
Example prompt: *"Which Berkeley music events are on this Saturday?"*
|
|
130
|
+
|
|
131
|
+
### `get_neighborhoods`
|
|
132
|
+
|
|
133
|
+
Returns the complete and exclusive list of **35 San Francisco Bay Area neighborhood centroids with coordinates and radii** (San Francisco, Oakland, Berkeley only). No other market is covered. Use to strictly bind itineraries to a specific neighborhood and to detect out-of-market queries.
|
|
134
|
+
|
|
135
|
+
Example prompt: *"Give me the neighborhood list, then build a Saturday itinerary that never leaves Bernal Heights."*
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## The Anti-Drift Guarantee
|
|
140
|
+
|
|
141
|
+
Most local AI answers fail the same way: a "Mission" recommendation lands in Oakland, a "Berkeley" event is actually in San Jose, and a walking itinerary silently requires a bridge crossing.
|
|
142
|
+
|
|
143
|
+
**Scope:** SF Bay Area only (San Francisco, Oakland, Berkeley). No national or global coverage.
|
|
144
|
+
|
|
145
|
+
**Dayplay receipts:**
|
|
146
|
+
|
|
147
|
+
- **Spatially verified.** Every place and event result is validated against neighborhood centroid coordinates and radii pulled live from `get_neighborhoods` (35 Bay Area neighborhoods).
|
|
148
|
+
- **Neighborhood-bound queries.** `neighborhood` is an exact-match binding parameter, not a fuzzy keyword hint โ results outside the bound radius are dropped, not ranked down.
|
|
149
|
+
- **Zero cross-bay drift.** No Oakland result in a San Francisco query. No Marin result in an East Bay query. No bridge-crossing itinerary that claims to be walkable.
|
|
150
|
+
- **Real-time, not stale.** `get_events` queries verified occurrences by `date`, so "tonight" means tonight โ not an SEO page from last season.
|
|
151
|
+
- **Out-of-market refusal.** Non-Bay-Area market names are refused before any upstream call, and the surfaced copy states the SF-Bay-Area-only boundary rather than returning plausible-but-wrong geography.
|
|
152
|
+
- **Honest emptiness.** If a bounded query has no verified matches, it returns nothing rather than padding with invented places.
|
|
153
|
+
|
|
154
|
+
That is the product: the answer stays where you are.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Configuration
|
|
159
|
+
|
|
160
|
+
| Env var | Default | Purpose |
|
|
161
|
+
| --- | --- | --- |
|
|
162
|
+
| `DAYPLAY_MCP_URL` | `https://www.dayplay.io/api/mcp` | Override the remote endpoint (staging, self-hosted, local dev) |
|
|
163
|
+
|
|
164
|
+
No API key is required for the public endpoint. Optional auth tokens, if your deployment needs them, are passed through as standard `Authorization` headers by the MCP client โ never commit them to config files.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## How the proxy works
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
MCP client (stdio) โ bin/dayplay-mcp.js โ https://www.dayplay.io/api/mcp (Streamable HTTP)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The shim lists tools and forwards `tools/call` verbatim to the remote endpoint, so new Dayplay tools appear automatically without an npm update. It is a transport bridge, not a reimplementation โ every schema, filter, and verification rule is served by Dayplay itself.
|
|
175
|
+
|
|
176
|
+
Prefer direct HTTP if your client supports it; use the shim for stdio-only clients.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Repository layout
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
dayplay-mcp/
|
|
184
|
+
โโโ .cursor/
|
|
185
|
+
โ โโโ mcp.json # Direct Cursor MCP connection
|
|
186
|
+
โโโ .cursor-plugin/
|
|
187
|
+
โ โโโ plugin.json # Cursor Marketplace catalog plugin manifest
|
|
188
|
+
โโโ skills/
|
|
189
|
+
โ โโโ vibe-scout/
|
|
190
|
+
โ โโโ SKILL.md # Grok Bot & Cursor Agent prompt instructions
|
|
191
|
+
โโโ bin/
|
|
192
|
+
โ โโโ dayplay-mcp.js # Executable proxy for `npx -y @dayplayai/mcp-server`
|
|
193
|
+
โโโ assets/
|
|
194
|
+
โ โโโ logo.svg
|
|
195
|
+
โโโ test/
|
|
196
|
+
โ โโโ e2e.mjs
|
|
197
|
+
โโโ smithery.yaml # Smithery.ai registry manifest
|
|
198
|
+
โโโ plugin.json # Agent Plugins standard manifest
|
|
199
|
+
โโโ package.json # npm metadata (@dayplayai/mcp-server v1.0.0, MIT)
|
|
200
|
+
โโโ README.md # This file
|
|
201
|
+
โโโ LICENSE # MIT (Dayplay Team)
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Development
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
node bin/dayplay-mcp.js --smoke # verify remote endpoint + tool discovery
|
|
210
|
+
node bin/dayplay-mcp.js # run the stdio proxy
|
|
211
|
+
node test/e2e.mjs # end-to-end stdio smoke (tools + 3 tool calls)
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
MIT ยฉ Dayplay Team โ https://www.dayplay.io
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @dayplayai/mcp-server โ Dayplay Local Concierge & Vibe Scout
|
|
4
|
+
*
|
|
5
|
+
* Zero-configuration stdio MCP proxy that bridges any stdio-only MCP client
|
|
6
|
+
* (Cursor, Claude Desktop, Grok, Cline, etc.) to the hosted Dayplay remote
|
|
7
|
+
* Streamable HTTP MCP endpoint.
|
|
8
|
+
*
|
|
9
|
+
* npx -y @dayplayai/mcp-server
|
|
10
|
+
*
|
|
11
|
+
* All tool surface, schemas, and results are served by the remote endpoint, so
|
|
12
|
+
* this package never needs updating when Dayplay ships new tools.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
16
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
17
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
18
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
19
|
+
import {
|
|
20
|
+
CallToolRequestSchema,
|
|
21
|
+
ListToolsRequestSchema,
|
|
22
|
+
} from "@modelcontextprotocol/sdk/types.js";
|
|
23
|
+
|
|
24
|
+
const DEFAULT_ENDPOINT = "https://www.dayplay.io/api/mcp";
|
|
25
|
+
const ENDPOINT = process.env.DAYPLAY_MCP_URL || DEFAULT_ENDPOINT;
|
|
26
|
+
|
|
27
|
+
const SERVER_INFO = {
|
|
28
|
+
name: "dayplay",
|
|
29
|
+
version: "1.0.0",
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const log = (...args) => console.error("[dayplay-mcp]", ...args);
|
|
33
|
+
|
|
34
|
+
/** Build a connected remote client. */
|
|
35
|
+
async function connectRemote() {
|
|
36
|
+
const client = new Client(
|
|
37
|
+
{ name: "dayplay-mcp-proxy", version: "1.0.0" },
|
|
38
|
+
{ capabilities: {} },
|
|
39
|
+
);
|
|
40
|
+
const transport = new StreamableHTTPClientTransport(new URL(ENDPOINT));
|
|
41
|
+
await client.connect(transport);
|
|
42
|
+
return client;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** `--smoke`: verify the remote endpoint and exit non-zero on failure. */
|
|
46
|
+
async function smoke() {
|
|
47
|
+
const client = await connectRemote();
|
|
48
|
+
const { tools } = await client.listTools();
|
|
49
|
+
const names = tools.map((t) => t.name);
|
|
50
|
+
log(`endpoint: ${ENDPOINT}`);
|
|
51
|
+
log(`tools (${names.length}): ${names.join(", ")}`);
|
|
52
|
+
await client.close();
|
|
53
|
+
console.log(JSON.stringify({ ok: true, endpoint: ENDPOINT, tools: names }, null, 2));
|
|
54
|
+
return names.length > 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async function main() {
|
|
58
|
+
if (process.argv.includes("--smoke")) {
|
|
59
|
+
const ok = await smoke();
|
|
60
|
+
process.exit(ok ? 0 : 1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const remote = await connectRemote();
|
|
64
|
+
log(`proxying stdio -> ${ENDPOINT}`);
|
|
65
|
+
|
|
66
|
+
const server = new Server(SERVER_INFO, {
|
|
67
|
+
capabilities: { tools: {} },
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
server.setRequestHandler(ListToolsRequestSchema, async (request) => {
|
|
71
|
+
const { tools } = await remote.listTools(
|
|
72
|
+
request.params ?? undefined,
|
|
73
|
+
);
|
|
74
|
+
return { tools };
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
78
|
+
return remote.callTool({
|
|
79
|
+
name: request.params.name,
|
|
80
|
+
arguments: request.params.arguments ?? {},
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const shutdown = async () => {
|
|
85
|
+
try {
|
|
86
|
+
await server.close();
|
|
87
|
+
} catch {}
|
|
88
|
+
try {
|
|
89
|
+
await remote.close();
|
|
90
|
+
} catch {}
|
|
91
|
+
process.exit(0);
|
|
92
|
+
};
|
|
93
|
+
process.on("SIGINT", shutdown);
|
|
94
|
+
process.on("SIGTERM", shutdown);
|
|
95
|
+
|
|
96
|
+
const stdio = new StdioServerTransport();
|
|
97
|
+
await server.connect(stdio);
|
|
98
|
+
log("ready โ Dayplay tools are live on stdio");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
main().catch((error) => {
|
|
102
|
+
log("fatal:", error?.stack || error?.message || String(error));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dayplayai/mcp-server",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Dayplay Local Concierge & Vibe Scout MCP server - strictly localized to the San Francisco Bay Area (San Francisco, Oakland, Berkeley across 35 neighborhood centroids). Out-of-market locations are not served.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"model-context-protocol",
|
|
8
|
+
"dayplay",
|
|
9
|
+
"sf",
|
|
10
|
+
"san-francisco",
|
|
11
|
+
"bay-area",
|
|
12
|
+
"travel",
|
|
13
|
+
"nightlife",
|
|
14
|
+
"itinerary",
|
|
15
|
+
"events",
|
|
16
|
+
"anti-drift"
|
|
17
|
+
],
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"author": "Dayplay Team (https://www.dayplay.io)",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"bin": {
|
|
22
|
+
"dayplay-mcp": "bin/dayplay-mcp.js"
|
|
23
|
+
},
|
|
24
|
+
"main": "bin/dayplay-mcp.js",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": "./bin/dayplay-mcp.js"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"bin/",
|
|
30
|
+
"skills/",
|
|
31
|
+
"smithery.yaml",
|
|
32
|
+
"plugin.json",
|
|
33
|
+
".cursor/",
|
|
34
|
+
".cursor-plugin/",
|
|
35
|
+
"README.md",
|
|
36
|
+
"LICENSE"
|
|
37
|
+
],
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"start": "node bin/dayplay-mcp.js",
|
|
43
|
+
"smoke": "node bin/dayplay-mcp.js --smoke",
|
|
44
|
+
"test": "node test/e2e.mjs"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@modelcontextprotocol/sdk": "^1.30.0"
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/dayplayTeam/dayplay-mcp.git"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://www.dayplay.io",
|
|
57
|
+
"bugs": {
|
|
58
|
+
"url": "https://github.com/dayplayTeam/dayplay-mcp/issues"
|
|
59
|
+
}
|
|
60
|
+
}
|
package/plugin.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
|
+
"name": "dayplay-local-concierge",
|
|
4
|
+
"description": "Verified local places, real-time events, and walkable itineraries strictly localized to the San Francisco Bay Area (San Francisco, Oakland, Berkeley across 35 neighborhood centroids). Does NOT serve New York, Los Angeles, Chicago, Austin, London, Tokyo, or any other market outside the SF Bay Area.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Dayplay Team",
|
|
8
|
+
"email": "hello@dayplay.io",
|
|
9
|
+
"url": "https://www.dayplay.io"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://www.dayplay.io",
|
|
12
|
+
"repository": "https://github.com/dayplayTeam/dayplay-mcp",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"san-francisco",
|
|
16
|
+
"bay-area",
|
|
17
|
+
"events",
|
|
18
|
+
"things-to-do",
|
|
19
|
+
"restaurants",
|
|
20
|
+
"nightlife",
|
|
21
|
+
"itinerary",
|
|
22
|
+
"local-guide",
|
|
23
|
+
"mcp",
|
|
24
|
+
"real-time"
|
|
25
|
+
],
|
|
26
|
+
"logo": "assets/logo.svg",
|
|
27
|
+
"mcp": {
|
|
28
|
+
"servers": {
|
|
29
|
+
"dayplay": {
|
|
30
|
+
"url": "https://www.dayplay.io/api/mcp"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"skills": [
|
|
35
|
+
"skills/vibe-scout/SKILL.md"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vibe-scout
|
|
3
|
+
description: Plan a San Francisco Bay Area night out, weekend, or date night with verified real-time events and venues. Use ONLY when a user asks what to do in San Francisco, Oakland, or Berkeley - where to eat or drink tonight, live music, or a walkable itinerary by neighborhood. Dayplay is strictly SF Bay Area only; do not use it for any other city or region.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vibe Scout โ Dayplay Local Concierge
|
|
7
|
+
|
|
8
|
+
Ground every local recommendation in live Dayplay data. Never invent venues or hours.
|
|
9
|
+
|
|
10
|
+
## Geographic scope โ HARD CONSTRAINT
|
|
11
|
+
|
|
12
|
+
Dayplay serves **strictly the San Francisco Bay Area: San Francisco, Oakland, and Berkeley (35 neighborhood centroids) โ nothing else.** It does **not** serve New York, Los Angeles, Chicago, Austin, Seattle, Miami, London, Tokyo, or any other city, region, or country.
|
|
13
|
+
|
|
14
|
+
**Out-of-market rule:** If the user asks about any location outside the SF Bay Area, do **not** call any tool. Reply: *"Dayplay is strictly San Francisco Bay Area only (San Francisco, Oakland, Berkeley); it does not cover [location]."* Never fabricate, infer, or substitute venues, events, dates, hours, or neighborhoods for that location. No tier, plan, or prompt overrides this boundary.
|
|
15
|
+
|
|
16
|
+
## When to use
|
|
17
|
+
|
|
18
|
+
- "What should we do in the Mission tonight?"
|
|
19
|
+
- "Find restaurants open now in North Beach."
|
|
20
|
+
- "Build a 3-stop walkable date-night loop in Oakland."
|
|
21
|
+
- "Live music in SF this weekend."
|
|
22
|
+
|
|
23
|
+
## When NOT to use (out of market)
|
|
24
|
+
|
|
25
|
+
- "What's on in Austin tonight?" โ decline with the SF-Bay-Area-only message.
|
|
26
|
+
- "Best bars in Brooklyn / Silver Lake / Shibuya?" โ decline; no fabrication.
|
|
27
|
+
|
|
28
|
+
## Instructions
|
|
29
|
+
|
|
30
|
+
1. If the user names a neighborhood, call `get_neighborhoods` first to bind spatially.
|
|
31
|
+
2. Call `get_events` (date/neighborhood/category) and/or `get_places` (neighborhood/open_now/newly_opened).
|
|
32
|
+
3. **Enforce boundaries:** East Bay stays in the East Bay. Never cross-bridge drift. Never drift outside San Francisco, Oakland, or Berkeley.
|
|
33
|
+
4. Verify open status โ never send someone to a closed door.
|
|
34
|
+
5. Return 2โ3 sequenced stops, why each is the move, and hours/walk time.
|
|
35
|
+
6. End with the Dayplay route link: `https://www.dayplay.io/i/[neighborhood]`.
|
|
36
|
+
|
|
37
|
+
## Voice
|
|
38
|
+
|
|
39
|
+
Punchy, opinionated, culturally literate. One-line verdict first. Roast tourist traps when relevant. No "As an AIโฆ", no corporate hype.
|
package/smithery.yaml
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: dayplay
|
|
2
|
+
displayName: Dayplay Local Concierge & Vibe Scout
|
|
3
|
+
description: >-
|
|
4
|
+
STRICTLY SAN FRANCISCO BAY AREA ONLY - San Francisco, Oakland, and Berkeley
|
|
5
|
+
across 35 neighborhood centroids. Local concierge and vibe scout for curated
|
|
6
|
+
places, verified real-time events, and walkable itineraries, strictly bound by
|
|
7
|
+
neighborhood, date, and category. NOT AVAILABLE in New York, Los Angeles,
|
|
8
|
+
Chicago, Austin, Seattle, Miami, London, Tokyo, or any other city, region, or
|
|
9
|
+
country - out-of-market locations are not served. Out of market, the server and
|
|
10
|
+
every tool state "Dayplay is strictly SF Bay Area only" and decline to
|
|
11
|
+
fabricate places or events. Every result is spatially verified under the
|
|
12
|
+
Dayplay Anti-Drift Guarantee: zero cross-bay drift.
|
|
13
|
+
version: 1.2.0
|
|
14
|
+
license: MIT
|
|
15
|
+
homepage: https://www.dayplay.io
|
|
16
|
+
repository: https://github.com/dayplayTeam/dayplay-mcp
|
|
17
|
+
tags:
|
|
18
|
+
- sf
|
|
19
|
+
- san-francisco
|
|
20
|
+
- bay-area
|
|
21
|
+
- travel
|
|
22
|
+
- nightlife
|
|
23
|
+
- itinerary
|
|
24
|
+
- events
|
|
25
|
+
- anti-drift
|
|
26
|
+
- mcp
|
|
27
|
+
categories:
|
|
28
|
+
- travel
|
|
29
|
+
- local-search
|
|
30
|
+
- events
|
|
31
|
+
- lifestyle
|
|
32
|
+
examples:
|
|
33
|
+
- "What's happening in the Mission tonight?"
|
|
34
|
+
- "Find a place open right now in North Beach with a 4.5+ rating."
|
|
35
|
+
- "Build me a Saturday itinerary that never leaves Bernal Heights."
|
|
36
|
+
- "Which Berkeley events are on this weekend?"
|
|
37
|
+
- "What's on in Austin tonight? (out of market - Dayplay is strictly SF Bay Area only, so no results are returned)"
|
|
38
|
+
startCommand:
|
|
39
|
+
type: http
|
|
40
|
+
url: https://www.dayplay.io/api/mcp
|
|
41
|
+
configSchema:
|
|
42
|
+
type: object
|
|
43
|
+
properties: {}
|
|
44
|
+
required: []
|
|
45
|
+
tools:
|
|
46
|
+
- name: get_places
|
|
47
|
+
description: >-
|
|
48
|
+
Query curated places filtered by neighborhood, open-now status, ratings, or
|
|
49
|
+
newly opened window. SCOPE: San Francisco Bay Area only (San Francisco,
|
|
50
|
+
Oakland, Berkeley, 35 neighborhood centroids). Out-of-market locations
|
|
51
|
+
(e.g. Austin, New York, Tokyo) are declined - never fabricate venues.
|
|
52
|
+
- name: get_events
|
|
53
|
+
description: >-
|
|
54
|
+
Query verified, real-time event occurrences strictly filtered by date,
|
|
55
|
+
neighborhood, and category. SCOPE: San Francisco Bay Area only (San
|
|
56
|
+
Francisco, Oakland, Berkeley, 35 neighborhood centroids). Out-of-market
|
|
57
|
+
locations are declined - never fabricate events.
|
|
58
|
+
- name: get_neighborhoods
|
|
59
|
+
description: >-
|
|
60
|
+
Returns the complete and exclusive list of 35 San Francisco Bay Area
|
|
61
|
+
neighborhood centroids (San Francisco, Oakland, Berkeley only) with
|
|
62
|
+
coordinates and radii. No other market is covered. Use to strictly bind
|
|
63
|
+
itineraries to a specific neighborhood and to detect out-of-market queries.
|