You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: migrate to registerTool with annotations and improve error messages
- Migrate from deprecated server.tool() to server.registerTool() API
- Add MCP Tool Annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to all 7 tools
- Improve Google Maps API error messages with actionable guidance for HTTP 403, 429, ZERO_RESULTS, OVER_QUERY_LIMIT, REQUEST_DENIED, INVALID_REQUEST
- Type-strengthen ToolConfig interface (schema: Record<string, z.ZodTypeAny>)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add CHANGELOG.md and strengthen smoke tests
- Add CHANGELOG.md following Claude Code's format (version + bullet points)
- Add annotations verification (readOnlyHint, destructiveHint) for all 7 tools
- Add inputSchema presence check for all tools
- Add E2E tests for reverse geocode, elevation, and distance matrix
- Test coverage: 21 → 55 assertions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: add PR/issue templates, auto-changelog, and GitHub Releases
- Add pull request template with summary/changes/test plan/changelog sections
- Add issue templates for bug reports and feature requests
- Update release workflow to auto-generate CHANGELOG entries from commit messages
- Add GitHub Release creation on publish
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Migrated from deprecated `server.tool()` to `server.registerTool()` API for MCP SDK v1.27+ compatibility
6
+
- Added MCP Tool Annotations to all tools — clients can now auto-approve read-only, non-destructive API queries without user confirmation
7
+
- Improved Google Maps API error messages with actionable guidance (e.g. HTTP 403 now suggests enabling the Places API, HTTP 429 links to quota settings)
8
+
- Added CI workflow for automated build, lint, and smoke tests on pull requests
9
+
- Added release workflow for automated npm publishing on merge to main
10
+
- Added ESLint 9 flat config with TypeScript and Prettier integration
11
+
- Added smoke test suite for annotations, multi-tool E2E, and concurrent session validation
12
+
13
+
## 0.0.20
14
+
15
+
- Upgraded `@modelcontextprotocol/sdk` from ^1.11.0 to ^1.27.1 — fixes cross-client response data leakage between concurrent sessions (GHSA-345p-7cg4-v4c7, CVSS 7.1)
16
+
- Upgraded `zod` to ^3.25.0 (peer dependency of SDK v1.23+)
17
+
- Fixed multi-session crash by creating per-session McpServer instances in HTTP mode
18
+
- Added smoke test suite covering server init, tools/list, geocode, and concurrent sessions
19
+
- Pinned `@types/express` to v4
20
+
21
+
## 0.0.19
22
+
23
+
- Updated to Google's new Places API (New) to resolve HTTP 403 errors with the legacy API
24
+
25
+
## 0.0.18
26
+
27
+
- Standardized all error messages to English with more detailed information
28
+
29
+
## 0.0.17
30
+
31
+
- Added HTTP header authentication — API keys via `X-Google-Maps-API-Key` header
32
+
- Fixed concurrent user issues — each session uses its own API key
33
+
- Fixed npx execution module bundling issues
34
+
- Improved documentation with clearer setup instructions
35
+
36
+
## 0.0.14
37
+
38
+
- Added streamable HTTP transport support
39
+
- Improved CLI interface with emoji indicators
40
+
- Enhanced error handling and logging
41
+
- Added comprehensive tool descriptions for LLM integration
// Map common HTTP status codes to actionable messages
48
+
if(statusCode===403){
49
+
return"API key invalid or required API not enabled. Check: console.cloud.google.com → APIs & Services → Enable the relevant API (Places, Geocoding, etc.)";
50
+
}
51
+
if(statusCode===429){
52
+
return"API quota exceeded. Wait and retry, or check quota at console.cloud.google.com → Quotas";
53
+
}
54
+
55
+
// Map Google Maps API status codes
56
+
if(apiStatus==="ZERO_RESULTS"){
57
+
return"No results found. Try broader search terms or a larger radius.";
58
+
}
59
+
if(apiStatus==="OVER_QUERY_LIMIT"){
60
+
return"API quota exceeded. Wait and retry, or upgrade your billing plan.";
61
+
}
62
+
if(apiStatus==="REQUEST_DENIED"){
63
+
return`Request denied by Google Maps API. ${apiError||"Check your API key and enabled APIs."}`;
64
+
}
65
+
if(apiStatus==="INVALID_REQUEST"){
66
+
return`Invalid request parameters. ${apiError||"Check your input values."}`;
0 commit comments