@cyanheads/wikipedia-mcp-server 0.1.5 → 0.1.6
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/AGENTS.md +4 -3
- package/CLAUDE.md +4 -3
- package/README.md +2 -2
- package/changelog/0.1.x/0.1.6.md +18 -0
- package/changelog/template.md +1 -1
- package/dist/config/server-config.js +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +16 -22
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-article.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-article.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-languages.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-languages.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-sections.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-sections.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-summary.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-get-summary.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-search-nearby.tool.d.ts +7 -10
- package/dist/mcp-server/tools/definitions/wikipedia-search-nearby.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-search-nearby.tool.js +21 -29
- package/dist/mcp-server/tools/definitions/wikipedia-search-nearby.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-search.tool.d.ts +5 -8
- package/dist/mcp-server/tools/definitions/wikipedia-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/wikipedia-search.tool.js +15 -22
- package/dist/mcp-server/tools/definitions/wikipedia-search.tool.js.map +1 -1
- package/package.json +5 -3
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** wikipedia-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.
|
|
4
|
+
**Version:** 0.1.6
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
|
@@ -294,7 +294,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
294
294
|
| `npm run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
295
295
|
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
296
296
|
| `npm run tree` | Generate directory structure doc |
|
|
297
|
-
| `npm run format` | Auto-fix formatting |
|
|
297
|
+
| `npm run format` | Auto-fix formatting (safe fixes only) |
|
|
298
|
+
| `npm run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
298
299
|
| `npm test` | Run tests |
|
|
299
300
|
| `npm run start:stdio` | Production mode (stdio) |
|
|
300
301
|
| `npm run start:http` | Production mode (HTTP) |
|
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** wikipedia-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.
|
|
4
|
+
**Version:** 0.1.6
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
|
@@ -294,7 +294,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
294
294
|
| `npm run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
295
295
|
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
296
296
|
| `npm run tree` | Generate directory structure doc |
|
|
297
|
-
| `npm run format` | Auto-fix formatting |
|
|
297
|
+
| `npm run format` | Auto-fix formatting (safe fixes only) |
|
|
298
|
+
| `npm run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
298
299
|
| `npm test` | Run tests |
|
|
299
300
|
| `npm run start:stdio` | Production mode (stdio) |
|
|
300
301
|
| `npm run start:http` | Production mode (HTTP) |
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/wikipedia-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/wikipedia-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -217,7 +217,7 @@ cp .env.example .env
|
|
|
217
217
|
|
|
218
218
|
| Variable | Description | Default |
|
|
219
219
|
|:---------|:------------|:--------|
|
|
220
|
-
| `WIKIPEDIA_USER_AGENT` | User-Agent header sent with every Wikimedia API request. Customize for your deployment. | `wikipedia-mcp-server/0.1.
|
|
220
|
+
| `WIKIPEDIA_USER_AGENT` | User-Agent header sent with every Wikimedia API request. Customize for your deployment. | `wikipedia-mcp-server/0.1.6 (https://github.com/cyanheads/wikipedia-mcp-server)` |
|
|
221
221
|
| `WIKIPEDIA_BASE_URL` | Base Wikipedia URL. Language selection is per-call — not a global language setting. | `https://en.wikipedia.org` |
|
|
222
222
|
| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |
|
|
223
223
|
| `MCP_HTTP_PORT` | Port for HTTP server. | `3010` |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "enrichment on wikipedia_search and wikipedia_search_nearby: query/filter echoes, result totals, and empty-result guidance in a typed enrichment block reaching both structuredContent and content[]; mcp-ts-core ^0.9.13 → ^0.9.16"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.1.6 — 2026-05-30
|
|
8
|
+
|
|
9
|
+
## Changed
|
|
10
|
+
|
|
11
|
+
- **`wikipedia_search`** — agent-facing enrichment block added: `effectiveQuery` echoes the query sent, `totalCount` reports total matching results in Wikipedia, `notice` surfaces empty-result guidance when no articles matched. `total_results` and `query_used` removed from `output` (values now in `enrichment`). Empty-result condition no longer throws; handler returns with enrichment notice instead.
|
|
12
|
+
- **`wikipedia_search_nearby`** — agent-facing enrichment block added: `queryLatitude`, `queryLongitude`, `radiusMetersUsed` echo search parameters, `totalResults` reports the result count, `notice` surfaces guidance when no geotagged articles were found. `total_results`, `query_latitude`, `query_longitude`, `radius_meters_used` removed from `output` (values now in `enrichment` under camelCase keys). Empty-result condition no longer throws.
|
|
13
|
+
- **`@cyanheads/mcp-ts-core`** `^0.9.13 → ^0.9.16`
|
|
14
|
+
|
|
15
|
+
## structuredContent
|
|
16
|
+
|
|
17
|
+
- `wikipedia_search`: `total_results` → `enrichment.totalCount`, `query_used` → `enrichment.effectiveQuery` (values preserved in both channels; keys renamed)
|
|
18
|
+
- `wikipedia_search_nearby`: `total_results` → `enrichment.totalResults`, `query_latitude` → `enrichment.queryLatitude`, `query_longitude` → `enrichment.queryLongitude`, `radius_meters_used` → `enrichment.radiusMetersUsed` (values preserved in both channels; keys renamed and moved to enrichment)
|
package/changelog/template.md
CHANGED
|
@@ -43,7 +43,7 @@ security: false
|
|
|
43
43
|
name the symbol, state what changed, stop. Use a second sentence only when
|
|
44
44
|
it carries weight. If a bullet feels long, it is.
|
|
45
45
|
|
|
46
|
-
Cut: mechanism walkthroughs (those belong in JSDoc, AGENTS.md, or the
|
|
46
|
+
Cut: mechanism walkthroughs (those belong in JSDoc, CLAUDE.md/AGENTS.md, or the
|
|
47
47
|
relevant skill), ceremonial framings ("This release introduces…",
|
|
48
48
|
backwards-compat paragraphs), file-by-file test enumerations, internal
|
|
49
49
|
implementation notes. Prefer code/symbol names over English re-explanations.
|
|
@@ -11,7 +11,7 @@ const ServerConfigSchema = z.object({
|
|
|
11
11
|
.describe('Base Wikipedia URL — language selection is per-call, not global'),
|
|
12
12
|
userAgent: z
|
|
13
13
|
.string()
|
|
14
|
-
.default('wikipedia-mcp-server/0.1.
|
|
14
|
+
.default('wikipedia-mcp-server/0.1.6 (https://github.com/cyanheads/wikipedia-mcp-server)')
|
|
15
15
|
.describe('User-Agent header sent with every request per Wikimedia policy'),
|
|
16
16
|
});
|
|
17
17
|
let _config;
|
|
@@ -28,7 +28,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
28
28
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
29
29
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
30
30
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
31
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
31
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
32
32
|
title: import("zod").ZodString;
|
|
33
33
|
language: import("zod").ZodDefault<import("zod").ZodString>;
|
|
34
34
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -55,7 +55,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
55
55
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
56
56
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
57
57
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
58
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
58
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
59
59
|
title: import("zod").ZodString;
|
|
60
60
|
language: import("zod").ZodDefault<import("zod").ZodString>;
|
|
61
61
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -84,7 +84,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
84
84
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
85
85
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
86
86
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
87
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
87
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
88
88
|
title: import("zod").ZodString;
|
|
89
89
|
language: import("zod").ZodDefault<import("zod").ZodString>;
|
|
90
90
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -106,7 +106,7 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
106
106
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
107
107
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
108
108
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
109
|
-
}]> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
109
|
+
}], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
110
110
|
query: import("zod").ZodString;
|
|
111
111
|
limit: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
112
112
|
language: import("zod").ZodDefault<import("zod").ZodString>;
|
|
@@ -117,20 +117,17 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
117
117
|
snippet: import("zod").ZodString;
|
|
118
118
|
wordcount: import("zod").ZodNumber;
|
|
119
119
|
}, import("zod/v4/core").$strip>>;
|
|
120
|
-
total_results: import("zod").ZodNumber;
|
|
121
|
-
query_used: import("zod").ZodString;
|
|
122
120
|
language: import("zod").ZodString;
|
|
123
121
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
124
|
-
readonly reason: "no_results";
|
|
125
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
126
|
-
readonly when: "Search returned zero results for the query.";
|
|
127
|
-
readonly recovery: "Broaden the query or try different keywords and search again.";
|
|
128
|
-
}, {
|
|
129
122
|
readonly reason: "invalid_language";
|
|
130
123
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
131
124
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
132
125
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
133
|
-
}]
|
|
126
|
+
}], {
|
|
127
|
+
readonly effectiveQuery: import("zod").ZodString;
|
|
128
|
+
readonly totalCount: import("zod").ZodNumber;
|
|
129
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
130
|
+
}> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
|
|
134
131
|
latitude: import("zod").ZodNumber;
|
|
135
132
|
longitude: import("zod").ZodNumber;
|
|
136
133
|
radius_meters: import("zod").ZodDefault<import("zod").ZodNumber>;
|
|
@@ -144,17 +141,8 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
144
141
|
longitude: import("zod").ZodNumber;
|
|
145
142
|
distance_meters: import("zod").ZodNumber;
|
|
146
143
|
}, import("zod/v4/core").$strip>>;
|
|
147
|
-
total_results: import("zod").ZodNumber;
|
|
148
|
-
query_latitude: import("zod").ZodNumber;
|
|
149
|
-
query_longitude: import("zod").ZodNumber;
|
|
150
|
-
radius_meters_used: import("zod").ZodNumber;
|
|
151
144
|
language: import("zod").ZodString;
|
|
152
145
|
}, import("zod/v4/core").$strip>, readonly [{
|
|
153
|
-
readonly reason: "no_results";
|
|
154
|
-
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.NotFound;
|
|
155
|
-
readonly when: "No geotagged articles found within the search radius.";
|
|
156
|
-
readonly recovery: "Increase radius_meters or verify the coordinates are correct and retry.";
|
|
157
|
-
}, {
|
|
158
146
|
readonly reason: "invalid_coordinates";
|
|
159
147
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
160
148
|
readonly when: "Latitude or longitude is outside valid WGS 84 range.";
|
|
@@ -164,5 +152,11 @@ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolD
|
|
|
164
152
|
readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ValidationError;
|
|
165
153
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
166
154
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
167
|
-
}]
|
|
155
|
+
}], {
|
|
156
|
+
readonly queryLatitude: import("zod").ZodNumber;
|
|
157
|
+
readonly queryLongitude: import("zod").ZodNumber;
|
|
158
|
+
readonly radiusMetersUsed: import("zod").ZodNumber;
|
|
159
|
+
readonly totalResults: import("zod").ZodNumber;
|
|
160
|
+
readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
|
|
161
|
+
}>)[];
|
|
168
162
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAO9B,CAAC"}
|
|
@@ -30,5 +30,5 @@ export declare const wikipediaGetArticle: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
30
30
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
31
31
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
32
32
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
33
|
-
}]>;
|
|
33
|
+
}], undefined>;
|
|
34
34
|
//# sourceMappingURL=wikipedia-get-article.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-get-article.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-article.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"wikipedia-get-article.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-article.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;cAkK9B,CAAC"}
|
|
@@ -31,5 +31,5 @@ export declare const wikipediaGetLanguages: import("@cyanheads/mcp-ts-core").Too
|
|
|
31
31
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
32
32
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
33
33
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
34
|
-
}]>;
|
|
34
|
+
}], undefined>;
|
|
35
35
|
//# sourceMappingURL=wikipedia-get-languages.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-get-languages.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-languages.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"wikipedia-get-languages.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-languages.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqHhC,CAAC"}
|
|
@@ -33,5 +33,5 @@ export declare const wikipediaGetSections: import("@cyanheads/mcp-ts-core").Tool
|
|
|
33
33
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
34
34
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
35
35
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
36
|
-
}]>;
|
|
36
|
+
}], undefined>;
|
|
37
37
|
//# sourceMappingURL=wikipedia-get-sections.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-get-sections.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-sections.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"wikipedia-get-sections.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-sections.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuH/B,CAAC"}
|
|
@@ -26,5 +26,5 @@ export declare const wikipediaGetSummary: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
26
26
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
27
27
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
28
28
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
29
|
-
}]>;
|
|
29
|
+
}], undefined>;
|
|
30
30
|
//# sourceMappingURL=wikipedia-get-summary.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-get-summary.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-summary.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"wikipedia-get-summary.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-get-summary.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;cA8G9B,CAAC"}
|
|
@@ -18,17 +18,8 @@ export declare const wikipediaSearchNearby: import("@cyanheads/mcp-ts-core").Too
|
|
|
18
18
|
longitude: z.ZodNumber;
|
|
19
19
|
distance_meters: z.ZodNumber;
|
|
20
20
|
}, z.core.$strip>>;
|
|
21
|
-
total_results: z.ZodNumber;
|
|
22
|
-
query_latitude: z.ZodNumber;
|
|
23
|
-
query_longitude: z.ZodNumber;
|
|
24
|
-
radius_meters_used: z.ZodNumber;
|
|
25
21
|
language: z.ZodString;
|
|
26
22
|
}, z.core.$strip>, readonly [{
|
|
27
|
-
readonly reason: "no_results";
|
|
28
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
29
|
-
readonly when: "No geotagged articles found within the search radius.";
|
|
30
|
-
readonly recovery: "Increase radius_meters or verify the coordinates are correct and retry.";
|
|
31
|
-
}, {
|
|
32
23
|
readonly reason: "invalid_coordinates";
|
|
33
24
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
34
25
|
readonly when: "Latitude or longitude is outside valid WGS 84 range.";
|
|
@@ -38,5 +29,11 @@ export declare const wikipediaSearchNearby: import("@cyanheads/mcp-ts-core").Too
|
|
|
38
29
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
39
30
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
40
31
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
41
|
-
}]
|
|
32
|
+
}], {
|
|
33
|
+
readonly queryLatitude: z.ZodNumber;
|
|
34
|
+
readonly queryLongitude: z.ZodNumber;
|
|
35
|
+
readonly radiusMetersUsed: z.ZodNumber;
|
|
36
|
+
readonly totalResults: z.ZodNumber;
|
|
37
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}>;
|
|
42
39
|
//# sourceMappingURL=wikipedia-search-nearby.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-search-nearby.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"wikipedia-search-nearby.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwJhC,CAAC"}
|
|
@@ -41,19 +41,21 @@ export const wikipediaSearchNearby = tool('wikipedia_search_nearby', {
|
|
|
41
41
|
})
|
|
42
42
|
.describe('A single geotagged article result.'))
|
|
43
43
|
.describe('Geotagged articles sorted ascending by distance_meters.'),
|
|
44
|
-
total_results: z.number().describe('Number of results returned.'),
|
|
45
|
-
query_latitude: z.number().describe('Latitude used for the search.'),
|
|
46
|
-
query_longitude: z.number().describe('Longitude used for the search.'),
|
|
47
|
-
radius_meters_used: z.number().describe('Radius in meters used for the search.'),
|
|
48
44
|
language: z.string().describe('Language edition queried.'),
|
|
49
45
|
}),
|
|
46
|
+
// Agent-facing context — echoes the search parameters and total match count, plus
|
|
47
|
+
// an optional notice when nothing matched. Reaches both structuredContent and content[].
|
|
48
|
+
enrichment: {
|
|
49
|
+
queryLatitude: z.number().describe('Latitude used for the search.'),
|
|
50
|
+
queryLongitude: z.number().describe('Longitude used for the search.'),
|
|
51
|
+
radiusMetersUsed: z.number().describe('Radius in meters used for the search.'),
|
|
52
|
+
totalResults: z.number().describe('Number of results returned.'),
|
|
53
|
+
notice: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Guidance when no geotagged articles were found — e.g. increase radius. Absent when results are returned.'),
|
|
57
|
+
},
|
|
50
58
|
errors: [
|
|
51
|
-
{
|
|
52
|
-
reason: 'no_results',
|
|
53
|
-
code: JsonRpcErrorCode.NotFound,
|
|
54
|
-
when: 'No geotagged articles found within the search radius.',
|
|
55
|
-
recovery: 'Increase radius_meters or verify the coordinates are correct and retry.',
|
|
56
|
-
},
|
|
57
59
|
{
|
|
58
60
|
reason: 'invalid_coordinates',
|
|
59
61
|
code: JsonRpcErrorCode.ValidationError,
|
|
@@ -93,30 +95,20 @@ export const wikipediaSearchNearby = tool('wikipedia_search_nearby', {
|
|
|
93
95
|
});
|
|
94
96
|
const svc = getWikipediaService();
|
|
95
97
|
const { results } = await svc.searchNearby(input.latitude, input.longitude, radiusMeters, limit, language, ctx);
|
|
98
|
+
ctx.enrich({
|
|
99
|
+
queryLatitude: input.latitude,
|
|
100
|
+
queryLongitude: input.longitude,
|
|
101
|
+
radiusMetersUsed: radiusMeters,
|
|
102
|
+
totalResults: results.length,
|
|
103
|
+
});
|
|
96
104
|
if (results.length === 0) {
|
|
97
|
-
|
|
98
|
-
latitude: input.latitude,
|
|
99
|
-
longitude: input.longitude,
|
|
100
|
-
radiusMeters,
|
|
101
|
-
recovery: {
|
|
102
|
-
hint: `Increase radius_meters beyond ${radiusMeters} or verify the coordinates are correct.`,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
+
ctx.enrich.notice(`No geotagged Wikipedia articles found within ${radiusMeters}m of (${input.latitude}, ${input.longitude}). Try increasing radius_meters or verify the coordinates are correct.`);
|
|
105
106
|
}
|
|
106
107
|
ctx.log.info('Geo search complete', { count: results.length, language });
|
|
107
|
-
return {
|
|
108
|
-
results,
|
|
109
|
-
total_results: results.length,
|
|
110
|
-
query_latitude: input.latitude,
|
|
111
|
-
query_longitude: input.longitude,
|
|
112
|
-
radius_meters_used: radiusMeters,
|
|
113
|
-
language,
|
|
114
|
-
};
|
|
108
|
+
return { results, language };
|
|
115
109
|
},
|
|
116
110
|
format: (result) => {
|
|
117
|
-
const lines = [
|
|
118
|
-
`**${result.total_results} articles** near (${result.query_latitude}, ${result.query_longitude}) within ${result.radius_meters_used}m (${result.language})\n`,
|
|
119
|
-
];
|
|
111
|
+
const lines = [`**${result.results.length} articles** (${result.language})\n`];
|
|
120
112
|
for (const item of result.results) {
|
|
121
113
|
lines.push(`### ${item.title}`);
|
|
122
114
|
lines.push(`**Page ID:** ${item.pageid} | **Distance:** ${item.distance_meters}m | **Coords:** (${item.latitude}, ${item.longitude})`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-search-nearby.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IACnE,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,qXAAqX;IACvX,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACvF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QAC3F,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,gFAAgF,CAAC;QAC7F,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,uFAAuF,CACxF;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,6EAA6E,CAAC;KAC3F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAC7E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAC/E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SACtF,CAAC;aACD,QAAQ,CAAC,oCAAoC,CAAC,CAClD;aACA,QAAQ,CAAC,yDAAyD,CAAC;QACtE,
|
|
1
|
+
{"version":3,"file":"wikipedia-search-nearby.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search-nearby.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,18 +15,15 @@ export declare const wikipediaSearch: import("@cyanheads/mcp-ts-core").ToolDefin
|
|
|
15
15
|
snippet: z.ZodString;
|
|
16
16
|
wordcount: z.ZodNumber;
|
|
17
17
|
}, z.core.$strip>>;
|
|
18
|
-
total_results: z.ZodNumber;
|
|
19
|
-
query_used: z.ZodString;
|
|
20
18
|
language: z.ZodString;
|
|
21
19
|
}, z.core.$strip>, readonly [{
|
|
22
|
-
readonly reason: "no_results";
|
|
23
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
24
|
-
readonly when: "Search returned zero results for the query.";
|
|
25
|
-
readonly recovery: "Broaden the query or try different keywords and search again.";
|
|
26
|
-
}, {
|
|
27
20
|
readonly reason: "invalid_language";
|
|
28
21
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
29
22
|
readonly when: "The language code is not a valid BCP 47 code.";
|
|
30
23
|
readonly recovery: "Use a valid BCP 47 language code such as \"fr\", \"de\", or \"ja\".";
|
|
31
|
-
}]
|
|
24
|
+
}], {
|
|
25
|
+
readonly effectiveQuery: z.ZodString;
|
|
26
|
+
readonly totalCount: z.ZodNumber;
|
|
27
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}>;
|
|
32
29
|
//# sourceMappingURL=wikipedia-search.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"wikipedia-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAkG1B,CAAC"}
|
|
@@ -33,17 +33,19 @@ export const wikipediaSearch = tool('wikipedia_search', {
|
|
|
33
33
|
})
|
|
34
34
|
.describe('A single search result entry.'))
|
|
35
35
|
.describe('Ranked search results.'),
|
|
36
|
-
total_results: z.number().describe('Total number of matching results in Wikipedia.'),
|
|
37
|
-
query_used: z.string().describe('The query that was searched.'),
|
|
38
36
|
language: z.string().describe('Language edition queried.'),
|
|
39
37
|
}),
|
|
38
|
+
// Agent-facing context — query echo, total match count, and optional empty-result
|
|
39
|
+
// notice. Reaches structuredContent AND content[] automatically; disjoint from output.
|
|
40
|
+
enrichment: {
|
|
41
|
+
effectiveQuery: z.string().describe('The query sent to Wikipedia.'),
|
|
42
|
+
totalCount: z.number().describe('Total matching results in Wikipedia.'),
|
|
43
|
+
notice: z
|
|
44
|
+
.string()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Guidance when no results matched — e.g. try different keywords. Absent on successful result pages.'),
|
|
47
|
+
},
|
|
40
48
|
errors: [
|
|
41
|
-
{
|
|
42
|
-
reason: 'no_results',
|
|
43
|
-
code: JsonRpcErrorCode.NotFound,
|
|
44
|
-
when: 'Search returned zero results for the query.',
|
|
45
|
-
recovery: 'Broaden the query or try different keywords and search again.',
|
|
46
|
-
},
|
|
47
49
|
{
|
|
48
50
|
reason: 'invalid_language',
|
|
49
51
|
code: JsonRpcErrorCode.ValidationError,
|
|
@@ -60,25 +62,16 @@ export const wikipediaSearch = tool('wikipedia_search', {
|
|
|
60
62
|
ctx.log.info('Searching Wikipedia', { query: input.query, limit, language });
|
|
61
63
|
const svc = getWikipediaService();
|
|
62
64
|
const { results, totalResults } = await svc.search(input.query, limit, language, ctx);
|
|
65
|
+
ctx.enrich.echo(input.query);
|
|
66
|
+
ctx.enrich.total(totalResults);
|
|
63
67
|
if (results.length === 0) {
|
|
64
|
-
|
|
65
|
-
query: input.query,
|
|
66
|
-
language,
|
|
67
|
-
recovery: { hint: `Try different keywords or a broader query than "${input.query}".` },
|
|
68
|
-
});
|
|
68
|
+
ctx.enrich.notice(`No Wikipedia articles found for "${input.query}" in language "${language}". Try different keywords or a broader query.`);
|
|
69
69
|
}
|
|
70
70
|
ctx.log.info('Search complete', { count: results.length, totalResults, language });
|
|
71
|
-
return {
|
|
72
|
-
results,
|
|
73
|
-
total_results: totalResults,
|
|
74
|
-
query_used: input.query,
|
|
75
|
-
language,
|
|
76
|
-
};
|
|
71
|
+
return { results, language };
|
|
77
72
|
},
|
|
78
73
|
format: (result) => {
|
|
79
|
-
const lines = [
|
|
80
|
-
`**${result.results.length} of ${result.total_results} results** for "${result.query_used}" (${result.language})\n`,
|
|
81
|
-
];
|
|
74
|
+
const lines = [`**${result.results.length} results** (${result.language})\n`];
|
|
82
75
|
for (const item of result.results) {
|
|
83
76
|
lines.push(`### ${item.title}`);
|
|
84
77
|
lines.push(`**Page ID:** ${item.pageid} | **Words:** ${item.wordcount}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wikipedia-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;IACtD,KAAK,EAAE,kBAAkB;IACzB,WAAW,EACT,gVAAgV;IAClV,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAChF,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,uFAAuF,CACxF;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,6EAA6E,CAAC;KAC3F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YAC7E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SACtD,CAAC;aACD,QAAQ,CAAC,+BAA+B,CAAC,CAC7C;aACA,QAAQ,CAAC,wBAAwB,CAAC;QACrC,
|
|
1
|
+
{"version":3,"file":"wikipedia-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/wikipedia-search.tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/wikipedia-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Search Wikipedia articles, read summaries and full text, target sections, find nearby pages, and list language editions via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/wikipedia-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -27,13 +27,15 @@
|
|
|
27
27
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
28
28
|
"tree": "bun run scripts/tree.ts",
|
|
29
29
|
"list-skills": "bun run scripts/list-skills.ts",
|
|
30
|
-
"format": "biome check --write
|
|
30
|
+
"format": "biome check --write .",
|
|
31
|
+
"format:unsafe": "biome check --write --unsafe .",
|
|
31
32
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
32
33
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
33
34
|
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/wikipedia-mcp-server.mcpb",
|
|
34
35
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
35
36
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
36
37
|
"test": "bunx vitest run",
|
|
38
|
+
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish",
|
|
37
39
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
38
40
|
"start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js"
|
|
39
41
|
},
|
|
@@ -77,7 +79,7 @@
|
|
|
77
79
|
"access": "public"
|
|
78
80
|
},
|
|
79
81
|
"dependencies": {
|
|
80
|
-
"@cyanheads/mcp-ts-core": "^0.9.
|
|
82
|
+
"@cyanheads/mcp-ts-core": "^0.9.16",
|
|
81
83
|
"pino-pretty": "^13.1.3",
|
|
82
84
|
"wtf_wikipedia": "^10.4.2",
|
|
83
85
|
"zod": "^4.4.3"
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/wikipedia-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.6",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/wikipedia-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.1.
|
|
16
|
+
"version": "0.1.6",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
43
43
|
"identifier": "@cyanheads/wikipedia-mcp-server",
|
|
44
44
|
"runtimeHint": "bun",
|
|
45
|
-
"version": "0.1.
|
|
45
|
+
"version": "0.1.6",
|
|
46
46
|
"packageArguments": [
|
|
47
47
|
{
|
|
48
48
|
"type": "positional",
|