@upstash/context7-mcp 1.0.8 → 1.0.10

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [<img alt="Install in VS Code (npx)" src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Context7%20MCP&color=0098FF">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22context7%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40upstash%2Fcontext7-mcp%40latest%22%5D%7D)
4
4
 
5
- [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) [![Documentação em Português (Brasil)](https://img.shields.io/badge/docs-Português%20(Brasil)-purple)](./docs/README.pt-BR.md) [![Documentazione in italiano](https://img.shields.io/badge/docs-Italian-red)](./docs/README.it.md) [![Dokumentasi Bahasa Indonesia](https://img.shields.io/badge/docs-Bahasa%20Indonesia-pink)](./docs/README.id-ID.md) [![Dokumentation auf Deutsch](https://img.shields.io/badge/docs-Deutsch-darkgreen)](./docs/README.de.md) [![Документация на русском языке](https://img.shields.io/badge/docs-Русский-darkblue)](./docs/README.ru.md) [![Türkçe Doküman](https://img.shields.io/badge/docs-Türkçe-blue)](./docs/README.tr.md)
5
+ [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) [![Documentação em Português (Brasil)](https://img.shields.io/badge/docs-Português%20(Brasil)-purple)](./docs/README.pt-BR.md) [![Documentazione in italiano](https://img.shields.io/badge/docs-Italian-red)](./docs/README.it.md) [![Dokumentasi Bahasa Indonesia](https://img.shields.io/badge/docs-Bahasa%20Indonesia-pink)](./docs/README.id-ID.md) [![Dokumentation auf Deutsch](https://img.shields.io/badge/docs-Deutsch-darkgreen)](./docs/README.de.md) [![Документация на русском языке](https://img.shields.io/badge/docs-Русский-darkblue)](./docs/README.ru.md) [![Türkçe Doküman](https://img.shields.io/badge/docs-Türkçe-blue)](./docs/README.tr.md) [![Arabic Documentation](https://img.shields.io/badge/docs-Arabic-white)](./docs/README.ar.md)
6
6
 
7
7
 
8
8
  ## ❌ Without Context7
@@ -61,7 +61,7 @@ Pasting the following configuration into your Cursor `~/.cursor/mcp.json` file i
61
61
  "mcpServers": {
62
62
  "context7": {
63
63
  "command": "npx",
64
- "args": ["-y", "@upstash/context7-mcp@latest"]
64
+ "args": ["-y", "@upstash/context7-mcp"]
65
65
  }
66
66
  }
67
67
  }
@@ -75,7 +75,7 @@ Pasting the following configuration into your Cursor `~/.cursor/mcp.json` file i
75
75
  "mcpServers": {
76
76
  "context7": {
77
77
  "command": "bunx",
78
- "args": ["-y", "@upstash/context7-mcp@latest"]
78
+ "args": ["-y", "@upstash/context7-mcp"]
79
79
  }
80
80
  }
81
81
  }
@@ -108,7 +108,7 @@ Add this to your Windsurf MCP config file. See [Windsurf MCP docs](https://docs.
108
108
  "mcpServers": {
109
109
  "context7": {
110
110
  "command": "npx",
111
- "args": ["-y", "@upstash/context7-mcp@latest"]
111
+ "args": ["-y", "@upstash/context7-mcp"]
112
112
  }
113
113
  }
114
114
  }
@@ -127,7 +127,7 @@ Add this to your VS Code MCP config file. See [VS Code MCP docs](https://code.vi
127
127
  "Context7": {
128
128
  "type": "stdio",
129
129
  "command": "npx",
130
- "args": ["-y", "@upstash/context7-mcp@latest"]
130
+ "args": ["-y", "@upstash/context7-mcp"]
131
131
  }
132
132
  }
133
133
  }
@@ -143,7 +143,7 @@ It can be installed via [Zed Extensions](https://zed.dev/extensions?query=Contex
143
143
  "Context7": {
144
144
  "command": {
145
145
  "path": "npx",
146
- "args": ["-y", "@upstash/context7-mcp@latest"]
146
+ "args": ["-y", "@upstash/context7-mcp"]
147
147
  },
148
148
  "settings": {}
149
149
  }
@@ -156,7 +156,7 @@ It can be installed via [Zed Extensions](https://zed.dev/extensions?query=Contex
156
156
  Run this command. See [Claude Code MCP docs](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) for more info.
157
157
 
158
158
  ```sh
159
- claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
159
+ claude mcp add context7 -- npx -y @upstash/context7-mcp
160
160
  ```
161
161
 
162
162
  ### Install in Claude Desktop
@@ -168,7 +168,7 @@ Add this to your Claude Desktop `claude_desktop_config.json` file. See [Claude D
168
168
  "mcpServers": {
169
169
  "Context7": {
170
170
  "command": "npx",
171
- "args": ["-y", "@upstash/context7-mcp@latest"]
171
+ "args": ["-y", "@upstash/context7-mcp"]
172
172
  }
173
173
  }
174
174
  }
@@ -180,12 +180,12 @@ Open the "Settings" page of the app, navigate to "Plugins," and enter the follow
180
180
 
181
181
  ```json
182
182
  {
183
- "mcpServers": {
184
- "context7": {
185
- "args": ["-y", "@upstash/context7-mcp@latest"],
186
- "command": "npx"
187
- }
188
- }
183
+ "mcpServers": {
184
+ "context7": {
185
+ "command": "npx",
186
+ "args": ["-y", "@upstash/context7-mcp"]
187
+ }
188
+ }
189
189
  }
190
190
  ```
191
191
 
@@ -208,7 +208,7 @@ If you prefer to run the MCP server in a Docker container:
208
208
  WORKDIR /app
209
209
 
210
210
  # Install the latest version globally
211
- RUN npm install -g @upstash/context7-mcp@latest
211
+ RUN npm install -g @upstash/context7-mcp
212
212
 
213
213
  # Expose default port if needed (optional, depends on MCP client interaction)
214
214
  # EXPOSE 3000
@@ -259,7 +259,7 @@ The configuration on Windows is slightly different compared to Linux or macOS (*
259
259
  "/c",
260
260
  "npx",
261
261
  "-y",
262
- "@upstash/context7-mcp@latest"
262
+ "@upstash/context7-mcp"
263
263
  ],
264
264
  "disabled": false,
265
265
  "autoApprove": []
@@ -279,7 +279,7 @@ Examples:
279
279
  "mcpServers": {
280
280
  "context7": {
281
281
  "command": "npx",
282
- "args": ["-y", "@upstash/context7-mcp@latest"],
282
+ "args": ["-y", "@upstash/context7-mcp"],
283
283
  "env": {
284
284
  "DEFAULT_MINIMUM_TOKENS": "10000"
285
285
  }
@@ -327,7 +327,7 @@ bun run build
327
327
  ### Testing with MCP Inspector
328
328
 
329
329
  ```bash
330
- npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
330
+ npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp
331
331
  ```
332
332
 
333
333
  ## Troubleshooting
@@ -341,7 +341,7 @@ If you see this error, try using `bunx` instead of `npx`.
341
341
  "mcpServers": {
342
342
  "context7": {
343
343
  "command": "bunx",
344
- "args": ["-y", "@upstash/context7-mcp@latest"]
344
+ "args": ["-y", "@upstash/context7-mcp"]
345
345
  }
346
346
  }
347
347
  }
@@ -361,7 +361,26 @@ If you encounter an error like: `Error: Cannot find module 'uriTemplate.js'` try
361
361
  "args": [
362
362
  "-y",
363
363
  "--node-options=--experimental-vm-modules",
364
- "@upstash/context7-mcp@1.0.6"
364
+ "@upstash/context7-mcp"
365
+ ]
366
+ }
367
+ }
368
+ }
369
+ ```
370
+
371
+ ### TLS/Certificate Issues
372
+
373
+ Use the `--experimental-fetch` flag with `npx` to bypass TLS-related issues:
374
+
375
+ ```json
376
+ {
377
+ "mcpServers": {
378
+ "context7": {
379
+ "command": "npx",
380
+ "args": [
381
+ "-y",
382
+ "--node-options=--experimental-fetch",
383
+ "@upstash/context7-mcp"
365
384
  ]
366
385
  }
367
386
  }
@@ -370,7 +389,7 @@ If you encounter an error like: `Error: Cannot find module 'uriTemplate.js'` try
370
389
 
371
390
  ### MCP Client Errors
372
391
 
373
- 1. Try removing `@latest` from the package name.
392
+ 1. Try adding `@latest` to the package name.
374
393
 
375
394
  2. Try using `bunx` as an alternative.
376
395
 
@@ -382,6 +401,13 @@ If you encounter an error like: `Error: Cannot find module 'uriTemplate.js'` try
382
401
 
383
402
  Context7 projects are community-contributed and while we strive to maintain high quality, we cannot guarantee the accuracy, completeness, or security of all library documentation. Projects listed in Context7 are developed and maintained by their respective owners, not by Context7. If you encounter any suspicious, inappropriate, or potentially harmful content, please use the "Report" button on the project page to notify us immediately. We take all reports seriously and will review flagged content promptly to maintain the integrity and safety of our platform. By using Context7, you acknowledge that you do so at your own discretion and risk.
384
403
 
404
+ ## Connect with Us
405
+
406
+ Stay updated and join our community:
407
+ - 📢 Follow us on [X](https://x.com/contextai) for the latest news and updates
408
+ - 🌐 Visit our [Website](https://context7.com)
409
+ - 💬 Join our [Discord Community](https://upstash.com/discord) (if applicable)
410
+
385
411
  ## Context7 In Media
386
412
 
387
413
  - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
package/dist/index.js CHANGED
@@ -22,24 +22,32 @@ if (process.env.DEFAULT_MINIMUM_TOKENS) {
22
22
  const server = new McpServer({
23
23
  name: "Context7",
24
24
  description: "Retrieves up-to-date documentation and code examples for any library.",
25
- version: "v1.0.8",
25
+ version: "v1.0.10",
26
26
  capabilities: {
27
27
  resources: {},
28
28
  tools: {},
29
29
  },
30
30
  });
31
31
  // Register Context7 tools
32
- server.tool("resolve-library-id", `Resolves a package name to a Context7-compatible library ID and returns a list of matching libraries.
32
+ server.tool("resolve-library-id", `Resolves a package/product name to a Context7-compatible library ID and returns a list of matching libraries.
33
33
 
34
- You MUST call this function before 'get-library-docs' to obtain a valid Context7-compatible library ID.
34
+ You MUST call this function before 'get-library-docs' to obtain a valid Context7-compatible library ID UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.
35
35
 
36
- When selecting the best match, consider:
37
- - Name similarity to the query
38
- - Description relevance
39
- - Code Snippet count (documentation coverage)
40
- - GitHub Stars (popularity)
36
+ Selection Process:
37
+ 1. Analyze the query to understand what library/package the user is looking for
38
+ 2. Return the most relevant match based on:
39
+ - Name similarity to the query (exact matches prioritized)
40
+ - Description relevance to the query's intent
41
+ - Documentation coverage (prioritize libraries with higher Code Snippet counts)
42
+ - Trust score (consider libraries with scores of 7-10 more authoritative)
41
43
 
42
- Return the selected library ID and explain your choice. If there are multiple good matches, mention this but proceed with the most relevant one.`, {
44
+ Response Format:
45
+ - Return the selected library ID in a clearly marked section
46
+ - Provide a brief explanation for why this library was chosen
47
+ - If multiple good matches exist, acknowledge this but proceed with the most relevant one
48
+ - If no good matches exist, clearly state this and suggest query refinements
49
+
50
+ For ambiguous queries, request clarification before proceeding with a best-guess match.`, {
43
51
  libraryName: z
44
52
  .string()
45
53
  .describe("Library name to search for and retrieve a Context7-compatible library ID."),
@@ -73,25 +81,26 @@ Return the selected library ID and explain your choice. If there are multiple go
73
81
  text: `Available Libraries (top matches):
74
82
 
75
83
  Each result includes:
76
- - Library ID: Context7-compatible identifier (format: /org/repo)
84
+ - Library ID: Context7-compatible identifier (format: /org/project)
77
85
  - Name: Library or package name
78
86
  - Description: Short summary
79
87
  - Code Snippets: Number of available code examples
80
- - GitHub Stars: Popularity indicator
88
+ - Trust Score: Authority indicator
89
+ - Versions: List of versions if available. Use one of those versions if and only if the user explicitly provides a version in their query.
81
90
 
82
- For best results, select libraries based on name match, popularity (stars), snippet coverage, and relevance to your use case.
91
+ For best results, select libraries based on name match, trust score, snippet coverage, and relevance to your use case.
83
92
 
84
- ---
93
+ ----------
85
94
 
86
95
  ${resultsText}`,
87
96
  },
88
97
  ],
89
98
  };
90
99
  });
91
- server.tool("get-library-docs", "Fetches up-to-date documentation for a library. You must call 'resolve-library-id' first to obtain the exact Context7-compatible library ID required to use this tool.", {
100
+ server.tool("get-library-docs", "Fetches up-to-date documentation for a library. You must call 'resolve-library-id' first to obtain the exact Context7-compatible library ID required to use this tool, UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.", {
92
101
  context7CompatibleLibraryID: z
93
102
  .string()
94
- .describe("Exact Context7-compatible library ID (e.g., 'mongodb/docs', 'vercel/nextjs') retrieved from 'resolve-library-id'."),
103
+ .describe("Exact Context7-compatible library ID (e.g., '/mongodb/docs', '/vercel/next.js', '/supabase/supabase', '/vercel/next.js/v14.3.0-canary.87') retrieved from 'resolve-library-id' or directly from user query in the format '/org/project' or '/org/project/version'."),
95
104
  topic: z
96
105
  .string()
97
106
  .optional()
@@ -102,18 +111,9 @@ server.tool("get-library-docs", "Fetches up-to-date documentation for a library.
102
111
  .optional()
103
112
  .describe(`Maximum number of tokens of documentation to retrieve (default: ${DEFAULT_MINIMUM_TOKENS}). Higher values provide more context but consume more tokens.`),
104
113
  }, async ({ context7CompatibleLibraryID, tokens = DEFAULT_MINIMUM_TOKENS, topic = "" }) => {
105
- // Extract folders parameter if present in the ID
106
- let folders = "";
107
- let libraryId = context7CompatibleLibraryID;
108
- if (context7CompatibleLibraryID.includes("?folders=")) {
109
- const [id, foldersParam] = context7CompatibleLibraryID.split("?folders=");
110
- libraryId = id;
111
- folders = foldersParam;
112
- }
113
- const documentationText = await fetchLibraryDocumentation(libraryId, {
114
+ const documentationText = await fetchLibraryDocumentation(context7CompatibleLibraryID, {
114
115
  tokens,
115
116
  topic,
116
- folders,
117
117
  });
118
118
  if (!documentationText) {
119
119
  return {
package/dist/lib/api.js CHANGED
@@ -37,8 +37,6 @@ export async function fetchLibraryDocumentation(libraryId, options = {}) {
37
37
  url.searchParams.set("tokens", options.tokens.toString());
38
38
  if (options.topic)
39
39
  url.searchParams.set("topic", options.topic);
40
- if (options.folders)
41
- url.searchParams.set("folders", options.folders);
42
40
  url.searchParams.set("type", DEFAULT_TYPE);
43
41
  const response = await fetch(url, {
44
42
  headers: {
package/dist/lib/utils.js CHANGED
@@ -16,9 +16,13 @@ export function formatSearchResult(result) {
16
16
  if (result.totalSnippets !== -1 && result.totalSnippets !== undefined) {
17
17
  formattedResult.push(`- Code Snippets: ${result.totalSnippets}`);
18
18
  }
19
- // Only add GitHub stars if it's a valid value
20
- if (result.stars !== -1 && result.stars !== undefined) {
21
- formattedResult.push(`- GitHub Stars: ${result.stars}`);
19
+ // Only add trust score if it's a valid value
20
+ if (result.trustScore !== -1 && result.trustScore !== undefined) {
21
+ formattedResult.push(`- Trust Score: ${result.trustScore}`);
22
+ }
23
+ // Only add versions if it's a valid value
24
+ if (result.versions !== undefined && result.versions.length > 0) {
25
+ formattedResult.push(`- Versions: ${result.versions.join(", ")}`);
22
26
  }
23
27
  // Join all parts with newlines
24
28
  return formattedResult.join("\n");
@@ -35,5 +39,5 @@ export function formatSearchResults(searchResponse) {
35
39
  return "No documentation libraries found matching your query.";
36
40
  }
37
41
  const formattedResults = searchResponse.results.map(formatSearchResult);
38
- return formattedResults.join("\n---\n");
42
+ return formattedResults.join("\n----------\n");
39
43
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@upstash/context7-mcp","version":"v1.0.8","description":"MCP server for Context7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 dist/index.js","format":"prettier --write .","lint":"eslint \"**/*.{js,ts,tsx}\" --fix"},"repository":{"type":"git","url":"git+https://github.com/upstash/context7.git"},"keywords":["modelcontextprotocol","mcp","context7"],"author":"abdush","license":"MIT","type":"module","bin":{"context7-mcp":"dist/index.js"},"files":["dist"],"bugs":{"url":"https://github.com/upstash/context7/issues"},"homepage":"https://github.com/upstash/context7#readme","dependencies":{"@modelcontextprotocol/sdk":"^1.8.0","dotenv":"^16.5.0","zod":"^3.24.2"},"devDependencies":{"@types/node":"^22.13.14","@typescript-eslint/eslint-plugin":"^8.28.0","@typescript-eslint/parser":"^8.28.0","eslint":"^9.23.0","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.5","prettier":"^3.5.3","typescript":"^5.8.2","typescript-eslint":"^8.28.0"}}
1
+ {"name":"@upstash/context7-mcp","version":"v1.0.10","description":"MCP server for Context7","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && chmod 755 dist/index.js","format":"prettier --write .","lint":"eslint \"**/*.{js,ts,tsx}\" --fix"},"repository":{"type":"git","url":"git+https://github.com/upstash/context7.git"},"keywords":["modelcontextprotocol","mcp","context7"],"author":"abdush","license":"MIT","type":"module","bin":{"context7-mcp":"dist/index.js"},"files":["dist"],"bugs":{"url":"https://github.com/upstash/context7/issues"},"homepage":"https://github.com/upstash/context7#readme","dependencies":{"@modelcontextprotocol/sdk":"^1.8.0","dotenv":"^16.5.0","zod":"^3.24.2"},"devDependencies":{"@types/node":"^22.13.14","@typescript-eslint/eslint-plugin":"^8.28.0","@typescript-eslint/parser":"^8.28.0","eslint":"^9.23.0","eslint-config-prettier":"^10.1.1","eslint-plugin-prettier":"^5.2.5","prettier":"^3.5.3","typescript":"^5.8.2","typescript-eslint":"^8.28.0"}}