@findtime/mcp-server 3.25.15 → 3.25.16

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/README.md CHANGED
@@ -124,15 +124,16 @@ Best meeting time between New York, Sydney, and Mumbai?
124
124
 
125
125
  ## Local development
126
126
 
127
- Run the server directly from the public repo root:
127
+ Run the workspace version directly:
128
128
 
129
129
  ```bash
130
- npm start
130
+ npm run mcp:start
131
131
  ```
132
132
 
133
133
  The server attempts to load `.env.development.local`, `.env.development`, `.env.local`, and `.env` from:
134
134
 
135
135
  - the current working directory
136
+ - `services/mcp-server`
136
137
  - the repo root
137
138
 
138
139
  ## Tests
@@ -140,13 +141,13 @@ The server attempts to load `.env.development.local`, `.env.development`, `.env.
140
141
  Protocol and transport tests:
141
142
 
142
143
  ```bash
143
- npm test
144
+ npm run test:mcp-server
144
145
  ```
145
146
 
146
147
  Live production-parity smoke tests:
147
148
 
148
149
  ```bash
149
- npm run test:smoke
150
+ npm run test:mcp-server:smoke
150
151
  ```
151
152
 
152
153
  The smoke suite checks:
@@ -168,7 +169,7 @@ The canonical public source for this package now lives in:
168
169
  - npm: `@findtime/mcp-server`
169
170
  - Official MCP Registry: `https://registry.modelcontextprotocol.io/?q=io.github.hkchao%2Ffindtime-mcp-server`
170
171
 
171
- Publish and version updates should happen from this public repo.
172
+ Publish and version updates should happen from that public repo, not from this private app repo.
172
173
 
173
174
  Standard publish flow in the public repo:
174
175
 
@@ -178,4 +179,11 @@ npm pack --dry-run
178
179
  npm publish --access public
179
180
  ```
180
181
 
181
- Use the workflow in `.github/workflows/publish.yml` for repo-backed publishes.
182
+ The equivalent local verification checks in this repo are:
183
+
184
+ ```bash
185
+ npm run test:mcp-server
186
+ npm run mcp:pack
187
+ ```
188
+
189
+ Treat this repo as the implementation source that originally produced the MCP package, not as the canonical public release source.
@@ -2,12 +2,13 @@
2
2
  "mcpServers": {
3
3
  "findtime": {
4
4
  "type": "stdio",
5
- "command": "npx",
6
- "args": ["-y", "@findtime/mcp-server"],
5
+ "command": "node",
6
+ "args": [
7
+ "/absolute/path/to/findtime-io-mcp/services/mcp-server/src/server.js"
8
+ ],
7
9
  "env": {
8
10
  "FINDTIME_MCP_CLIENT_TYPE": "claude-desktop",
9
- "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
10
- "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
11
+ "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io"
11
12
  }
12
13
  }
13
14
  }
@@ -2,12 +2,13 @@
2
2
  "mcpServers": {
3
3
  "findtime": {
4
4
  "type": "stdio",
5
- "command": "npx",
6
- "args": ["-y", "@findtime/mcp-server"],
5
+ "command": "node",
6
+ "args": [
7
+ "/absolute/path/to/findtime-io-mcp/services/mcp-server/src/server.js"
8
+ ],
7
9
  "env": {
8
10
  "FINDTIME_MCP_CLIENT_TYPE": "cline",
9
- "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
10
- "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
11
+ "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io"
11
12
  }
12
13
  }
13
14
  }
@@ -2,12 +2,13 @@
2
2
  "mcpServers": {
3
3
  "findtime": {
4
4
  "type": "stdio",
5
- "command": "npx",
6
- "args": ["-y", "@findtime/mcp-server"],
5
+ "command": "node",
6
+ "args": [
7
+ "/absolute/path/to/findtime-io-mcp/services/mcp-server/src/server.js"
8
+ ],
7
9
  "env": {
8
10
  "FINDTIME_MCP_CLIENT_TYPE": "codex",
9
- "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
10
- "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
11
+ "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io"
11
12
  }
12
13
  }
13
14
  }
@@ -2,12 +2,13 @@
2
2
  "mcpServers": {
3
3
  "findtime": {
4
4
  "type": "stdio",
5
- "command": "npx",
6
- "args": ["-y", "@findtime/mcp-server"],
5
+ "command": "node",
6
+ "args": [
7
+ "/absolute/path/to/findtime-io-mcp/services/mcp-server/src/server.js"
8
+ ],
7
9
  "env": {
8
10
  "FINDTIME_MCP_CLIENT_TYPE": "cursor",
9
- "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
10
- "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
11
+ "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io"
11
12
  }
12
13
  }
13
14
  }
@@ -2,12 +2,13 @@
2
2
  "mcpServers": {
3
3
  "findtime": {
4
4
  "type": "stdio",
5
- "command": "npx",
6
- "args": ["-y", "@findtime/mcp-server"],
5
+ "command": "node",
6
+ "args": [
7
+ "/absolute/path/to/findtime-io-mcp/services/mcp-server/src/server.js"
8
+ ],
7
9
  "env": {
8
10
  "FINDTIME_MCP_CLIENT_TYPE": "windsurf",
9
- "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
10
- "FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
11
+ "FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io"
11
12
  }
12
13
  }
13
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@findtime/mcp-server",
3
- "version": "3.25.15",
3
+ "version": "3.25.16",
4
4
  "mcpName": "io.github.hkchao/findtime-mcp-server",
5
5
  "description": "Production-parity MCP server for the findtime.io Time API",
6
6
  "bin": {
@@ -31,14 +31,7 @@
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "repository": {
35
- "type": "git",
36
- "url": "git+https://github.com/hkchao/findtime-mcp-server.git"
37
- },
38
34
  "homepage": "https://findtime.io/developers/mcp/",
39
- "bugs": {
40
- "url": "https://github.com/hkchao/findtime-mcp-server/issues"
41
- },
42
35
  "keywords": [
43
36
  "mcp",
44
37
  "model-context-protocol",
package/server.js CHANGED
@@ -442,14 +442,24 @@ function buildFindtimeHelpPayload() {
442
442
  },
443
443
  {
444
444
  intent: 'timezone_lookup',
445
- example: 'What is the IANA timezone for San Francisco?',
446
- notes: 'Use IANA timezone IDs as canonical identifiers.'
445
+ example: 'What timezone is Auckland in?',
446
+ notes: 'Returns the canonical IANA timezone plus the current abbreviation.'
447
+ },
448
+ {
449
+ intent: 'timezone_abbreviation_lookup',
450
+ example: 'What timezone abbreviation is Auckland?',
451
+ notes: 'Returns the current abbreviation plus the canonical IANA timezone.'
447
452
  },
448
453
  {
449
454
  intent: 'time_conversion',
450
- example: 'Convert 3pm next Tuesday in New York to London, Berlin, and Singapore.',
455
+ example: 'If it is 3:30pm in London, what time is it in Sydney?',
451
456
  notes: 'Include local dates because conversions often cross calendar days.'
452
457
  },
458
+ {
459
+ intent: 'time_conversion',
460
+ example: 'What is 5pm San Francisco time in Tokyo?',
461
+ notes: 'Natural-language conversion works for common city and timezone phrasing.'
462
+ },
453
463
  {
454
464
  intent: 'dst_status',
455
465
  example: 'Is Mexico City on DST?',
@@ -462,7 +472,7 @@ function buildFindtimeHelpPayload() {
462
472
  },
463
473
  {
464
474
  intent: 'meeting_time_search',
465
- example: 'Find a good 45-minute meeting time next week for San Francisco, Berlin, and Sydney.',
475
+ example: 'Find a good meeting time for San Francisco, Berlin, and Sydney.',
466
476
  notes: 'Returns ranked meeting windows and tradeoffs across participants.'
467
477
  },
468
478
  {
@@ -506,6 +516,20 @@ function buildFindtimeHelpPayload() {
506
516
  };
507
517
  }
508
518
 
519
+ function formatFindtimeHelpText(help) {
520
+ const lines = [
521
+ 'findtime.io Time Help',
522
+ '',
523
+ 'Try asking:',
524
+ ...help.intents.map((entry) => `- ${entry.example}`),
525
+ '',
526
+ 'If a place or timezone is ambiguous, findtime.io will ask for clarification. For example:',
527
+ ...help.ambiguityExamples.map((entry) => `- ${entry.query} -> ${entry.expectedBehavior}`),
528
+ ];
529
+
530
+ return lines.join('\n');
531
+ }
532
+
509
533
  function safeReadJson(filePath) {
510
534
  try {
511
535
  return JSON.parse(fs.readFileSync(filePath, 'utf8'));
@@ -1199,14 +1223,15 @@ function createFindtimeMcpServer(options = {}) {
1199
1223
  }
1200
1224
 
1201
1225
  if (name === 'get_findtime_help') {
1226
+ const help = buildFindtimeHelpPayload();
1202
1227
  return {
1203
1228
  content: [
1204
1229
  {
1205
1230
  type: 'text',
1206
- text: `get_findtime_help response\n${JSON.stringify(buildFindtimeHelpPayload(), null, 2)}`
1231
+ text: formatFindtimeHelpText(help)
1207
1232
  }
1208
1233
  ],
1209
- structuredContent: buildFindtimeHelpPayload()
1234
+ structuredContent: help
1210
1235
  };
1211
1236
  }
1212
1237