├── .github
└── workflows
│ └── release.yml
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── bun.lock
├── docs
├── README.ar.md
├── README.de.md
├── README.es.md
├── README.fr.md
├── README.id-ID.md
├── README.it.md
├── README.ko.md
├── README.pt-BR.md
├── README.ru.md
├── README.tr.md
├── README.zh-CN.md
└── adding-projects.md
├── eslint.config.js
├── package.json
├── prettier.config.mjs
├── schema
└── context7.json
├── smithery.yaml
├── src
├── index.ts
└── lib
│ ├── api.ts
│ ├── types.ts
│ └── utils.ts
└── tsconfig.json
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | release:
5 | types:
6 | - published
7 |
8 | jobs:
9 | release:
10 | name: Release
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: Checkout Repo
14 | uses: actions/checkout@v3
15 |
16 | - name: Set env
17 | run: echo "VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
18 |
19 | - name: Setup Node
20 | uses: actions/setup-node@v3
21 | with:
22 | node-version: lts/*
23 |
24 | - name: Setup Bun
25 | uses: oven-sh/setup-bun@v1
26 | with:
27 | bun-version: latest
28 |
29 | - name: Set package version
30 | run: |
31 | echo $(jq --arg v "${{ env.VERSION }}" '(.version) = $v' package.json) > package.json
32 |
33 | - name: Update version in source file
34 | run: |
35 | sed -i "s/version: \"[0-9]*\.[0-9]*\.[0-9]*\"/version: \"${{ env.VERSION }}\"/" src/index.ts
36 |
37 | - name: Install Dependencies
38 | run: bun install
39 |
40 | - name: Build
41 | run: bun run build
42 |
43 | - name: Set NPM_TOKEN
44 | run: npm config set //registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}
45 |
46 | - name: Publish
47 | if: "!github.event.release.prerelease"
48 | run: |
49 | npm pkg delete scripts.prepare
50 | npm publish --access public
51 |
52 | - name: Publish release candidate
53 | if: "github.event.release.prerelease"
54 | run: |
55 | npm pkg delete scripts.prepare
56 | npm publish --access public --tag=canary
57 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
2 |
3 | # Logs
4 |
5 | logs
6 | _.log
7 | npm-debug.log_
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 | .pnpm-debug.log*
12 |
13 | # Caches
14 |
15 | .cache
16 |
17 | # Diagnostic reports (https://nodejs.org/api/report.html)
18 |
19 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
20 |
21 | # Runtime data
22 |
23 | pids
24 | _.pid
25 | _.seed
26 | *.pid.lock
27 |
28 | # Directory for instrumented libs generated by jscoverage/JSCover
29 |
30 | lib-cov
31 |
32 | # Coverage directory used by tools like istanbul
33 |
34 | coverage
35 | *.lcov
36 |
37 | # nyc test coverage
38 |
39 | .nyc_output
40 |
41 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
42 |
43 | .grunt
44 |
45 | # Bower dependency directory (https://bower.io/)
46 |
47 | bower_components
48 |
49 | # node-waf configuration
50 |
51 | .lock-wscript
52 |
53 | # Compiled binary addons (https://nodejs.org/api/addons.html)
54 |
55 | build/Release
56 |
57 | # Dependency directories
58 |
59 | node_modules/
60 | jspm_packages/
61 |
62 | # Snowpack dependency directory (https://snowpack.dev/)
63 |
64 | web_modules/
65 |
66 | # TypeScript cache
67 |
68 | *.tsbuildinfo
69 |
70 | # Optional npm cache directory
71 |
72 | .npm
73 |
74 | # Optional eslint cache
75 |
76 | .eslintcache
77 |
78 | # Optional stylelint cache
79 |
80 | .stylelintcache
81 |
82 | # Microbundle cache
83 |
84 | .rpt2_cache/
85 | .rts2_cache_cjs/
86 | .rts2_cache_es/
87 | .rts2_cache_umd/
88 |
89 | # Optional REPL history
90 |
91 | .node_repl_history
92 |
93 | # Output of 'npm pack'
94 |
95 | *.tgz
96 |
97 | # Yarn Integrity file
98 |
99 | .yarn-integrity
100 |
101 | # dotenv environment variable files
102 |
103 | .env
104 | .env.development.local
105 | .env.test.local
106 | .env.production.local
107 | .env.local
108 |
109 | # parcel-bundler cache (https://parceljs.org/)
110 |
111 | .parcel-cache
112 |
113 | # Next.js build output
114 |
115 | .next
116 | out
117 |
118 | # Nuxt.js build / generate output
119 |
120 | .nuxt
121 | dist
122 |
123 | # Gatsby files
124 |
125 | # Comment in the public line in if your project uses Gatsby and not Next.js
126 |
127 | # https://nextjs.org/blog/next-9-1#public-directory-support
128 |
129 | # public
130 |
131 | # vuepress build output
132 |
133 | .vuepress/dist
134 |
135 | # vuepress v2.x temp and cache directory
136 |
137 | .temp
138 |
139 | # Docusaurus cache and generated files
140 |
141 | .docusaurus
142 |
143 | # Serverless directories
144 |
145 | .serverless/
146 |
147 | # FuseBox cache
148 |
149 | .fusebox/
150 |
151 | # DynamoDB Local files
152 |
153 | .dynamodb/
154 |
155 | # TernJS port file
156 |
157 | .tern-port
158 |
159 | # Stores VSCode versions used for testing VSCode extensions
160 |
161 | .vscode-test
162 |
163 | # yarn v2
164 |
165 | .yarn/cache
166 | .yarn/unplugged
167 | .yarn/build-state.yml
168 | .yarn/install-state.gz
169 | .pnp.*
170 |
171 | # IntelliJ based IDEs
172 | .idea
173 |
174 | # Finder (MacOS) folder config
175 | .DS_Store
176 | package-lock.json
177 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
2 | # ----- Build Stage -----
3 | FROM node:lts-alpine AS builder
4 | WORKDIR /app
5 |
6 | # Copy package and configuration
7 | COPY package.json bun.lock tsconfig.json ./
8 |
9 | # Copy source code
10 | COPY src ./src
11 |
12 | # Install dependencies and build
13 | RUN npm install && npm run build
14 |
15 | # ----- Production Stage -----
16 | FROM node:lts-alpine
17 | WORKDIR /app
18 |
19 | # Copy built artifacts
20 | COPY --from=builder /app/dist ./dist
21 |
22 | # Copy package.json for production install
23 | COPY package.json ./
24 |
25 | # Install only production dependencies
26 | RUN npm install --production --ignore-scripts
27 |
28 | # Set default environment variables for HTTP mode
29 | ENV MCP_TRANSPORT=http
30 | ENV PORT=8080
31 |
32 | # Expose HTTP port
33 | EXPOSE 8080
34 |
35 | # Default command
36 | CMD ["node", "dist/index.js"]
37 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2021 Upstash, Inc.
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.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Up-to-date Code Docs For Any Prompt
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | [](./docs/README.zh-CN.md) [](./docs/README.ko.md) [](./docs/README.es.md) [](./docs/README.fr.md) [![Documentação em Português (Brasil)]()](./docs/README.pt-BR.md) [](./docs/README.it.md) [](./docs/README.id-ID.md) [](./docs/README.de.md) [](./docs/README.ru.md) [](./docs/README.tr.md) [](./docs/README.ar.md)
6 |
7 | ## ❌ Without Context7
8 |
9 | LLMs rely on outdated or generic information about the libraries you use. You get:
10 |
11 | - ❌ Code examples are outdated and based on year-old training data
12 | - ❌ Hallucinated APIs don't even exist
13 | - ❌ Generic answers for old package versions
14 |
15 | ## ✅ With Context7
16 |
17 | Context7 MCP pulls up-to-date, version-specific documentation and code examples straight from the source — and places them directly into your prompt.
18 |
19 | Add `use context7` to your prompt in Cursor:
20 |
21 | ```txt
22 | Create a basic Next.js project with app router. use context7
23 | ```
24 |
25 | ```txt
26 | Create a script to delete the rows where the city is "" given PostgreSQL credentials. use context7
27 | ```
28 |
29 | Context7 fetches up-to-date code examples and documentation right into your LLM's context.
30 |
31 | - 1️⃣ Write your prompt naturally
32 | - 2️⃣ Tell the LLM to `use context7`
33 | - 3️⃣ Get working code answers
34 |
35 | No tab-switching, no hallucinated APIs that don't exist, no outdated code generations.
36 |
37 | ## 📚 Adding Projects
38 |
39 | Check out our [project addition guide](./docs/adding-projects.md) to learn how to add (or update) your favorite libraries to Context7.
40 |
41 | ## 🛠️ Installation
42 |
43 | ### Requirements
44 |
45 | - Node.js >= v18.0.0
46 | - Cursor, Windsurf, Claude Desktop or another MCP Client
47 |
48 |
49 | Installing via Smithery
50 |
51 | To install Context7 MCP Server for any client automatically via [Smithery](https://smithery.ai/server/@upstash/context7-mcp):
52 |
53 | ```bash
54 | npx -y @smithery/cli@latest install @upstash/context7-mcp --client --key
55 | ```
56 |
57 | You can find your Smithery key in the [Smithery.ai webpage](https://smithery.ai/server/@upstash/context7-mcp).
58 |
59 |
60 |
61 |
62 | Install in Cursor
63 |
64 | Go to: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
65 |
66 | Pasting the following configuration into your Cursor `~/.cursor/mcp.json` file is the recommended approach. You may also install in a specific project by creating `.cursor/mcp.json` in your project folder. See [Cursor MCP docs](https://docs.cursor.com/context/model-context-protocol) for more info.
67 |
68 | #### Cursor Remote Server Connection
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "url": "https://mcp.context7.com/mcp"
75 | }
76 | }
77 | }
78 | ```
79 |
80 | #### Cursor Local Server Connection
81 |
82 | ```json
83 | {
84 | "mcpServers": {
85 | "context7": {
86 | "command": "npx",
87 | "args": ["-y", "@upstash/context7-mcp"]
88 | }
89 | }
90 | }
91 | ```
92 |
93 |
94 | Alternative: Use Bun
95 |
96 | ```json
97 | {
98 | "mcpServers": {
99 | "context7": {
100 | "command": "bunx",
101 | "args": ["-y", "@upstash/context7-mcp"]
102 | }
103 | }
104 | }
105 | ```
106 |
107 |
108 |
109 |
110 | Alternative: Use Deno
111 |
112 | ```json
113 | {
114 | "mcpServers": {
115 | "context7": {
116 | "command": "deno",
117 | "args": ["run", "--allow-env", "--allow-net", "npm:@upstash/context7-mcp"]
118 | }
119 | }
120 | }
121 | ```
122 |
123 |
124 |
125 |
126 |
127 |
128 | Install in Windsurf
129 |
130 | Add this to your Windsurf MCP config file. See [Windsurf MCP docs](https://docs.windsurf.com/windsurf/mcp) for more info.
131 |
132 | #### Windsurf Remote Server Connection
133 |
134 | ```json
135 | {
136 | "mcpServers": {
137 | "context7": {
138 | "serverUrl": "https://mcp.context7.com/sse"
139 | }
140 | }
141 | }
142 | ```
143 |
144 | #### Windsurf Local Server Connection
145 |
146 | ```json
147 | {
148 | "mcpServers": {
149 | "context7": {
150 | "command": "npx",
151 | "args": ["-y", "@upstash/context7-mcp"]
152 | }
153 | }
154 | }
155 | ```
156 |
157 |
158 |
159 |
160 | Install in VS Code
161 |
162 | [
](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)
163 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
164 |
165 | Add this to your VS Code MCP config file. See [VS Code MCP docs](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more info.
166 |
167 | #### VS Code Remote Server Connection
168 |
169 | ```json
170 | {
171 | "mcpServers": {
172 | "context7": {
173 | "type": "http",
174 | "url": "https://mcp.context7.com/mcp"
175 | }
176 | }
177 | }
178 | ```
179 |
180 | #### VS Code Local Server Connection
181 |
182 | ```json
183 | {
184 | "servers": {
185 | "Context7": {
186 | "type": "stdio",
187 | "command": "npx",
188 | "args": ["-y", "@upstash/context7-mcp"]
189 | }
190 | }
191 | }
192 | ```
193 |
194 |
195 |
196 |
197 | Install in Zed
198 |
199 | It can be installed via [Zed Extensions](https://zed.dev/extensions?query=Context7) or you can add this to your Zed `settings.json`. See [Zed Context Server docs](https://zed.dev/docs/assistant/context-servers) for more info.
200 |
201 | ```json
202 | {
203 | "context_servers": {
204 | "Context7": {
205 | "command": {
206 | "path": "npx",
207 | "args": ["-y", "@upstash/context7-mcp"]
208 | },
209 | "settings": {}
210 | }
211 | }
212 | }
213 | ```
214 |
215 |
216 |
217 |
218 | Install in Claude Code
219 |
220 | 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.
221 |
222 | #### Claude Code Remote Server Connection
223 |
224 | ```sh
225 | claude mcp add --transport sse context7 https://mcp.context7.com/sse
226 | ```
227 |
228 | #### Claude Code Local Server Connection
229 |
230 | ```sh
231 | claude mcp add context7 -- npx -y @upstash/context7-mcp
232 | ```
233 |
234 |
235 |
236 |
237 | Install in Claude Desktop
238 |
239 | Add this to your Claude Desktop `claude_desktop_config.json` file. See [Claude Desktop MCP docs](https://modelcontextprotocol.io/quickstart/user) for more info.
240 |
241 | ```json
242 | {
243 | "mcpServers": {
244 | "Context7": {
245 | "command": "npx",
246 | "args": ["-y", "@upstash/context7-mcp"]
247 | }
248 | }
249 | }
250 | ```
251 |
252 |
253 |
254 |
255 | Install in BoltAI
256 |
257 | Open the "Settings" page of the app, navigate to "Plugins," and enter the following JSON:
258 |
259 | ```json
260 | {
261 | "mcpServers": {
262 | "context7": {
263 | "command": "npx",
264 | "args": ["-y", "@upstash/context7-mcp"]
265 | }
266 | }
267 | }
268 | ```
269 |
270 | Once saved, enter in the chat `get-library-docs` followed by your Context7 documentation ID (e.g., `get-library-docs /nuxt/ui`). More information is available on [BoltAI's Documentation site](https://docs.boltai.com/docs/plugins/mcp-servers). For BoltAI on iOS, [see this guide](https://docs.boltai.com/docs/boltai-mobile/mcp-servers).
271 |
272 |
273 |
274 |
275 | Using Docker
276 |
277 | If you prefer to run the MCP server in a Docker container:
278 |
279 | 1. **Build the Docker Image:**
280 |
281 | First, create a `Dockerfile` in the project root (or anywhere you prefer):
282 |
283 |
284 | Click to see Dockerfile content
285 |
286 | ```Dockerfile
287 | FROM node:18-alpine
288 |
289 | WORKDIR /app
290 |
291 | # Install the latest version globally
292 | RUN npm install -g @upstash/context7-mcp
293 |
294 | # Expose default port if needed (optional, depends on MCP client interaction)
295 | # EXPOSE 3000
296 |
297 | # Default command to run the server
298 | CMD ["context7-mcp"]
299 | ```
300 |
301 |
302 |
303 | Then, build the image using a tag (e.g., `context7-mcp`). **Make sure Docker Desktop (or the Docker daemon) is running.** Run the following command in the same directory where you saved the `Dockerfile`:
304 |
305 | ```bash
306 | docker build -t context7-mcp .
307 | ```
308 |
309 | 2. **Configure Your MCP Client:**
310 |
311 | Update your MCP client's configuration to use the Docker command.
312 |
313 | _Example for a cline_mcp_settings.json:_
314 |
315 | ```json
316 | {
317 | "mcpServers": {
318 | "Сontext7": {
319 | "autoApprove": [],
320 | "disabled": false,
321 | "timeout": 60,
322 | "command": "docker",
323 | "args": ["run", "-i", "--rm", "context7-mcp"],
324 | "transportType": "stdio"
325 | }
326 | }
327 | }
328 | ```
329 |
330 | _Note: This is an example configuration. Please refer to the specific examples for your MCP client (like Cursor, VS Code, etc.) earlier in this README to adapt the structure (e.g., `mcpServers` vs `servers`). Also, ensure the image name in `args` matches the tag used during the `docker build` command._
331 |
332 |
333 |
334 |
335 | Install in Windows
336 |
337 | The configuration on Windows is slightly different compared to Linux or macOS (_`Cline` is used in the example_). The same principle applies to other editors; refer to the configuration of `command` and `args`.
338 |
339 | ```json
340 | {
341 | "mcpServers": {
342 | "github.com/upstash/context7-mcp": {
343 | "command": "cmd",
344 | "args": ["/c", "npx", "-y", "@upstash/context7-mcp@latest"],
345 | "disabled": false,
346 | "autoApprove": []
347 | }
348 | }
349 | }
350 | ```
351 |
352 |
353 |
354 | ## 🔧 Environment Variables
355 |
356 | The Context7 MCP server supports the following environment variables:
357 |
358 | - `DEFAULT_MINIMUM_TOKENS`: Set the minimum token count for documentation retrieval (default: 10000)
359 |
360 | Example configuration with environment variables:
361 |
362 | ```json
363 | {
364 | "mcpServers": {
365 | "context7": {
366 | "command": "npx",
367 | "args": ["-y", "@upstash/context7-mcp"],
368 | "env": {
369 | "DEFAULT_MINIMUM_TOKENS": "6000"
370 | }
371 | }
372 | }
373 | }
374 | ```
375 |
376 | ## 🔨 Available Tools
377 |
378 | Context7 MCP provides the following tools that LLMs can use:
379 |
380 | - `resolve-library-id`: Resolves a general library name into a Context7-compatible library ID.
381 |
382 | - `libraryName` (required): The name of the library to search for
383 |
384 | - `get-library-docs`: Fetches documentation for a library using a Context7-compatible library ID.
385 | - `context7CompatibleLibraryID` (required): Exact Context7-compatible library ID (e.g., `/mongodb/docs`, `/vercel/next.js`)
386 | - `topic` (optional): Focus the docs on a specific topic (e.g., "routing", "hooks")
387 | - `tokens` (optional, default 10000): Max number of tokens to return. Values less than the configured `DEFAULT_MINIMUM_TOKENS` value or the default value of 10000 are automatically increased to that value.
388 |
389 | ## 💻 Development
390 |
391 | Clone the project and install dependencies:
392 |
393 | ```bash
394 | bun i
395 | ```
396 |
397 | Build:
398 |
399 | ```bash
400 | bun run build
401 | ```
402 |
403 |
404 | Local Configuration Example
405 |
406 | ```json
407 | {
408 | "mcpServers": {
409 | "context7": {
410 | "command": "npx",
411 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
412 | }
413 | }
414 | }
415 | ```
416 |
417 |
418 |
419 |
420 | Testing with MCP Inspector
421 |
422 | ```bash
423 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp
424 | ```
425 |
426 |
427 |
428 | ## 🚨 Troubleshooting
429 |
430 |
431 | Module Not Found Errors
432 |
433 | If you encounter `ERR_MODULE_NOT_FOUND`, try using `bunx` instead of `npx`:
434 |
435 | ```json
436 | {
437 | "mcpServers": {
438 | "context7": {
439 | "command": "bunx",
440 | "args": ["-y", "@upstash/context7-mcp"]
441 | }
442 | }
443 | }
444 | ```
445 |
446 | This often resolves module resolution issues in environments where `npx` doesn't properly install or resolve packages.
447 |
448 |
449 |
450 |
451 | ESM Resolution Issues
452 |
453 | For errors like `Error: Cannot find module 'uriTemplate.js'`, try the `--experimental-vm-modules` flag:
454 |
455 | ```json
456 | {
457 | "mcpServers": {
458 | "context7": {
459 | "command": "npx",
460 | "args": ["-y", "--node-options=--experimental-vm-modules", "@upstash/context7-mcp@1.0.6"]
461 | }
462 | }
463 | }
464 | ```
465 |
466 |
467 |
468 |
469 | TLS/Certificate Issues
470 |
471 | Use the `--experimental-fetch` flag to bypass TLS-related problems:
472 |
473 | ```json
474 | {
475 | "mcpServers": {
476 | "context7": {
477 | "command": "npx",
478 | "args": ["-y", "--node-options=--experimental-fetch", "@upstash/context7-mcp"]
479 | }
480 | }
481 | }
482 | ```
483 |
484 |
485 |
486 |
487 | General MCP Client Errors
488 |
489 | 1. Try adding `@latest` to the package name
490 | 2. Use `bunx` as an alternative to `npx`
491 | 3. Consider using `deno` as another alternative
492 | 4. Ensure you're using Node.js v18 or higher for native fetch support
493 |
494 |
495 |
496 | ## ⚠️ Disclaimer
497 |
498 | 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.
499 |
500 | ## 🤝 Connect with Us
501 |
502 | Stay updated and join our community:
503 |
504 | - 📢 Follow us on [X](https://x.com/contextai) for the latest news and updates
505 | - 🌐 Visit our [Website](https://context7.com)
506 | - 💬 Join our [Discord Community](https://upstash.com/discord)
507 |
508 | ## 📺 Context7 In Media
509 |
510 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
511 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
512 | - [Income Stream Surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
513 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
514 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
515 | - [Income Stream Surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
516 | - [AICodeKing: "Context7 + Cline & RooCode: This MCP Server Makes CLINE 100X MORE EFFECTIVE!"](https://www.youtube.com/watch?v=qZfENAPMnyo)
517 | - [Sean Kochel: "5 MCP Servers For Vibe Coding Glory (Just Plug-In & Go)"](https://www.youtube.com/watch?v=LqTQi8qexJM)
518 |
519 | ## ⭐ Star History
520 |
521 | [](https://www.star-history.com/#upstash/context7&Date)
522 |
523 | ## 📄 License
524 |
525 | MIT
526 |
--------------------------------------------------------------------------------
/bun.lock:
--------------------------------------------------------------------------------
1 | {
2 | "lockfileVersion": 1,
3 | "workspaces": {
4 | "": {
5 | "name": "context7-mcp",
6 | "dependencies": {
7 | "@modelcontextprotocol/sdk": "^1.8.0",
8 | "zod": "^3.24.2",
9 | },
10 | "devDependencies": {
11 | "@types/node": "^22.13.14",
12 | "@typescript-eslint/eslint-plugin": "^8.28.0",
13 | "@typescript-eslint/parser": "^8.28.0",
14 | "eslint": "^9.23.0",
15 | "eslint-config-prettier": "^10.1.1",
16 | "eslint-plugin-prettier": "^5.2.5",
17 | "prettier": "^3.5.3",
18 | "typescript": "^5.8.2",
19 | "typescript-eslint": "^8.28.0",
20 | },
21 | },
22 | },
23 | "packages": {
24 | "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.5.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w=="],
25 |
26 | "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
27 |
28 | "@eslint/config-array": ["@eslint/config-array@0.19.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w=="],
29 |
30 | "@eslint/config-helpers": ["@eslint/config-helpers@0.2.0", "", {}, "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ=="],
31 |
32 | "@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="],
33 |
34 | "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
35 |
36 | "@eslint/js": ["@eslint/js@9.23.0", "", {}, "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw=="],
37 |
38 | "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="],
39 |
40 | "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.7", "", { "dependencies": { "@eslint/core": "^0.12.0", "levn": "^0.4.1" } }, "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g=="],
41 |
42 | "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
43 |
44 | "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="],
45 |
46 | "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
47 |
48 | "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.2", "", {}, "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ=="],
49 |
50 | "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.8.0", "", { "dependencies": { "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.3", "eventsource": "^3.0.2", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^4.1.0", "raw-body": "^3.0.0", "zod": "^3.23.8", "zod-to-json-schema": "^3.24.1" } }, "sha512-e06W7SwrontJDHwCawNO5SGxG+nU9AAx+jpHHZqGl/WrDBdWOpvirC+s58VpJTB5QemI4jTRcjWT4Pt3Q1NPQQ=="],
51 |
52 | "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
53 |
54 | "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
55 |
56 | "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
57 |
58 | "@pkgr/core": ["@pkgr/core@0.2.0", "", {}, "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ=="],
59 |
60 | "@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
61 |
62 | "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
63 |
64 | "@types/node": ["@types/node@22.13.14", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w=="],
65 |
66 | "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.28.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.28.0", "@typescript-eslint/type-utils": "8.28.0", "@typescript-eslint/utils": "8.28.0", "@typescript-eslint/visitor-keys": "8.28.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg=="],
67 |
68 | "@typescript-eslint/parser": ["@typescript-eslint/parser@8.28.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.28.0", "@typescript-eslint/types": "8.28.0", "@typescript-eslint/typescript-estree": "8.28.0", "@typescript-eslint/visitor-keys": "8.28.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ=="],
69 |
70 | "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.28.0", "", { "dependencies": { "@typescript-eslint/types": "8.28.0", "@typescript-eslint/visitor-keys": "8.28.0" } }, "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw=="],
71 |
72 | "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.28.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.28.0", "@typescript-eslint/utils": "8.28.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg=="],
73 |
74 | "@typescript-eslint/types": ["@typescript-eslint/types@8.28.0", "", {}, "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA=="],
75 |
76 | "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.28.0", "", { "dependencies": { "@typescript-eslint/types": "8.28.0", "@typescript-eslint/visitor-keys": "8.28.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA=="],
77 |
78 | "@typescript-eslint/utils": ["@typescript-eslint/utils@8.28.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.28.0", "@typescript-eslint/types": "8.28.0", "@typescript-eslint/typescript-estree": "8.28.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ=="],
79 |
80 | "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.28.0", "", { "dependencies": { "@typescript-eslint/types": "8.28.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg=="],
81 |
82 | "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="],
83 |
84 | "acorn": ["acorn@8.14.1", "", { "bin": "bin/acorn" }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
85 |
86 | "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
87 |
88 | "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
89 |
90 | "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
91 |
92 | "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
93 |
94 | "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
95 |
96 | "body-parser": ["body-parser@2.2.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.0", "http-errors": "^2.0.0", "iconv-lite": "^0.6.3", "on-finished": "^2.4.1", "qs": "^6.14.0", "raw-body": "^3.0.0", "type-is": "^2.0.0" } }, "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg=="],
97 |
98 | "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
99 |
100 | "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
101 |
102 | "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="],
103 |
104 | "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
105 |
106 | "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="],
107 |
108 | "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
109 |
110 | "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
111 |
112 | "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
113 |
114 | "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
115 |
116 | "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
117 |
118 | "content-disposition": ["content-disposition@1.0.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg=="],
119 |
120 | "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="],
121 |
122 | "cookie": ["cookie@0.7.1", "", {}, "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w=="],
123 |
124 | "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="],
125 |
126 | "cors": ["cors@2.8.5", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g=="],
127 |
128 | "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
129 |
130 | "debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
131 |
132 | "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
133 |
134 | "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="],
135 |
136 | "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
137 |
138 | "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="],
139 |
140 | "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
141 |
142 | "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
143 |
144 | "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
145 |
146 | "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
147 |
148 | "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
149 |
150 | "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
151 |
152 | "eslint": ["eslint@9.23.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": "bin/eslint.js" }, "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw=="],
153 |
154 | "eslint-config-prettier": ["eslint-config-prettier@10.1.1", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": "bin/cli.js" }, "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw=="],
155 |
156 | "eslint-plugin-prettier": ["eslint-plugin-prettier@5.2.5", "", { "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.10.2" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "optionalPeers": ["@types/eslint"] }, "sha512-IKKP8R87pJyMl7WWamLgPkloB16dagPIdd2FjBDbyRYPKo93wS/NbCOPh6gH+ieNLC+XZrhJt/kWj0PS/DFdmg=="],
157 |
158 | "eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="],
159 |
160 | "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="],
161 |
162 | "espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="],
163 |
164 | "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="],
165 |
166 | "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
167 |
168 | "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
169 |
170 | "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
171 |
172 | "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="],
173 |
174 | "eventsource": ["eventsource@3.0.6", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA=="],
175 |
176 | "eventsource-parser": ["eventsource-parser@3.0.1", "", {}, "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA=="],
177 |
178 | "express": ["express@5.0.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.0.1", "content-disposition": "^1.0.0", "content-type": "~1.0.4", "cookie": "0.7.1", "cookie-signature": "^1.2.1", "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "^2.0.0", "fresh": "2.0.0", "http-errors": "2.0.0", "merge-descriptors": "^2.0.0", "methods": "~1.1.2", "mime-types": "^3.0.0", "on-finished": "2.4.1", "once": "1.4.0", "parseurl": "~1.3.3", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", "router": "^2.0.0", "safe-buffer": "5.2.1", "send": "^1.1.0", "serve-static": "^2.1.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ=="],
179 |
180 | "express-rate-limit": ["express-rate-limit@7.5.0", "", { "peerDependencies": { "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg=="],
181 |
182 | "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
183 |
184 | "fast-diff": ["fast-diff@1.3.0", "", {}, "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="],
185 |
186 | "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
187 |
188 | "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
189 |
190 | "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
191 |
192 | "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
193 |
194 | "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
195 |
196 | "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
197 |
198 | "finalhandler": ["finalhandler@2.1.0", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q=="],
199 |
200 | "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
201 |
202 | "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
203 |
204 | "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="],
205 |
206 | "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
207 |
208 | "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="],
209 |
210 | "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
211 |
212 | "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
213 |
214 | "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
215 |
216 | "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
217 |
218 | "globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
219 |
220 | "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
221 |
222 | "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="],
223 |
224 | "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
225 |
226 | "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
227 |
228 | "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
229 |
230 | "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="],
231 |
232 | "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
233 |
234 | "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
235 |
236 | "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
237 |
238 | "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
239 |
240 | "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
241 |
242 | "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
243 |
244 | "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
245 |
246 | "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
247 |
248 | "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
249 |
250 | "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="],
251 |
252 | "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
253 |
254 | "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": "bin/js-yaml.js" }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
255 |
256 | "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
257 |
258 | "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
259 |
260 | "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
261 |
262 | "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
263 |
264 | "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
265 |
266 | "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
267 |
268 | "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
269 |
270 | "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
271 |
272 | "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="],
273 |
274 | "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="],
275 |
276 | "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
277 |
278 | "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="],
279 |
280 | "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
281 |
282 | "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="],
283 |
284 | "mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="],
285 |
286 | "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
287 |
288 | "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
289 |
290 | "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
291 |
292 | "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="],
293 |
294 | "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
295 |
296 | "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="],
297 |
298 | "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="],
299 |
300 | "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
301 |
302 | "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
303 |
304 | "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
305 |
306 | "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
307 |
308 | "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
309 |
310 | "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="],
311 |
312 | "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
313 |
314 | "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
315 |
316 | "path-to-regexp": ["path-to-regexp@8.2.0", "", {}, "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ=="],
317 |
318 | "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
319 |
320 | "pkce-challenge": ["pkce-challenge@4.1.0", "", {}, "sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ=="],
321 |
322 | "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
323 |
324 | "prettier": ["prettier@3.5.3", "", { "bin": "bin/prettier.cjs" }, "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw=="],
325 |
326 | "prettier-linter-helpers": ["prettier-linter-helpers@1.0.0", "", { "dependencies": { "fast-diff": "^1.1.2" } }, "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w=="],
327 |
328 | "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
329 |
330 | "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
331 |
332 | "qs": ["qs@6.13.0", "", { "dependencies": { "side-channel": "^1.0.6" } }, "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg=="],
333 |
334 | "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
335 |
336 | "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="],
337 |
338 | "raw-body": ["raw-body@3.0.0", "", { "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.6.3", "unpipe": "1.0.0" } }, "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g=="],
339 |
340 | "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
341 |
342 | "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
343 |
344 | "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="],
345 |
346 | "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
347 |
348 | "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
349 |
350 | "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
351 |
352 | "semver": ["semver@7.7.1", "", { "bin": "bin/semver.js" }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="],
353 |
354 | "send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="],
355 |
356 | "serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="],
357 |
358 | "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="],
359 |
360 | "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
361 |
362 | "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
363 |
364 | "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
365 |
366 | "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="],
367 |
368 | "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
369 |
370 | "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="],
371 |
372 | "statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="],
373 |
374 | "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
375 |
376 | "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
377 |
378 | "synckit": ["synckit@0.10.3", "", { "dependencies": { "@pkgr/core": "^0.2.0", "tslib": "^2.8.1" } }, "sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ=="],
379 |
380 | "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
381 |
382 | "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="],
383 |
384 | "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="],
385 |
386 | "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
387 |
388 | "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
389 |
390 | "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="],
391 |
392 | "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="],
393 |
394 | "typescript-eslint": ["typescript-eslint@8.28.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.28.0", "@typescript-eslint/parser": "8.28.0", "@typescript-eslint/utils": "8.28.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-jfZtxJoHm59bvoCMYCe2BM0/baMswRhMmYhy+w6VfcyHrjxZ0OJe0tGasydCpIpA+A/WIJhTyZfb3EtwNC/kHQ=="],
395 |
396 | "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
397 |
398 | "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="],
399 |
400 | "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
401 |
402 | "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="],
403 |
404 | "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="],
405 |
406 | "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
407 |
408 | "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
409 |
410 | "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
411 |
412 | "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
413 |
414 | "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="],
415 |
416 | "zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="],
417 |
418 | "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
419 |
420 | "@eslint/config-array/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
421 |
422 | "@eslint/eslintrc/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
423 |
424 | "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="],
425 |
426 | "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
427 |
428 | "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="],
429 |
430 | "body-parser/qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="],
431 |
432 | "espree/eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="],
433 |
434 | "express/debug": ["debug@4.3.6", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg=="],
435 |
436 | "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
437 |
438 | "@eslint/config-array/minimatch/brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
439 |
440 | "@eslint/eslintrc/minimatch/brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
441 |
442 | "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="],
443 |
444 | "express/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="],
445 | }
446 | }
447 |
--------------------------------------------------------------------------------
/docs/README.ar.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - توثيق أكواد محدث لأي أمر برمجي
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | ## ❌ بدون Context7
6 |
7 | تعتمد النماذج اللغوية الكبيرة على معلومات قديمة أو عامة حول المكتبات التي تستخدمها. مما يؤدي إلى:
8 |
9 | - ❌ أمثلة أكواد قديمة مبنية على بيانات تدريب مضى عليها وقت طويل
10 | - ❌ واجهات برمجة تطبيقات وهمية غير موجودة
11 | - ❌ إجابات عامة لنسخ قديمة من الحزم
12 |
13 | ## ✅ مع Context7
14 |
15 | يستخرج Context7 MCP التوثيق والأمثلة البرمجية المحدثة مباشرة من المصدر — ويضعها في طلبك للنموذج.
16 |
17 | أضف `use context7` إلى طلبك في Cursor:
18 |
19 | ```txt
20 | أنشئ مشروع Next.js بسيط باستخدام app router. use context7
21 | ```
22 |
23 | ```txt
24 | أنشئ سكربت لحذف الصفوف التي تكون فيها المدينة فارغة "" باستخدام بيانات اعتماد PostgreSQL. use context7
25 | ```
26 |
27 | يقوم Context7 بجلب الأمثلة المحدثة والتوثيق المناسب مباشرة إلى السياق.
28 |
29 | * 1️⃣ اكتب طلبك بشكل طبيعي
30 | * 2️⃣ أخبر النموذج بـ `use context7`
31 | * 3️⃣ احصل على أكواد تعمل مباشرة
32 |
33 | لا حاجة للتنقل بين التبويبات، لا واجهات برمجة تطبيقات وهمية، لا أكواد قديمة.
34 |
35 | ## 🛠️ البدء
36 |
37 | ### المتطلبات
38 |
39 | * Node.js إصدار 18.0.0 أو أعلى
40 | * Cursor، Windsurf، Claude Desktop أو أي عميل MCP آخر
41 |
42 | ### التثبيت عبر Smithery
43 |
44 | لتثبيت Context7 MCP Server تلقائيًا لـ Claude Desktop:
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### التثبيت في Cursor
51 |
52 | اذهب إلى: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
53 |
54 | أو أضف هذا إلى ملف `~/.cursor/mcp.json`:
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp@latest"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 | ### التثبيت باستخدام Bun
68 |
69 | ```json
70 | {
71 | "mcpServers": {
72 | "context7": {
73 | "command": "bunx",
74 | "args": ["-y", "@upstash/context7-mcp@latest"]
75 | }
76 | }
77 | }
78 | ```
79 |
80 | ### التثبيت باستخدام Deno
81 |
82 | ```json
83 | {
84 | "mcpServers": {
85 | "context7": {
86 | "command": "deno",
87 | "args": ["run", "--allow-env", "--allow-net", "npm:@upstash/context7-mcp"]
88 | }
89 | }
90 | }
91 | ```
92 |
93 | ### التثبيت في Windsurf
94 |
95 | ```json
96 | {
97 | "mcpServers": {
98 | "context7": {
99 | "command": "npx",
100 | "args": ["-y", "@upstash/context7-mcp@latest"]
101 | }
102 | }
103 | }
104 | ```
105 |
106 | ### التثبيت في VS Code
107 |
108 | ```json
109 | {
110 | "servers": {
111 | "Context7": {
112 | "type": "stdio",
113 | "command": "npx",
114 | "args": ["-y", "@upstash/context7-mcp@latest"]
115 | }
116 | }
117 | }
118 | ```
119 |
120 | ### التثبيت في Zed
121 |
122 | ```json
123 | {
124 | "context_servers": {
125 | "Context7": {
126 | "command": {
127 | "path": "npx",
128 | "args": ["-y", "@upstash/context7-mcp@latest"]
129 | },
130 | "settings": {}
131 | }
132 | }
133 | }
134 | ```
135 |
136 | ### التثبيت في Claude Code
137 |
138 | ```sh
139 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
140 | ```
141 |
142 | ### التثبيت في Claude Desktop
143 |
144 | ```json
145 | {
146 | "mcpServers": {
147 | "Context7": {
148 | "command": "npx",
149 | "args": ["-y", "@upstash/context7-mcp@latest"]
150 | }
151 | }
152 | }
153 | ```
154 |
155 | ### التثبيت في BoltAI
156 |
157 | ```json
158 | {
159 | "mcpServers": {
160 | "context7": {
161 | "command": "npx",
162 | "args": ["-y", "@upstash/context7-mcp@latest"]
163 | }
164 | }
165 | }
166 | ```
167 |
168 | ### باستخدام Docker
169 |
170 | **Dockerfile:**
171 |
172 | ```Dockerfile
173 | FROM node:18-alpine
174 | WORKDIR /app
175 | RUN npm install -g @upstash/context7-mcp@latest
176 | CMD ["context7-mcp"]
177 | ```
178 |
179 | **بناء الصورة:**
180 |
181 | ```bash
182 | docker build -t context7-mcp .
183 | ```
184 |
185 | **التهيئة داخل العميل:**
186 |
187 | ```json
188 | {
189 | "mcpServers": {
190 | "Context7": {
191 | "command": "docker",
192 | "args": ["run", "-i", "--rm", "context7-mcp"],
193 | "transportType": "stdio"
194 | }
195 | }
196 | }
197 | ```
198 |
199 | ### التثبيت في Windows
200 |
201 | ```json
202 | {
203 | "mcpServers": {
204 | "github.com/upstash/context7-mcp": {
205 | "command": "cmd",
206 | "args": [
207 | "/c",
208 | "npx",
209 | "-y",
210 | "@upstash/context7-mcp@latest"
211 | ],
212 | "disabled": false,
213 | "autoApprove": []
214 | }
215 | }
216 | }
217 | ```
218 |
219 | ### المتغيرات البيئية
220 |
221 | ```json
222 | {
223 | "mcpServers": {
224 | "context7": {
225 | "command": "npx",
226 | "args": ["-y", "@upstash/context7-mcp@latest"],
227 | "env": {
228 | "DEFAULT_MINIMUM_TOKENS": "10000"
229 | }
230 | }
231 | }
232 | }
233 | ```
234 |
235 | ### الأدوات المتوفرة
236 |
237 | * `resolve-library-id`: يحول اسم مكتبة عام إلى معرف متوافق مع Context7.
238 | * `get-library-docs`: يستخرج التوثيق حسب المعرف.
239 |
240 | * `context7CompatibleLibraryID`: مطلوب
241 | * `topic`: موضوع معين مثل "routing"
242 | * `tokens`: الحد الأعلى لعدد الرموز
243 |
244 | ## التطوير
245 |
246 | ```bash
247 | bun i
248 | bun run build
249 | ```
250 |
251 | **التهيئة المحلية:**
252 |
253 | ```json
254 | {
255 | "mcpServers": {
256 | "context7": {
257 | "command": "npx",
258 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
259 | }
260 | }
261 | }
262 | ```
263 |
264 | **الاختبار باستخدام MCP Inspector:**
265 |
266 | ```bash
267 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
268 | ```
269 |
270 | ## استكشاف الأخطاء
271 |
272 | ### ERR\_MODULE\_NOT\_FOUND
273 |
274 | استخدم `bunx` بدلاً من `npx`.
275 |
276 | ```json
277 | {
278 | "mcpServers": {
279 | "context7": {
280 | "command": "bunx",
281 | "args": ["-y", "@upstash/context7-mcp@latest"]
282 | }
283 | }
284 | }
285 | ```
286 |
287 | ### مشاكل في ESM
288 |
289 | جرّب إضافة:
290 |
291 | ```json
292 | {
293 | "command": "npx",
294 | "args": [
295 | "-y",
296 | "--node-options=--experimental-vm-modules",
297 | "@upstash/context7-mcp@1.0.6"
298 | ]
299 | }
300 | ```
301 |
302 | ### أخطاء عميل MCP
303 |
304 | 1. أزل `@latest`
305 | 2. جرّب `bunx`
306 | 3. جرّب `deno`
307 | 4. تأكد أنك تستخدم Node v18 أو أحدث
308 |
309 | ## إخلاء مسؤولية
310 |
311 | المشاريع المدرجة في Context7 مساهم بها من المجتمع، ولا يمكن ضمان دقتها أو أمانها بشكل كامل. الرجاء الإبلاغ عن أي محتوى مريب باستخدام زر "الإبلاغ".
312 |
313 | ## Context7 في الإعلام
314 |
315 | * [Better Stack: "أداة مجانية تجعل Cursor أذكى 10x"](https://youtu.be/52FC3qObp9E)
316 | * [Cole Medin: "أفضل MCP Server لمساعدين الذكاء الاصطناعي البرمجيين"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
317 | * [Context7 + SequentialThinking: هل هذا AGI؟](https://www.youtube.com/watch?v=-ggvzyLpK6o)
318 | * [تحديث جديد من Context7 MCP](https://www.youtube.com/watch?v=CTZm6fBYisc)
319 | * [إعداد Context7 في VS Code](https://www.youtube.com/watch?v=-ls0D-rtET4)
320 | * [Context7: MCP جديد سيغير البرمجة](https://www.youtube.com/watch?v=PS-2Azb-C3M)
321 | * [Cline & RooCode + Context7: قوة مضاعفة](https://www.youtube.com/watch?v=qZfENAPMnyo)
322 | * [أفضل 5 MCP Servers لتجربة برمجة ساحرة](https://www.youtube.com/watch?v=LqTQi8qexJM)
323 |
324 | ## سجل النجوم
325 |
326 | [](https://www.star-history.com/#upstash/context7&Date)
327 |
328 | ## الترخيص
329 |
330 | MIT
331 |
--------------------------------------------------------------------------------
/docs/README.de.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Aktuelle Dokumentation für jeden Prompt
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | ## ❌ Ohne Context7
6 |
7 | KI-Sprachmodelle (LLMs) greifen auf veraltete oder allgemeine Informationen über die von dir verwendeten Bibliotheken zurück. Das Ergebnis:
8 |
9 | - ❌ Codebeispiele sind veraltet und basieren auf Trainingsdaten, die Jahre alt sind
10 | - ❌ Halluzinierte APIs, die gar nicht existieren
11 | - ❌ Generische Antworten für alte Paketversionen
12 |
13 | ## ✅ Mit Context7
14 |
15 | Context7 MCP holt aktuelle, versionsspezifische Dokumentationen und Codebeispiele direkt aus der Quelle und fügt sie in deinen Prompt ein.
16 |
17 | Füge `use context7` zu deinem Prompt in Cursor hinzu:
18 |
19 | ```txt
20 | Erstelle ein einfaches Next.js-Projekt mit dem App Router. use context7
21 | ```
22 |
23 | ```txt
24 | Erstelle ein Skript zum Löschen der Zeilen, in denen die Stadt "" ist, mit PostgreSQL-Anmeldedaten. use context7
25 | ```
26 |
27 | Context7 holt aktuelle Codebeispiele und Dokumentationen direkt in den Kontext deines LLMs.
28 |
29 | - 1️⃣ Schreibe deinen Prompt auf natürliche Weise
30 | - 2️⃣ Weise das LLM an, context7 zu verwenden, mit `use context7`
31 | - 3️⃣ Erhalte funktionierende Codeantworten
32 |
33 | Kein Tab-Switching, keine halluzinierten APIs, die nicht existieren, keine veralteten Code-Generierungen.
34 |
35 | ## 🛠️ Erste Schritte
36 |
37 | ### Anforderungen
38 |
39 | - Node.js >= v18.0.0
40 | - Cursor, Windsurf, Claude Desktop oder ein anderer MCP-Client
41 |
42 | ### Installation über Smithery
43 |
44 | Um den Context7 MCP Server für Claude Desktop automatisch über [Smithery](https://smithery.ai/server/@upstash/context7-mcp) zu installieren:
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### Installation in Cursor
51 |
52 | Gehe zu: `Einstellungen` -> `Cursor-Einstellungen` -> `MCP` -> `Neuen globalen MCP-Server hinzufügen`
53 |
54 | Der empfohlene Ansatz ist die folgende Konfiguration in deine Cursor-Datei `~/.cursor/mcp.json` einzufügen. Siehe die [Cursor MCP Dokumentation](https://docs.cursor.com/context/model-context-protocol) für mehr Informationen.
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp@latest"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 |
68 | Alternative: Bun verwenden
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "command": "bunx",
75 | "args": ["-y", "@upstash/context7-mcp@latest"]
76 | }
77 | }
78 | }
79 | ```
80 |
81 |
82 |
83 |
84 | Alternative: Deno verwenden
85 |
86 | ```json
87 | {
88 | "mcpServers": {
89 | "context7": {
90 | "command": "deno",
91 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
92 | }
93 | }
94 | }
95 | ```
96 |
97 |
98 |
99 | ### Installation in Windsurf
100 |
101 | Füge dies zu deiner Windsurf MCP-Konfigurationsdatei hinzu. Siehe die [Windsurf MCP Dokumentation](https://docs.windsurf.com/windsurf/mcp) für mehr Informationen.
102 |
103 | ```json
104 | {
105 | "mcpServers": {
106 | "context7": {
107 | "command": "npx",
108 | "args": ["-y", "@upstash/context7-mcp@latest"]
109 | }
110 | }
111 | }
112 | ```
113 |
114 | ### Installation in VS Code
115 |
116 | [
](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)
117 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
118 |
119 | Füge dies zu deiner VS Code MCP-Konfigurationsdatei hinzu. Siehe die [VS Code MCP Dokumentation](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) für mehr Informationen.
120 |
121 | ```json
122 | {
123 | "servers": {
124 | "Context7": {
125 | "type": "stdio",
126 | "command": "npx",
127 | "args": ["-y", "@upstash/context7-mcp@latest"]
128 | }
129 | }
130 | }
131 | ```
132 |
133 | ### Installation in Zed
134 |
135 | Es kann über [Zed Extensions](https://zed.dev/extensions?query=Context7) installiert werden oder du kannst dies zu deiner Zed `settings.json` hinzufügen. Siehe die [Zed Context Server Dokumentation](https://zed.dev/docs/assistant/context-servers) für mehr Informationen.
136 |
137 | ```json
138 | {
139 | "context_servers": {
140 | "Context7": {
141 | "command": {
142 | "path": "npx",
143 | "args": ["-y", "@upstash/context7-mcp@latest"]
144 | },
145 | "settings": {}
146 | }
147 | }
148 | }
149 | ```
150 |
151 | ### Installation in Claude Code
152 |
153 | Führe diesen Befehl aus. Siehe die [Claude Code MCP Dokumentation](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) für mehr Informationen.
154 |
155 | ```sh
156 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
157 | ```
158 |
159 | ### Installation in Claude Desktop
160 |
161 | Füge dies zu deiner Claude Desktop `claude_desktop_config.json` Datei hinzu. Siehe die [Claude Desktop MCP Dokumentation](https://modelcontextprotocol.io/quickstart/user) für mehr Informationen.
162 |
163 | ```json
164 | {
165 | "mcpServers": {
166 | "Context7": {
167 | "command": "npx",
168 | "args": ["-y", "@upstash/context7-mcp@latest"]
169 | }
170 | }
171 | }
172 | ```
173 |
174 | ### Docker verwenden
175 |
176 | Wenn du den MCP-Server lieber in einem Docker-Container ausführen möchtest:
177 |
178 | 1. **Docker-Image erstellen:**
179 |
180 | Erstelle zunächst ein `Dockerfile` im Projekt-Root (oder an einem Ort deiner Wahl):
181 |
182 |
183 | Klicke, um den Dockerfile-Inhalt zu sehen
184 |
185 | ```Dockerfile
186 | FROM node:18-alpine
187 |
188 | WORKDIR /app
189 |
190 | # Installiere die neueste Version global
191 | RUN npm install -g @upstash/context7-mcp@latest
192 |
193 | # Port freigeben, falls nötig (optional, abhängig von der MCP-Client-Interaktion)
194 | # EXPOSE 3000
195 |
196 | # Standardbefehl zum Ausführen des Servers
197 | CMD ["context7-mcp"]
198 | ```
199 |
200 |
201 |
202 | Baue dann das Image mit einem Tag (z.B. `context7-mcp`). **Stelle sicher, dass Docker Desktop (oder der Docker-Daemon) läuft.** Führe den folgenden Befehl in dem Verzeichnis aus, in dem du das `Dockerfile` gespeichert hast:
203 |
204 | ```bash
205 | docker build -t context7-mcp .
206 | ```
207 |
208 | 2. **Konfiguriere deinen MCP-Client:**
209 |
210 | Aktualisiere die Konfiguration deines MCP-Clients, um den Docker-Befehl zu verwenden.
211 |
212 | *Beispiel für eine cline_mcp_settings.json:*
213 |
214 | ```json
215 | {
216 | "mcpServers": {
217 | "Сontext7": {
218 | "autoApprove": [],
219 | "disabled": false,
220 | "timeout": 60,
221 | "command": "docker",
222 | "args": ["run", "-i", "--rm", "context7-mcp"],
223 | "transportType": "stdio"
224 | }
225 | }
226 | }
227 | ```
228 | *Hinweis: Dies ist eine Beispielkonfiguration. Bitte beziehe dich auf die spezifischen Beispiele für deinen MCP-Client (wie Cursor, VS Code usw.), die weiter oben in dieser README beschrieben sind, um die Struktur anzupassen (z.B. `mcpServers` vs `servers`). Stelle außerdem sicher, dass der Bildname in `args` mit dem beim `docker build`-Befehl verwendeten Tag übereinstimmt.*
229 |
230 | ### Verfügbare Tools
231 |
232 | - `resolve-library-id`: Löst einen allgemeinen Bibliotheksnamen in eine Context7-kompatible Bibliotheks-ID auf.
233 | - `libraryName` (erforderlich)
234 | - `get-library-docs`: Ruft die Dokumentation für eine Bibliothek mit einer Context7-kompatiblen Bibliotheks-ID ab.
235 | - `context7CompatibleLibraryID` (erforderlich)
236 | - `topic` (optional): Fokussiert die Dokumentation auf ein bestimmtes Thema (z.B. "routing", "hooks")
237 | - `tokens` (optional, Standard 10000): Maximale Anzahl von zurückzugebenden Tokens. Werte unter 10000 werden automatisch auf 10000 erhöht.
238 |
239 | ## Entwicklung
240 |
241 | Klone das Projekt und installiere die Abhängigkeiten:
242 |
243 | ```bash
244 | bun i
245 | ```
246 |
247 | Bauen:
248 |
249 | ```bash
250 | bun run build
251 | ```
252 |
253 | ### Lokales Konfigurationsbeispiel
254 |
255 | ```json
256 | {
257 | "mcpServers": {
258 | "context7": {
259 | "command": "npx",
260 | "args": ["tsx", "/pfad/zum/ordner/context7-mcp/src/index.ts"]
261 | }
262 | }
263 | }
264 | ```
265 |
266 | ### Testen mit MCP Inspector
267 |
268 | ```bash
269 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
270 | ```
271 |
272 | ## Fehlerbehebung
273 |
274 | ### ERR_MODULE_NOT_FOUND
275 |
276 | Wenn du diesen Fehler siehst, versuche `bunx` anstelle von `npx` zu verwenden.
277 |
278 | ```json
279 | {
280 | "mcpServers": {
281 | "context7": {
282 | "command": "bunx",
283 | "args": ["-y", "@upstash/context7-mcp@latest"]
284 | }
285 | }
286 | }
287 | ```
288 |
289 | Dies löst häufig Probleme bei der Modulauflösung, besonders in Umgebungen, in denen `npx` Pakete nicht ordnungsgemäß installiert oder auflöst.
290 |
291 | ### ESM-Auflösungsprobleme
292 |
293 | Wenn du einen Fehler wie `Error: Cannot find module 'uriTemplate.js'` bekommst, versuche mit dem Flag `--experimental-vm-modules` auszuführen:
294 |
295 | ```json
296 | {
297 | "mcpServers": {
298 | "context7": {
299 | "command": "npx",
300 | "args": [
301 | "-y",
302 | "--node-options=--experimental-vm-modules",
303 | "@upstash/context7-mcp@1.0.6"
304 | ]
305 | }
306 | }
307 | }
308 | ```
309 |
310 | ### MCP-Client-Fehler
311 |
312 | 1. Versuche, `@latest` aus dem Paketnamen zu entfernen.
313 |
314 | 2. Versuche, `bunx` als Alternative zu verwenden.
315 |
316 | 3. Versuche, `deno` als Alternative zu verwenden.
317 |
318 | 4. Stelle sicher, dass du Node v18 oder höher verwendest, um native Fetch-Unterstützung mit `npx` zu haben.
319 |
320 | ## Haftungsausschluss
321 | Context7-Projekte werden von der Community beigetragen, und obwohl wir uns bemühen, eine hohe Qualität aufrechtzuerhalten, können wir die Genauigkeit, Vollständigkeit oder Sicherheit aller Bibliotheksdokumentationen nicht garantieren. Die in Context7 aufgeführten Projekte werden von ihren jeweiligen Eigentümern entwickelt und gepflegt, nicht von Context7. Wenn du auf verdächtige, unangemessene oder potenziell schädliche Inhalte stößt, verwende bitte die Schaltfläche "Melden" auf der Projektseite, um uns sofort zu benachrichtigen. Wir nehmen alle Berichte ernst und werden gemeldete Inhalte umgehend überprüfen, um die Integrität und Sicherheit unserer Plattform zu gewährleisten. Durch die Nutzung von Context7 erkennst du an, dass du dies nach eigenem Ermessen und auf eigenes Risiko tust.
322 |
323 | ## Context7 in den Medien
324 |
325 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
326 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
327 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
328 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
329 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
330 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
331 |
332 | ## Verlauf der Sterne
333 |
334 | [](https://www.star-history.com/#upstash/context7&Date)
335 |
336 | ## Lizenz
337 |
338 | MIT
--------------------------------------------------------------------------------
/docs/README.es.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Documentación Actualizada Para Cualquier Prompt
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
4 |
5 | ## ❌ Sin Context7
6 |
7 | Los LLMs dependen de información desactualizada o genérica sobre las bibliotecas que utilizas. Obtienes:
8 |
9 | - ❌ Ejemplos de código desactualizados y basados en datos de entrenamiento de hace un año
10 | - ❌ APIs inventadas que ni siquiera existen
11 | - ❌ Respuestas genéricas para versiones antiguas de paquetes
12 |
13 | ## ✅ Con Context7
14 |
15 | El Context7 MCP obtiene documentación y ejemplos de código actualizados y específicos de la versión directamente desde la fuente, y los coloca directamente en tu prompt.
16 |
17 | Añade `use context7` a tu prompt en Cursor:
18 |
19 | ```txt
20 | Crea un proyecto básico de Next.js con app router. use context7
21 | ```
22 |
23 | ```txt
24 | Crea un script para eliminar las filas donde la ciudad es "" dadas las credenciales de PostgreSQL. use context7
25 | ```
26 |
27 | Context7 obtiene ejemplos de código y documentación actualizados directamente en el contexto de tu LLM.
28 |
29 | - 1️⃣ Escribe tu prompt de forma natural
30 | - 2️⃣ Dile al LLM que `use context7`
31 | - 3️⃣ Obtén respuestas de código que funcionan
32 |
33 | Sin cambiar de pestaña, sin APIs inventadas que no existen, sin generaciones de código desactualizadas.
34 |
35 | ## 🛠️ Empezando
36 |
37 | ### Requisitos
38 |
39 | - Node.js >= v18.0.0
40 | - Cursor, Windsurf, Claude Desktop u otro Cliente MCP
41 |
42 | ### Instalando vía Smithery
43 |
44 | Para instalar Context7 MCP Server para Claude Desktop automáticamente vía [Smithery](https://smithery.ai/server/@upstash/context7-mcp):
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### Instalar en Cursor
51 |
52 | Ve a: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
53 |
54 | Pegar la siguiente configuración en tu archivo `~/.cursor/mcp.json` de Cursor es el metodo recomendado. Consulta la [documentación de MCP de Cursor](https://docs.cursor.com/context/model-context-protocol) para más información.
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp@latest"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 |
68 | Alternativa: Usar Bun
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "command": "bunx",
75 | "args": ["-y", "@upstash/context7-mcp@latest"]
76 | }
77 | }
78 | }
79 | ```
80 |
81 |
82 |
83 |
84 | Alternativa: Usar Deno
85 |
86 | ```json
87 | {
88 | "mcpServers": {
89 | "context7": {
90 | "command": "deno",
91 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
92 | }
93 | }
94 | }
95 | ```
96 |
97 |
98 |
99 | ### Instalar en Windsurf
100 |
101 | Añade esto a tu archivo de configuración MCP de Windsurf. Consulta la [documentación de MCP de Windsurf](https://docs.windsurf.com/windsurf/mcp) para más información.
102 |
103 | ```json
104 | {
105 | "mcpServers": {
106 | "context7": {
107 | "command": "npx",
108 | "args": ["-y", "@upstash/context7-mcp@latest"]
109 | }
110 | }
111 | }
112 | ```
113 |
114 | ### Instalar en VS Code
115 |
116 | [
](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
117 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
118 |
119 | Añade esto a tu archivo de configuración MCP de VS Code. Consulta la [documentación de VS Code MCP](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) para más información.
120 |
121 | ```json
122 | {
123 | "servers": {
124 | "Context7": {
125 | "type": "stdio",
126 | "command": "npx",
127 | "args": ["-y", "@upstash/context7-mcp@latest"]
128 | }
129 | }
130 | }
131 | ```
132 |
133 | ### Instalar en Claude Code
134 |
135 | Ejecuta este comando. Consulta la [documentación de MCP de Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) para más información.
136 |
137 | ```sh
138 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
139 | ```
140 |
141 | ### Instalar en Claude Desktop
142 |
143 | Añade esto a tu archivo `claude_desktop_config.json` de Claude Desktop. Consulta la [documentación de MCP de Claude Desktop](https://modelcontextprotocol.io/quickstart/user) para más información.
144 |
145 | ```json
146 | {
147 | "mcpServers": {
148 | "Context7": {
149 | "command": "npx",
150 | "args": ["-y", "@upstash/context7-mcp@latest"]
151 | }
152 | }
153 | }
154 | ```
155 |
156 | ### Herramientas Disponibles
157 |
158 | - `resolve-library-id`: Resuelve un nombre de una biblioteca general en un ID de biblioteca compatible con Context7.
159 | - `libraryName` (requerido)
160 | - `get-library-docs`: Obtiene documentación para una biblioteca utilizando un ID de biblioteca compatible con Context7.
161 | - `context7CompatibleLibraryID` (requerido)
162 | - `topic` (opcional): Enfoca la documentación en un tema específico (p. ej., "routing", "hooks")
163 | - `tokens` (opcional, por defecto 10000): Número máximo de tokens a devolver. Los valores inferiores a 10000 se aumentan automáticamente a 10000.
164 |
165 | ## Desarrollo
166 |
167 | Clona el proyecto e instala las dependencias:
168 |
169 | ```bash
170 | bun i
171 | ```
172 |
173 | Compila:
174 |
175 | ```bash
176 | bun run build
177 | ```
178 |
179 | ### Ejemplo de Configuración Local
180 |
181 | ```json
182 | {
183 | "mcpServers": {
184 | "context7": {
185 | "command": "npx",
186 | "args": ["tsx", "/ruta/a/la/carpeta/context7-mcp/src/index.ts"]
187 | }
188 | }
189 | }
190 | ```
191 |
192 | ### Probando con MCP Inspector
193 |
194 | ```bash
195 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
196 | ```
197 |
198 | ## Solución de Problemas
199 |
200 | ### ERR_MODULE_NOT_FOUND
201 |
202 | Si ves este error, intenta usar `bunx` en lugar de `npx`.
203 |
204 | ```json
205 | {
206 | "mcpServers": {
207 | "context7": {
208 | "command": "bunx",
209 | "args": ["-y", "@upstash/context7-mcp@latest"]
210 | }
211 | }
212 | }
213 | ```
214 |
215 | Esto a menudo resuelve problemas de resolución de módulos, especialmente en entornos donde `npx` no instala o resuelve paquetes correctamente.
216 |
217 | ### Errores del Cliente MCP
218 |
219 | 1. Intenta eliminar `@latest` del nombre del paquete.
220 |
221 | 2. Intenta usar `bunx` como alternativa.
222 |
223 | 3. Intenta usar `deno` como alternativa.
224 |
225 | ## Context7 en los Medios
226 |
227 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
228 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
229 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
230 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
231 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
232 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
233 |
234 | ## Historial de Estrellas
235 |
236 | [](https://www.star-history.com/#upstash/context7&Date)
237 |
238 | ## Licencia
239 |
240 | MIT
241 |
--------------------------------------------------------------------------------
/docs/README.fr.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Documentation à jour pour vos prompts
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | ## ❌ Sans Context7
6 |
7 | Les LLMs s’appuient sur des informations obsolètes ou génériques concernant les bibliothèques que vous utilisez. Vous obtenez :
8 |
9 | - ❌ Des exemples de code obsolètes, basés sur des données d’entraînement vieilles d’un an
10 | - ❌ Des APIs inventées qui n’existent même pas
11 | - ❌ Des réponses génériques pour d’anciennes versions de packages
12 |
13 | ## ✅ Avec Context7
14 |
15 | Context7 MCP récupère la documentation et les exemples de code à jour, spécifiques à la version, directement à la source — et les place dans votre prompt.
16 |
17 | Ajoutez `use context7` à votre prompt dans Cursor :
18 |
19 | ```txt
20 | Crée un projet Next.js basique avec app router. use context7
21 | ```
22 |
23 | ```txt
24 | Crée un script pour supprimer les lignes où la ville est "" avec des identifiants PostgreSQL. use context7
25 | ```
26 |
27 | Context7 apporte des exemples de code et de la documentation à jour directement dans le contexte de votre LLM.
28 |
29 | - 1️⃣ Rédigez votre prompt naturellement
30 | - 2️⃣ Dites au LLM `use context7`
31 | - 3️⃣ Obtenez des réponses de code qui fonctionnent
32 |
33 | Plus besoin de changer d’onglet, plus d’APIs inventées, plus de code obsolète.
34 |
35 | ## 🛠️ Démarrage
36 |
37 | ### Prérequis
38 |
39 | - Node.js >= v18.0.0
40 | - Cursor, Windsurf, Claude Desktop ou un autre client MCP
41 |
42 | ### Installation via Smithery
43 |
44 | Pour installer Context7 MCP Server pour Claude Desktop automatiquement via [Smithery](https://smithery.ai/server/@upstash/context7-mcp) :
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### Installation dans Cursor
51 |
52 | Allez dans : `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
53 |
54 | La méthode recommandée est de coller la configuration suivante dans votre fichier `~/.cursor/mcp.json`. Voir la [documentation Cursor MCP](https://docs.cursor.com/context/model-context-protocol) pour plus d’informations.
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp@latest"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 |
68 | Alternative : Utiliser Bun
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "command": "bunx",
75 | "args": ["-y", "@upstash/context7-mcp@latest"]
76 | }
77 | }
78 | }
79 | ```
80 |
81 |
82 |
83 |
84 | Alternative : Utiliser Deno
85 |
86 | ```json
87 | {
88 | "mcpServers": {
89 | "context7": {
90 | "command": "deno",
91 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
92 | }
93 | }
94 | }
95 | ```
96 |
97 |
98 |
99 | ### Installation dans Windsurf
100 |
101 | Ajoutez ceci à votre fichier de configuration MCP Windsurf. Voir la [documentation Windsurf MCP](https://docs.windsurf.com/windsurf/mcp) pour plus d’informations.
102 |
103 | ```json
104 | {
105 | "mcpServers": {
106 | "context7": {
107 | "command": "npx",
108 | "args": ["-y", "@upstash/context7-mcp@latest"]
109 | }
110 | }
111 | }
112 | ```
113 |
114 | ### Installation dans VS Code
115 |
116 | [
](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)
117 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
118 |
119 | Ajoutez ceci à votre fichier de configuration MCP VS Code. Voir la [documentation VS Code MCP](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) pour plus d'informations.
120 |
121 | ```json
122 | {
123 | "servers": {
124 | "Context7": {
125 | "type": "stdio",
126 | "command": "npx",
127 | "args": ["-y", "@upstash/context7-mcp@latest"]
128 | }
129 | }
130 | }
131 | ```
132 |
133 | ### Installation dans Zed
134 |
135 | Peut être installé via [Zed Extensions](https://zed.dev/extensions?query=Context7) ou en ajoutant ceci à votre `settings.json` Zed. Voir la [documentation Zed Context Server](https://zed.dev/docs/assistant/context-servers).
136 |
137 | ```json
138 | {
139 | "context_servers": {
140 | "Context7": {
141 | "command": {
142 | "path": "npx",
143 | "args": ["-y", "@upstash/context7-mcp@latest"]
144 | },
145 | "settings": {}
146 | }
147 | }
148 | }
149 | ```
150 |
151 | ### Installation dans Claude Code
152 |
153 | Exécutez cette commande. Voir la [documentation Claude Code MCP](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp).
154 |
155 | ```sh
156 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
157 | ```
158 |
159 | ### Installation dans Claude Desktop
160 |
161 | Ajoutez ceci à votre fichier `claude_desktop_config.json`. Voir la [documentation Claude Desktop MCP](https://modelcontextprotocol.io/quickstart/user).
162 |
163 | ```json
164 | {
165 | "mcpServers": {
166 | "Context7": {
167 | "command": "npx",
168 | "args": ["-y", "@upstash/context7-mcp@latest"]
169 | }
170 | }
171 | }
172 | ```
173 |
174 | ### Installation dans BoltAI
175 |
176 | Ouvrez la page "Settings" de l'application, naviguez jusqu'à "Plugins", et entrez le JSON suivant :
177 |
178 | ```json
179 | {
180 | "mcpServers": {
181 | "context7": {
182 | "command": "npx",
183 | "args": ["-y", "@upstash/context7-mcp@latest"]
184 | }
185 | }
186 | }
187 | ```
188 |
189 | Une fois enregistré, saisissez dans le chat `get-library-docs` suivi de votre ID de documentation Context7 (par exemple, `get-library-docs /nuxt/ui`). Plus d'informations sont disponibles sur le [site de documentation BoltAI](https://docs.boltai.com/docs/plugins/mcp-servers). Pour BoltAI sur iOS, [consultez ce guide](https://docs.boltai.com/docs/boltai-mobile/mcp-servers).
190 |
191 | ### Utilisation avec Docker
192 |
193 | Si vous préférez exécuter le serveur MCP dans un conteneur Docker :
194 |
195 | 1. **Construisez l’image Docker :**
196 |
197 | Créez un `Dockerfile` à la racine du projet (ou ailleurs) :
198 |
199 |
200 | Voir le contenu du Dockerfile
201 |
202 | ```Dockerfile
203 | FROM node:18-alpine
204 |
205 | WORKDIR /app
206 |
207 | # Installer la dernière version en global
208 | RUN npm install -g @upstash/context7-mcp@latest
209 |
210 | # Exposer le port par défaut si besoin (optionnel)
211 | # EXPOSE 3000
212 |
213 | # Commande par défaut
214 | CMD ["context7-mcp"]
215 | ```
216 |
217 |
218 |
219 | Puis, construisez l’image :
220 |
221 | ```bash
222 | docker build -t context7-mcp .
223 | ```
224 |
225 | 2. **Configurez votre client MCP :**
226 |
227 | Mettez à jour la configuration de votre client MCP pour utiliser la commande Docker.
228 |
229 | *Exemple pour un fichier cline_mcp_settings.json :*
230 |
231 | ```json
232 | {
233 | "mcpServers": {
234 | "Сontext7": {
235 | "autoApprove": [],
236 | "disabled": false,
237 | "timeout": 60,
238 | "command": "docker",
239 | "args": ["run", "-i", "--rm", "context7-mcp"],
240 | "transportType": "stdio"
241 | }
242 | }
243 | }
244 | ```
245 | *Note : Ceci est un exemple. Adaptez la structure selon votre client MCP (voir plus haut dans ce README). Assurez-vous que le nom de l’image dans `args` correspond au tag utilisé lors du build.*
246 |
247 | ### Installation sous Windows
248 |
249 | La configuration sous Windows est légèrement différente par rapport à Linux ou macOS (*`Cline` est utilisé dans l'exemple*). Le même principe s'applique à d'autres éditeurs; référez-vous à la configuration de `command` et `args`.
250 |
251 | ```json
252 | {
253 | "mcpServers": {
254 | "github.com/upstash/context7-mcp": {
255 | "command": "cmd",
256 | "args": [
257 | "/c",
258 | "npx",
259 | "-y",
260 | "@upstash/context7-mcp@latest"
261 | ],
262 | "disabled": false,
263 | "autoApprove": []
264 | }
265 | }
266 | }
267 | ```
268 |
269 | ### Variables d'environnement
270 |
271 | - `DEFAULT_MINIMUM_TOKENS`: Définissez le nombre minimum de tokens pour la récupération de documentation (par défaut: 10000).
272 |
273 | Exemples:
274 |
275 | ```json
276 | {
277 | "mcpServers": {
278 | "context7": {
279 | "command": "npx",
280 | "args": ["-y", "@upstash/context7-mcp@latest"],
281 | "env": {
282 | "DEFAULT_MINIMUM_TOKENS": "10000"
283 | }
284 | }
285 | }
286 | }
287 | ```
288 |
289 | ### Outils disponibles
290 |
291 | - `resolve-library-id` : Résout un nom de bibliothèque général en un ID compatible Context7.
292 | - `libraryName` (obligatoire)
293 | - `get-library-docs` : Récupère la documentation d’une bibliothèque via un ID Context7.
294 | - `context7CompatibleLibraryID` (obligatoire)
295 | - `topic` (optionnel) : Focaliser la doc sur un sujet précis (ex : "routing", "hooks")
296 | - `tokens` (optionnel, par défaut 10000) : Nombre max de tokens à retourner. Les valeurs < 10000 sont automatiquement augmentées à 10000.
297 |
298 | ## Développement
299 |
300 | Clonez le projet et installez les dépendances :
301 |
302 | ```bash
303 | bun i
304 | ```
305 |
306 | Build :
307 |
308 | ```bash
309 | bun run build
310 | ```
311 |
312 | ### Exemple de configuration locale
313 |
314 | ```json
315 | {
316 | "mcpServers": {
317 | "context7": {
318 | "command": "npx",
319 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
320 | }
321 | }
322 | }
323 | ```
324 |
325 | ### Tester avec MCP Inspector
326 |
327 | ```bash
328 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
329 | ```
330 |
331 | ## Dépannage
332 |
333 | ### ERR_MODULE_NOT_FOUND
334 |
335 | Si vous voyez cette erreur, essayez d’utiliser `bunx` à la place de `npx`.
336 |
337 | ```json
338 | {
339 | "mcpServers": {
340 | "context7": {
341 | "command": "bunx",
342 | "args": ["-y", "@upstash/context7-mcp@latest"]
343 | }
344 | }
345 | }
346 | ```
347 |
348 | Cela résout souvent les problèmes de résolution de modules, surtout si `npx` n’installe ou ne résout pas correctement les packages.
349 |
350 | ### Problèmes de résolution ESM
351 |
352 | Si vous rencontrez une erreur comme : `Error: Cannot find module 'uriTemplate.js'` essayez d'exécuter avec le drapeau `--experimental-vm-modules` :
353 |
354 | ```json
355 | {
356 | "mcpServers": {
357 | "context7": {
358 | "command": "npx",
359 | "args": [
360 | "-y",
361 | "--node-options=--experimental-vm-modules",
362 | "@upstash/context7-mcp@1.0.6"
363 | ]
364 | }
365 | }
366 | }
367 | ```
368 |
369 | ### Erreurs client MCP
370 |
371 | 1. Essayez de retirer `@latest` du nom du package.
372 | 2. Essayez d'utiliser `bunx` comme alternative.
373 | 3. Essayez d'utiliser `deno` comme alternative.
374 | 4. Assurez-vous d'utiliser Node v18 ou supérieur pour avoir le support natif de fetch avec `npx`.
375 |
376 | ## Clause de non-responsabilité
377 |
378 | Les projets Context7 sont des contributions de la communauté, et bien que nous nous efforcions de maintenir une haute qualité, nous ne pouvons garantir l'exactitude, l'exhaustivité ou la sécurité de toute la documentation des bibliothèques. Les projets listés dans Context7 sont développés et maintenus par leurs propriétaires respectifs, et non par Context7. Si vous rencontrez un contenu suspect, inapproprié ou potentiellement nuisible, veuillez utiliser le bouton "Signaler" sur la page du projet pour nous le faire savoir immédiatement. Nous prenons tous les signalements au sérieux et examinerons rapidement les contenus signalés pour maintenir l'intégrité et la sécurité de notre plateforme. En utilisant Context7, vous reconnaissez que vous le faites à votre propre discrétion et à vos risques et périls.
379 |
380 | ## Context7 dans les médias
381 |
382 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
383 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
384 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
385 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
386 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
387 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
388 | - [AICodeKing: "Context7 + Cline & RooCode: This MCP Server Makes CLINE 100X MORE EFFECTIVE!"](https://www.youtube.com/watch?v=qZfENAPMnyo)
389 | - [Sean Kochel: "5 MCP Servers For Vibe Coding Glory (Just Plug-In & Go)"](https://www.youtube.com/watch?v=LqTQi8qexJM)
390 |
391 | ## Historique des stars
392 |
393 | [](https://www.star-history.com/#upstash/context7&Date)
394 |
395 | ## Licence
396 |
397 | MIT
398 |
--------------------------------------------------------------------------------
/docs/README.id-ID.md:
--------------------------------------------------------------------------------
1 |
2 | # Context7 MCP - Dokumentasi Ter-Update Untuk Setiap Prompt
3 |
4 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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)
5 |
6 | [](./README.zh-CN.md) [](./README.ko.md) [](./README.es.md) [](./README.fr.md) [-purple)](./README.pt-BR.md) [](./README.id-ID.md)
7 |
8 | ## ❌ Tanpa Context7
9 |
10 | LLM mengandalkan informasi yang sudah lama atau umum tentang library yang Anda gunakan, bukan yang terbaru.
11 |
12 | Hasilnya anda akan mendapatkan:
13 | - ❌ Contoh kode sudah usang dan berdasarkan data pelatihan yang sudah lama
14 | - ❌ API yang dikarang yang sebetulnya tidak ada sama sekali
15 | - ❌ Jawaban umum untuk versi paket lama
16 |
17 | ## ✅ Dengan Context7
18 |
19 | Context7 MCP mengambil dokumentasi dan contoh kode terkini, spesifik versi langsung dari sumbernya — dan menempatkannya langsung ke dalam prompt Anda.
20 |
21 | Tambahkan `gunakan context7` ke prompt Anda di Cursor:
22 |
23 | ```txt
24 | Buat proyek Next.js dasar dengan app router. gunakan context7
25 | ```
26 |
27 | ```txt
28 | Buat skrip untuk menghapus baris di mana kota adalah "" berdasarkan kredensial PostgreSQL. gunakan context7
29 | ```
30 |
31 | Context7 mengambil contoh kode dan dokumentasi terkini langsung ke dalam konteks LLM Anda.
32 |
33 | - 1️⃣ Tulis prompt Anda secara natural
34 | - 2️⃣ Beri tahu LLM untuk `use context7`
35 | - 3️⃣ Dapatkan jawaban dengan kode yang berfungsi
36 |
37 | Tidak perlu beralih tab, tidak ada API yang dikarang yang sebetulnya tidak ada sama sekali, tidak akan menghasilkan kode yang usang.
38 |
39 | ## 🛠️ Memulai
40 |
41 | ### Persyaratan
42 |
43 | - Node.js >= v18.0.0
44 | - Cursor, Windsurf, Claude Desktop atau MCP Client lainnya
45 |
46 | ### Instalasi melalui Smithery
47 |
48 | Untuk menginstal Context7 MCP Server untuk Claude Desktop secara otomatis melalui [Smithery](https://smithery.ai/server/@upstash/context7-mcp):
49 |
50 | ```bash
51 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
52 | ```
53 |
54 | ### Instalasi di Cursor
55 |
56 | Buka: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
57 |
58 | Tambahkan konfigurasi berikut ke dalam file Cursor `~/.cursor/mcp.json` Anda adalah pendekatan yang direkomendasikan. Lihat [Dokumentasi Cursor MCP](https://docs.cursor.com/context/model-context-protocol) untuk informasi lebih lanjut.
59 |
60 | ```json
61 | {
62 | "mcpServers": {
63 | "context7": {
64 | "command": "npx",
65 | "args": ["-y", "@upstash/context7-mcp@latest"]
66 | }
67 | }
68 | }
69 | ```
70 |
71 |
72 | Alternatif: Menggunakan Bun
73 |
74 | ```json
75 | {
76 | "mcpServers": {
77 | "context7": {
78 | "command": "bunx",
79 | "args": ["-y", "@upstash/context7-mcp@latest"]
80 | }
81 | }
82 | }
83 | ```
84 |
85 |
86 |
87 |
88 | Alternatif: Menggunakan Deno
89 |
90 | ```json
91 | {
92 | "mcpServers": {
93 | "context7": {
94 | "command": "deno",
95 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
96 | }
97 | }
98 | }
99 | ```
100 |
101 |
102 |
103 | ### Instalasi di Windsurf
104 |
105 | Tambahkan ini ke file konfigurasi MCP Windsurf Anda. Lihat [Dokumentasi Windsurf MCP](https://docs.windsurf.com/windsurf/mcp) untuk informasi lebih lanjut.
106 |
107 | ```json
108 | {
109 | "mcpServers": {
110 | "context7": {
111 | "command": "npx",
112 | "args": ["-y", "@upstash/context7-mcp@latest"]
113 | }
114 | }
115 | }
116 | ```
117 |
118 | ### Instalasi di VS Code
119 |
120 | [
](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)
121 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
122 |
123 | Tambahkan ini ke file konfigurasi MCP VS Code Anda. Lihat [Dokumentasi VS Code MCP](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) untuk informasi lebih lanjut.
124 |
125 | ```json
126 | {
127 | "servers": {
128 | "Context7": {
129 | "type": "stdio",
130 | "command": "npx",
131 | "args": ["-y", "@upstash/context7-mcp@latest"]
132 | }
133 | }
134 | }
135 | ```
136 |
137 | ### Instalasi di Zed
138 |
139 | Dapat diinstal melalui [Ekstensi Zed](https://zed.dev/extensions?query=Context7) atau Anda dapat menambahkan ini ke `settings.json` Zed Anda. Lihat [Dokumentasi Zed Context Server](https://zed.dev/docs/assistant/context-servers) untuk informasi lebih lanjut.
140 |
141 | ```json
142 | {
143 | "context_servers": {
144 | "Context7": {
145 | "command": {
146 | "path": "npx",
147 | "args": ["-y", "@upstash/context7-mcp@latest"]
148 | },
149 | "settings": {}
150 | }
151 | }
152 | }
153 | ```
154 |
155 | ### Instalasi di Claude Code
156 |
157 | Jalankan perintah ini. Lihat [Dokumentasi Claude Code MCP](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) untuk informasi lebih lanjut.
158 |
159 | ```sh
160 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
161 | ```
162 |
163 | ### Instalasi di Claude Desktop
164 |
165 | Tambahkan ini ke file `claude_desktop_config.json` Claude Desktop Anda. Lihat [Dokumentasi Claude Desktop MCP](https://modelcontextprotocol.io/quickstart/user) untuk informasi lebih lanjut.
166 |
167 | ```json
168 | {
169 | "mcpServers": {
170 | "Context7": {
171 | "command": "npx",
172 | "args": ["-y", "@upstash/context7-mcp@latest"]
173 | }
174 | }
175 | }
176 | ```
177 |
178 | ### Menggunakan Docker
179 |
180 | Jika Anda lebih suka menjalankan server MCP dalam kontainer Docker:
181 |
182 | 1. **Membuat Image Docker:**
183 |
184 | Pertama, buat `Dockerfile` di root proyek (atau di mana pun Anda suka):
185 |
186 |
187 | Klik untuk melihat konten Dockerfile
188 |
189 | ```Dockerfile
190 | FROM node:18-alpine
191 |
192 | WORKDIR /app
193 |
194 | # Instal versi terbaru secara global
195 | RUN npm install -g @upstash/context7-mcp@latest
196 |
197 | # Ekspos port default jika diperlukan (opsional, tergantung pada interaksi klien MCP)
198 | # EXPOSE 3000
199 |
200 | # Perintah default untuk menjalankan server
201 | CMD ["context7-mcp"]
202 | ```
203 |
204 |
205 |
206 | Kemudian, buat image menggunakan tag (misalnya, `context7-mcp`). **Pastikan Docker Desktop (atau daemon Docker) sedang berjalan.** Jalankan perintah berikut di direktori yang sama di mana Anda menyimpan `Dockerfile`:
207 |
208 | ```bash
209 | docker build -t context7-mcp .
210 | ```
211 |
212 | 2. **Konfigurasi MCP Client Anda:**
213 |
214 | Perbarui konfigurasi MCP client Anda untuk menggunakan perintah Docker.
215 |
216 | *Contoh untuk cline_mcp_settings.json:*
217 |
218 | ```json
219 | {
220 | "mcpServers": {
221 | "Сontext7": {
222 | "autoApprove": [],
223 | "disabled": false,
224 | "timeout": 60,
225 | "command": "docker",
226 | "args": ["run", "-i", "--rm", "context7-mcp"],
227 | "transportType": "stdio"
228 | }
229 | }
230 | }
231 | ```
232 | *Catatan: Ini adalah contoh konfigurasi. Silakan merujuk ke contoh spesifik untuk MCP client Anda (seperti Cursor, VS Code, dll.) sebelumnya dalam README ini untuk menyesuaikan struktur (misalnya, `mcpServers` vs `servers`). Juga, pastikan nama image di `args` cocok dengan tag yang digunakan selama perintah `docker build`.*
233 |
234 | ### Alat yang Tersedia
235 |
236 | - `resolve-library-id`: Menyelesaikan nama library umum menjadi ID library yang kompatibel dengan Context7.
237 | - `libraryName` (wajib)
238 | - `get-library-docs`: Mengambil dokumentasi untuk library menggunakan ID library yang kompatibel dengan Context7.
239 | - `context7CompatibleLibraryID` (wajib)
240 | - `topic` (opsional): Fokuskan dokumentasi pada topik tertentu (misalnya, "routing", "hooks")
241 | - `tokens` (opsional, default 10000): Jumlah maksimum token yang akan dihasilkan. Nilai kurang dari 10000 secara otomatis ditingkatkan menjadi 10000.
242 |
243 | ## Pengembangan
244 |
245 | Kloning proyek dan instal dependensi:
246 |
247 | ```bash
248 | bun i
249 | ```
250 |
251 | Build:
252 |
253 | ```bash
254 | bun run build
255 | ```
256 |
257 | ### Contoh Konfigurasi Lokal
258 |
259 | ```json
260 | {
261 | "mcpServers": {
262 | "context7": {
263 | "command": "npx",
264 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
265 | }
266 | }
267 | }
268 | ```
269 |
270 | ### Pengujian dengan MCP Inspector
271 |
272 | ```bash
273 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
274 | ```
275 |
276 | ## Pemecahan Masalah
277 |
278 | ### ERR_MODULE_NOT_FOUND
279 |
280 | Jika Anda melihat kesalahan ini, coba gunakan `bunx` sebagai pengganti `npx`.
281 |
282 | ```json
283 | {
284 | "mcpServers": {
285 | "context7": {
286 | "command": "bunx",
287 | "args": ["-y", "@upstash/context7-mcp@latest"]
288 | }
289 | }
290 | }
291 | ```
292 |
293 | Ini sering menyelesaikan masalah resolusi modul, terutama di lingkungan di mana `npx` tidak menginstal atau menyelesaikan paket dengan benar.
294 |
295 | ### Masalah Resolusi ESM
296 |
297 | Jika Anda mengalami kesalahan seperti: `Error: Cannot find module 'uriTemplate.js'` coba jalankan dengan flag `--experimental-vm-modules`:
298 |
299 | ```json
300 | {
301 | "mcpServers": {
302 | "context7": {
303 | "command": "npx",
304 | "args": [
305 | "-y",
306 | "--node-options=--experimental-vm-modules",
307 | "@upstash/context7-mcp@1.0.6"
308 | ]
309 | }
310 | }
311 | }
312 | ```
313 |
314 | ### Kesalahan MCP Client
315 |
316 | 1. Coba hapus `@latest` dari nama paket.
317 |
318 | 2. Coba gunakan `bunx` sebagai alternatif.
319 |
320 | 3. Coba gunakan `deno` sebagai alternatif.
321 |
322 | 4. Pastikan Anda menggunakan Node v18 atau lebih tinggi untuk memiliki dukungan fetch native dengan `npx`.
323 |
324 | ## Disclaimer
325 | Proyek Context7 adalah kontribusi komunitas dan meskipun kami berusaha untuk mempertahankan kualitas tinggi, kami tidak dapat menjamin keakuratan, kelengkapan, atau keamanan semua dokumentasi library. Proyek yang terdaftar di Context7 dikembangkan dan dikelola oleh pemiliknya masing-masing, bukan oleh Context7. Jika Anda menemukan konten yang mencurigakan, tidak pantas, atau berpotensi berbahaya, silakan gunakan tombol "Report" di halaman proyek untuk memberi tahu kami segera. Kami menganggap semua laporan dengan serius dan akan meninjau konten yang ditandai segera untuk menjaga integritas dan keamanan platform kami. Dengan menggunakan Context7, Anda mengakui bahwa Anda melakukannya atas kebijaksanaan dan risiko Anda sendiri.
326 |
327 | ## Context7 Di Media
328 |
329 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
330 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
331 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
332 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
333 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
334 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
335 |
336 | ## Grafik Riwayat Bintang
337 |
338 | [](https://www.star-history.com/#upstash/context7&Date)
339 |
340 | ## Lisensi
341 |
342 | MIT
343 |
344 |
--------------------------------------------------------------------------------
/docs/README.it.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Documentazione aggiornata per qualsiasi prompt
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | [](./docs/README.zh-CN.md) [](./docs/README.ko.md) [](./docs/README.es.md) [](./docs/README.fr.md) [-purple)](./docs/README.pt-BR.md) [](./docs/README.it.md)
6 |
7 |
8 | ## ❌ Senza Context7
9 |
10 | LLMs si affidano a informazioni obsolete o generiche sulle librerie che utilizzi. Ottieni:
11 |
12 | - ❌ Gli esempi di codice sono obsoleti e basati su dati di formazione vecchi di anni
13 | - ❌ Le API allucinate non esistono nemmeno
14 | - ❌ Risposte generiche per vecchie versioni del pacchetto
15 |
16 | ## ✅ Con Context7
17 |
18 | Context7 MCP recupera documentazione aggiornata, specifica per versione e esempi di codice direttamente dalla fonte — e li inserisce direttamente nel tuo prompt.
19 |
20 | Aggiungi `use context7` al prompt in Cursor:
21 |
22 | ```txt
23 | Crea un progetto Next.js di base con app router. Usa context7
24 | ```
25 |
26 | ```txt
27 | Creare uno script per eliminare le righe in cui la città è "", date le credenziali di PostgreSQL. usare context7
28 | ```
29 |
30 | Context7 recupera esempi di codice e documentazione aggiornati direttamente nel contesto del tuo LLM.
31 |
32 | - 1️⃣ Scrivi il tuo prompt in modo naturale
33 | - 2️⃣ Indica all'LLM di usare context7
34 | - 3️⃣ Ottieni risposte di codice funzionante
35 |
36 | Nessun cambio di tab, nessuna API allucinata che non esiste, nessuna generazione di codice obsoleta.
37 |
38 | ## 🛠️ Iniziare
39 |
40 | ### Requisiti
41 |
42 | - Node.js >= v18.0.0
43 | - Cursor, Windsurf, Claude Desktop o un altro client MCP
44 |
45 | ### Installazione tramite Smithery
46 |
47 | Per installare Context7 MCP Server per Claude Desktop automaticamente tramite [Smithery](https://smithery.ai/server/@upstash/context7-mcp):
48 |
49 | ```bash
50 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
51 | ```
52 |
53 | ### Installare in Cursor
54 |
55 | Vai a: `Impostazioni` -> `Impostazioni cursore` -> `MCP` -> `Aggiungi nuovo server MCP globale`
56 |
57 | Incollare la seguente configurazione nel file `~/.cursor/mcp.json` di Cursor è l'approccio consigliato. Vedi [Cursor MCP docs](https://docs.cursor.com/context/model-context-protocol) per ulteriori informazioni.
58 |
59 | ```json
60 | {
61 | "mcpServers": {
62 | "context7": {
63 | "command": "npx",
64 | "args": ["-y", "@upstash/context7-mcp@latest"]
65 | }
66 | }
67 | }
68 | ```
69 |
70 |
71 | Alternativa: Usa Bun
72 |
73 | ```json
74 | {
75 | "mcpServers": {
76 | "context7": {
77 | "command": "bunx",
78 | "args": ["-y", "@upstash/context7-mcp@latest"]
79 | }
80 | }
81 | }
82 | ```
83 |
84 |
85 |
86 |
87 | Alternativa: Usa Deno
88 |
89 | ```json
90 | {
91 | "mcpServers": {
92 | "context7": {
93 | "command": "deno",
94 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
95 | }
96 | }
97 | }
98 | ```
99 |
100 |
101 |
102 | ### Installare in Windsurf
103 |
104 | Aggiungi questo al tuo file di configurazione Windsurf MCP. Vedi [Windsurf MCP docs](https://docs.windsurf.com/windsurf/mcp) per ulteriori informazioni.
105 |
106 | ```json
107 | {
108 | "mcpServers": {
109 | "context7": {
110 | "command": "npx",
111 | "args": ["-y", "@upstash/context7-mcp@latest"]
112 | }
113 | }
114 | }
115 | ```
116 |
117 | ### Installare in VS Code
118 |
119 | [
](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)
120 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
121 |
122 | Aggiungi questo al tuo file di configurazione MCP di VS Code. Vedi [VS Code MCP docs](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) per ulteriori informazioni.
123 |
124 | ```json
125 | {
126 | "servers": {
127 | "Context7": {
128 | "type": "stdio",
129 | "command": "npx",
130 | "args": ["-y", "@upstash/context7-mcp@latest"]
131 | }
132 | }
133 | }
134 | ```
135 |
136 | ### Installare in Zed
137 |
138 | Può essere installato tramite [Zed Extensions](https://zed.dev/extensions?query=Context7) oppure puoi aggiungere questo al tuo `settings.json` di Zed. Vedi [Zed Context Server docs](https://zed.dev/docs/assistant/context-servers) per ulteriori informazioni.
139 |
140 | ```json
141 | {
142 | "context_servers": {
143 | "Context7": {
144 | "command": {
145 | "path": "npx",
146 | "args": ["-y", "@upstash/context7-mcp@latest"]
147 | },
148 | "settings": {}
149 | }
150 | }
151 | }
152 | ```
153 |
154 | ### Installare in Claude Code
155 |
156 | Esegui questo comando. Vedi [Claude Code MCP docs](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) per ulteriori informazioni.
157 |
158 | ```sh
159 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
160 | ```
161 |
162 | ### Installare in Claude Desktop
163 |
164 | Aggiungi questo al tuo file `claude_desktop_config.json` di Claude Desktop. Vedi [Claude Desktop MCP docs](https://modelcontextprotocol.io/quickstart/user) per ulteriori informazioni.
165 |
166 | ```json
167 | {
168 | "mcpServers": {
169 | "Context7": {
170 | "command": "npx",
171 | "args": ["-y", "@upstash/context7-mcp@latest"]
172 | }
173 | }
174 | }
175 | ```
176 |
177 | ### Utilizzo di Docker
178 |
179 | Se preferisci eseguire il server MCP in un contenitore Docker:
180 |
181 | 1. **Costruisci l'immagine Docker:**
182 |
183 | Prima, crea un `Dockerfile` nella radice del progetto (o ovunque tu preferisca):
184 |
185 |
186 | Clicca per visualizzare il contenuto del Dockerfile
187 |
188 | ```Dockerfile
189 | FROM node:18-alpine
190 |
191 | WORKDIR /app
192 |
193 | # Installa l ultima versione globalmente
194 | RUN npm install -g @upstash/context7-mcp@latest
195 |
196 | # Esponi la porta predefinita se necessario (opzionale, dipende dall interazione del client MCP)
197 | # EXPOSE 3000
198 |
199 | # Comando predefinito per eseguire il server
200 | CMD ["context7-mcp"]
201 | ```
202 |
203 |
204 |
205 | Poi, costruisci l'immagine utilizzando un tag (ad esempio, `context7-mcp`). **Assicurati che Docker Desktop (o il demone Docker) sia in esecuzione.** Esegui il seguente comando nella stessa directory in cui hai salvato il `Dockerfile`:
206 |
207 | ```bash
208 | docker build -t context7-mcp .
209 | ```
210 |
211 | 2. **Configura il tuo client MCP:**
212 |
213 | Aggiorna la configurazione del tuo client MCP per utilizzare il comando Docker.
214 |
215 | *Esempio per un file cline_mcp_settings.json:*
216 |
217 | ```json
218 | {
219 | "mcpServers": {
220 | "Сontext7": {
221 | "autoApprove": [],
222 | "disabled": false,
223 | "timeout": 60,
224 | "command": "docker",
225 | "args": ["run", "-i", "--rm", "context7-mcp"],
226 | "transportType": "stdio"
227 | }
228 | }
229 | }
230 | ```
231 | *Nota: Questa è una configurazione di esempio. Consulta gli esempi specifici per il tuo client MCP (come Cursor, VS Code, ecc.) precedentemente in questo README per adattare la struttura (ad es., `mcpServers` vs `servers`). Inoltre, assicurati che il nome dell'immagine in `args` corrisponda al tag utilizzato durante il comando `docker build`.*
232 |
233 | ### Strumenti Disponibili
234 |
235 | - `resolve-library-id`: Converte un nome generico di libreria in un ID di libreria compatibile con Context7.
236 | - `libraryName` (obbligatorio)
237 | - `get-library-docs`: Recupera la documentazione per una libreria utilizzando un ID di libreria compatibile con Context7.
238 | - `context7CompatibleLibraryID` (obbligatorio)
239 | - `topic` (opzionale): Concentra la documentazione su un argomento specifico (es., "routing", "hooks")
240 | - `tokens` (opzionale, predefinito 10000): Numero massimo di token da restituire. I valori inferiori a 10000 vengono automaticamente aumentati a 10000.
241 |
242 | ## Sviluppo
243 |
244 | Clona il progetto e installa le dipendenze:
245 |
246 | ```bash
247 | bun i
248 | ```
249 |
250 | Compila:
251 |
252 | ```bash
253 | bun run build
254 | ```
255 | ### Esempio di Configurazione Locale
256 |
257 | ```json
258 | {
259 | "mcpServers": {
260 | "context7": {
261 | "command": "npx",
262 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
263 | }
264 | }
265 | }
266 | ```
267 |
268 | ### Test con MCP Inspector
269 |
270 | ```bash
271 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
272 | ```
273 |
274 | ## Risoluzione dei problemi
275 |
276 | ### ERR_MODULE_NOT_FOUND
277 |
278 | Se vedi questo errore, prova a usare `bunx` invece di `npx`.
279 |
280 | ```json
281 | {
282 | "mcpServers": {
283 | "context7": {
284 | "command": "bunx",
285 | "args": ["-y", "@upstash/context7-mcp@latest"]
286 | }
287 | }
288 | }
289 | ```
290 |
291 | Questo spesso risolve i problemi di risoluzione dei moduli, specialmente negli ambienti dove `npx` non installa o risolve correttamente i pacchetti.
292 |
293 | ### Problemi di risoluzione ESM
294 |
295 | Se riscontri un errore come: `Error: Cannot find module 'uriTemplate.js'` prova a eseguire con il flag `--experimental-vm-modules`:
296 |
297 | ```json
298 | {
299 | "mcpServers": {
300 | "context7": {
301 | "command": "npx",
302 | "args": [
303 | "-y",
304 | "--node-options=--experimental-vm-modules",
305 | "@upstash/context7-mcp@1.0.6"
306 | ]
307 | }
308 | }
309 | }
310 | ```
311 |
312 | ### Errori del Client MCP
313 |
314 | 1. Prova a rimuovere `@latest` dal nome del pacchetto.
315 |
316 | 2. Prova a usare `bunx` come alternativa.
317 |
318 | 3. Prova a usare `deno` come alternativa.
319 |
320 | 4. Assicurati di utilizzare Node v18 o superiore per avere il supporto nativo di fetch con `npx`.
321 |
322 | ## Dichiarazione di non responsabilità
323 | I progetti Context7 sono contributi della comunità e, sebbene ci impegniamo a mantenere un'alta qualità, non possiamo garantire l'accuratezza, la completezza o la sicurezza di tutta la documentazione delle librerie. I progetti elencati in Context7 sono sviluppati e gestiti dai rispettivi proprietari, non da Context7. Se riscontri contenuti sospetti, inappropriati o potenzialmente dannosi, utilizza il pulsante "Segnala" sulla pagina del progetto per informarci immediatamente. Prendiamo sul serio tutte le segnalazioni e esamineremo prontamente i contenuti segnalati per mantenere l'integrità e la sicurezza della nostra piattaforma. Utilizzando Context7, riconosci di farlo a tua discrezione e a tuo rischio.
324 |
325 | ## Context7 nei Media
326 |
327 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
328 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
329 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
330 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
331 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
332 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
333 |
334 | ## Storico delle Stelle
335 |
336 | [](https://www.star-history.com/#upstash/context7&Date)
337 |
338 | ## Licenza
339 |
340 | MIT
341 |
--------------------------------------------------------------------------------
/docs/README.ko.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - 모든 프롬프트를 위한 최신 문서
2 |
3 | ## ❌ Context7 없이
4 |
5 | LLM은 사용하는 라이브러리에 대한 오래되거나 일반적인 정보에 의존하면 다음과 같은 문제가 발생할 수 있습니다:
6 |
7 | - ❌ 1년 전 학습 데이터를 기반으로 한 오래된 코드 예제
8 | - ❌ 실제로 존재하지 않는 API에 대한 환각
9 | - ❌ 구 버전 패키지에 대한 일반적인 답변
10 |
11 | ## ✅ Context7 사용 시
12 |
13 | Context7 MCP는 소스에서 직접 최신 버전별 문서와 코드 예제를 가져와 프롬프트에 즉시 적용합니다.
14 |
15 | Cursor에서 프롬프트에 `use context7`만 추가하세요:
16 |
17 | ```txt
18 | app router를 사용하는 기본 Next.js 프로젝트를 만들어주세요. use context7
19 | ```
20 |
21 | ```txt
22 | PostgreSQL 연결 정보를 사용하여 city 필드가 빈 문자열("")인 행을 삭제하는 스크립트를 만들어주세요. use context7
23 | ```
24 |
25 | Context7은 최신 코드 예제와 문서를 LLM의 컨텍스트에 즉시 가져옵니다.
26 |
27 | - 1️⃣ 평소처럼 자연스럽게 프롬프트 작성
28 | - 2️⃣ `use context7` 키워드 추가
29 | - 3️⃣ 실제 동작하는 코드 답변 받기
30 |
31 | 탭 전환도, 존재하지 않는 API도, 오래된 코드 생성도 없습니다.
32 |
33 | ## 🛠️ 시작하기
34 |
35 | ### 요구사항
36 |
37 | - Node.js >= v18.0.0
38 | - Cursor, Windsurf, Claude Desktop 또는 다른 MCP 클라이언트
39 |
40 | ### Smithery를 통한 설치
41 |
42 | [Smithery](https://smithery.ai/server/@upstash/context7-mcp)를 통해 Claude Desktop용 Context7 MCP 서버를 자동으로 설치하려면:
43 |
44 | ```bash
45 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
46 | ```
47 |
48 | ### Cursor에 설치
49 |
50 | 다음으로 이동: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
51 |
52 | 다음 설정을 Cursor의 `~/.cursor/mcp.json` 파일에 붙여넣는 것이 권장됩니다. 자세한 내용은 [Cursor MCP 문서](https://docs.cursor.com/context/model-context-protocol)를 참조하세요.
53 |
54 | ```json
55 | {
56 | "mcpServers": {
57 | "context7": {
58 | "command": "npx",
59 | "args": ["-y", "@upstash/context7-mcp@latest"]
60 | }
61 | }
62 | }
63 | ```
64 |
65 |
66 | 대안: Bun 사용
67 |
68 | ```json
69 | {
70 | "mcpServers": {
71 | "context7": {
72 | "command": "bunx",
73 | "args": ["-y", "@upstash/context7-mcp@latest"]
74 | }
75 | }
76 | }
77 | ```
78 |
79 |
80 |
81 |
82 | 대안: Deno 사용
83 |
84 | ```json
85 | {
86 | "mcpServers": {
87 | "context7": {
88 | "command": "deno",
89 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
90 | }
91 | }
92 | }
93 | ```
94 |
95 |
96 |
97 | ### Windsurf에 설치
98 |
99 | Windsurf MCP 설정 파일에 다음을 추가하세요. 자세한 내용은 [Windsurf MCP 문서](https://docs.windsurf.com/windsurf/mcp)를 참조하세요.
100 |
101 | ```json
102 | {
103 | "mcpServers": {
104 | "context7": {
105 | "command": "npx",
106 | "args": ["-y", "@upstash/context7-mcp@latest"]
107 | }
108 | }
109 | }
110 | ```
111 |
112 | ### VSCode에 설치
113 |
114 | VSCode MCP 설정 파일에 다음을 추가하세요. 자세한 내용은 [VSCode MCP 문서](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)를 참조하세요.
115 |
116 | ```json
117 | {
118 | "servers": {
119 | "Context7": {
120 | "type": "stdio",
121 | "command": "npx",
122 | "args": ["-y", "@upstash/context7-mcp@latest"]
123 | }
124 | }
125 | }
126 | ```
127 |
128 | ### Claude Code에 설치
129 |
130 | 다음 명령을 실행하세요. 자세한 내용은 [Claude Code MCP 문서](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp)를 참조하세요.
131 |
132 | ```sh
133 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
134 | ```
135 |
136 | ### Claude Desktop에 설치
137 |
138 | Claude Desktop의 `claude_desktop_config.json` 파일에 다음을 추가하세요. 자세한 내용은 [Claude Desktop MCP 문서](https://modelcontextprotocol.io/quickstart/user)를 참조하세요.
139 |
140 | ```json
141 | {
142 | "mcpServers": {
143 | "Context7": {
144 | "command": "npx",
145 | "args": ["-y", "@upstash/context7-mcp@latest"]
146 | }
147 | }
148 | }
149 | ```
150 |
151 | ### 사용 가능한 도구
152 |
153 | - `resolve-library-id`: 일반적인 라이브러리 이름을 Context7이 인식할 수 있는 라이브러리 ID로 변환합니다.
154 | - `libraryName` (필수): 검색하고자 하는 라이브러리 이름
155 |
156 | - `get-library-docs`: Context7이 인식하는 라이브러리 ID를 사용하여 해당 라이브러리의 문서를 가져옵니다.
157 | - `context7CompatibleLibraryID` (필수)
158 | - `topic` (선택): 특정 주제의 문서만 가져오기 (예: "routing", "hooks")
159 | - `tokens` (선택, 기본값 10000): 가져올 문서의 최대 토큰 수. 10000 미만으로 설정하면 자동으로 10000으로 조정됨
160 |
161 | ## 개발
162 |
163 | 프로젝트를 클론하고 의존성을 설치하세요:
164 |
165 | ```bash
166 | bun i
167 | ```
168 |
169 | 빌드:
170 |
171 | ```bash
172 | bun run build
173 | ```
174 |
175 | ### 로컬 설정 예시
176 |
177 | ```json
178 | {
179 | "mcpServers": {
180 | "context7": {
181 | "command": "npx",
182 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
183 | }
184 | }
185 | }
186 | ```
187 |
188 | ### MCP Inspector로 테스트
189 |
190 | ```bash
191 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
192 | ```
193 |
194 | ## 문제 해결
195 |
196 | ### ERR_MODULE_NOT_FOUND
197 |
198 | 이 오류가 발생하면 `npx` 대신 `bunx`를 사용해보세요.
199 |
200 | ```json
201 | {
202 | "mcpServers": {
203 | "context7": {
204 | "command": "bunx",
205 | "args": ["-y", "@upstash/context7-mcp@latest"]
206 | }
207 | }
208 | }
209 | ```
210 |
211 | 이 방법은 `npx`가 패키지를 제대로 설치 또는 찾지 못하는 환경에서 문제를 해결하는 경우가 많습니다.
212 |
213 | ### MCP 클라이언트 오류
214 |
215 | 1. 패키지 이름에서 `@latest`를 제거해보세요.
216 |
217 | 2. 대안으로 `bunx`를 사용해보세요.
218 |
219 | 3. 대안으로 `deno`를 사용해보세요.
220 |
221 | ## Context7 관련 미디어 자료
222 |
223 | - [Better Stack: "무료 도구로 Cursor를 10배 더 스마트하게 만들기"](https://youtu.be/52FC3qObp9E)
224 | - [Cole Medin: "AI 코딩 어시스턴트를 위한 최고의 MCP 서버"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
225 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: 이것이 AGI인가?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
226 | - [Julian Goldie SEO: "Context7: 새로운 MCP AI 에이전트 업데이트"](https://www.youtube.com/watch?v=CTZm6fBYisc)
227 | - [JeredBlu: "Context 7 MCP: 즉시 문서 가져오기 + VS Code 설정"](https://www.youtube.com/watch?v=-ls0D-rtET4)
228 | - [Income stream surfers: "Context7: AI 코딩을 변화시킬 새로운 MCP 서버"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
229 |
230 | ## Star 기록
231 |
232 | [](https://www.star-history.com/#upstash/context7&Date)
233 |
234 | ## 라이선스
235 |
236 | MIT
237 |
--------------------------------------------------------------------------------
/docs/README.pt-BR.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Documentação Atualizada Para Qualquer Prompt
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | [](./docs/README.zh-CN.md) [](./docs/README.ko.md) [](./docs/README.es.md) [](./docs/README.fr.md)
6 |
7 | ## ❌ Sem o Context7
8 |
9 | Os LLMs dependem de informações desatualizadas ou genéricas sobre as bibliotecas que você usa. Você obtém:
10 |
11 | - ❌ Exemplos de código desatualizados e baseados em dados de treinamento de anos atrás
12 | - ❌ APIs alucinadas que nem existem
13 | - ❌ Respostas genéricas para versões antigas de pacotes
14 |
15 | ## ✅ Com o Context7
16 |
17 | O Context7 MCP extrai documentação e exemplos de código atualizados e específicos para cada versão diretamente da fonte — e os coloca diretamente em seu prompt.
18 |
19 | Adicione `use context7` ao seu prompt no Cursor:
20 |
21 | ```txt
22 | Create a basic Next.js project with app router. use context7
23 | ```
24 |
25 | ```txt
26 | Create a script to delete the rows where the city is "" given PostgreSQL credentials. use context7
27 | ```
28 |
29 | O Context7 busca exemplos de código e documentação atualizados diretamente para o contexto do seu LLM.
30 |
31 | - 1️⃣ Escreva seu prompt naturalmente
32 | - 2️⃣ Diga ao LLM para `use context7`
33 | - 3️⃣ Obtenha respostas com código funcional
34 |
35 | Sem alternar entre abas, sem APIs alucinadas que não existem, sem gerações de código desatualizadas.
36 |
37 | ## 🛠️ Primeiros Passos
38 |
39 | ### Requisitos
40 |
41 | - Node.js >= v18.0.0
42 | - Cursor, Windsurf, Claude Desktop ou outro Cliente MCP
43 |
44 | ### Instalando via Smithery
45 |
46 | Para instalar o Servidor Context7 MCP para Claude Desktop automaticamente via [Smithery](https://smithery.ai/server/@upstash/context7-mcp):
47 |
48 | ```bash
49 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
50 | ```
51 |
52 | ### Instalar no Cursor
53 |
54 | Vá para: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
55 |
56 | Colar a seguinte configuração no seu arquivo Cursor `~/.cursor/mcp.json` é a abordagem recomendada. Veja a [documentação do Cursor MCP](https://docs.cursor.com/context/model-context-protocol) para mais informações.
57 |
58 | ```json
59 | {
60 | "mcpServers": {
61 | "context7": {
62 | "command": "npx",
63 | "args": ["-y", "@upstash/context7-mcp@latest"]
64 | }
65 | }
66 | }
67 | ```
68 |
69 |
70 | Alternativa: Usar Bun
71 |
72 | ```json
73 | {
74 | "mcpServers": {
75 | "context7": {
76 | "command": "bunx",
77 | "args": ["-y", "@upstash/context7-mcp@latest"]
78 | }
79 | }
80 | }
81 | ```
82 |
83 |
84 |
85 |
86 | Alternativa: Usar Deno
87 |
88 | ```json
89 | {
90 | "mcpServers": {
91 | "context7": {
92 | "command": "deno",
93 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
94 | }
95 | }
96 | }
97 | ```
98 |
99 |
100 |
101 | ### Instalar no Windsurf
102 |
103 | Adicione isto ao seu arquivo de configuração MCP do Windsurf. Veja a [documentação do Windsurf MCP](https://docs.windsurf.com/windsurf/mcp) para mais informações.
104 |
105 | ```json
106 | {
107 | "mcpServers": {
108 | "context7": {
109 | "command": "npx",
110 | "args": ["-y", "@upstash/context7-mcp@latest"]
111 | }
112 | }
113 | }
114 | ```
115 |
116 | ### Instalar no VS Code
117 |
118 | [
](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)
119 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
120 |
121 | Adicione isto ao seu arquivo de configuração MCP do VS Code. Veja a [documentação do VS Code MCP](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) para mais informações.
122 |
123 | ```json
124 | {
125 | "servers": {
126 | "Context7": {
127 | "type": "stdio",
128 | "command": "npx",
129 | "args": ["-y", "@upstash/context7-mcp@latest"]
130 | }
131 | }
132 | }
133 | ```
134 |
135 | ### Instalar no Zed
136 |
137 | Pode ser instalado via [Extensões do Zed](https://zed.dev/extensions?query=Context7) ou você pode adicionar isto ao seu `settings.json` do Zed. Veja a [documentação de Servidores de Contexto do Zed](https://zed.dev/docs/assistant/context-servers) para mais informações.
138 |
139 | ```json
140 | {
141 | "context_servers": {
142 | "Context7": {
143 | "command": {
144 | "path": "npx",
145 | "args": ["-y", "@upstash/context7-mcp@latest"]
146 | },
147 | "settings": {}
148 | }
149 | }
150 | }
151 | ```
152 |
153 | ### Instalar no Claude Code
154 |
155 | Execute este comando. Veja a [documentação do Claude Code MCP](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) para mais informações.
156 |
157 | ```sh
158 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
159 | ```
160 |
161 | ### Instalar no Claude Desktop
162 |
163 | Adicione isto ao seu arquivo `claude_desktop_config.json` do Claude Desktop. Veja a [documentação do Claude Desktop MCP](https://modelcontextprotocol.io/quickstart/user) para mais informações.
164 |
165 | ```json
166 | {
167 | "mcpServers": {
168 | "Context7": {
169 | "command": "npx",
170 | "args": ["-y", "@upstash/context7-mcp@latest"]
171 | }
172 | }
173 | }
174 | ```
175 |
176 | ### Usando Docker
177 |
178 | Se você preferir executar o servidor MCP em um contêiner Docker:
179 |
180 | 1. **Construa a Imagem Docker:**
181 |
182 | Primeiro, crie um `Dockerfile` na raiz do projeto (ou onde preferir):
183 |
184 |
185 | Clique para ver o conteúdo do Dockerfile
186 |
187 | ```Dockerfile
188 | FROM node:18-alpine
189 |
190 | WORKDIR /app
191 |
192 | # Instala a versão mais recente globalmente
193 | RUN npm install -g @upstash/context7-mcp@latest
194 |
195 | # Expõe a porta padrão se necessário (opcional, depende da interação do cliente MCP)
196 | # EXPOSE 3000
197 |
198 | # Comando padrão para executar o servidor
199 | CMD ["context7-mcp"]
200 | ```
201 |
202 |
203 |
204 | Em seguida, construa a imagem usando uma tag (por exemplo, `context7-mcp`). **Certifique-se de que o Docker Desktop (ou o daemon do Docker) esteja em execução.** Execute o seguinte comando no mesmo diretório onde você salvou o `Dockerfile`:
205 |
206 | ```bash
207 | docker build -t context7-mcp .
208 | ```
209 |
210 | 2. **Configure Seu Cliente MCP:**
211 |
212 | Atualize a configuração do seu cliente MCP para usar o comando Docker.
213 |
214 | _Exemplo para um cline_mcp_settings.json:_
215 |
216 | ```json
217 | {
218 | "mcpServers": {
219 | "Сontext7": {
220 | "autoApprove": [],
221 | "disabled": false,
222 | "timeout": 60,
223 | "command": "docker",
224 | "args": ["run", "-i", "--rm", "context7-mcp"],
225 | "transportType": "stdio"
226 | }
227 | }
228 | }
229 | ```
230 |
231 | _Nota: Este é um exemplo de configuração. Consulte os exemplos específicos para o seu cliente MCP (como Cursor, VS Code, etc.) mencionados anteriormente neste README para adaptar a estrutura (por exemplo, `mcpServers` vs `servers`). Além disso, certifique-se de que o nome da imagem em `args` corresponda à tag usada durante o comando `docker build`._
232 |
233 | ### Ferramentas Disponíveis
234 |
235 | - `resolve-library-id`: Resolve um nome geral de biblioteca em um ID de biblioteca compatível com Context7.
236 | - `libraryName` (obrigatório)
237 | - `get-library-docs`: Busca documentação para uma biblioteca usando um ID de biblioteca compatível com Context7.
238 | - `context7CompatibleLibraryID` (obrigatório)
239 | - `topic` (opcional): Concentra a documentação em um tópico específico (por exemplo, "routing", "hooks")
240 | - `tokens` (opcional, padrão 10000): Número máximo de tokens a retornar. Valores menores que 10000 são automaticamente aumentados para 10000.
241 |
242 | ## Desenvolvimento
243 |
244 | Clone o projeto e instale as dependências:
245 |
246 | ```bash
247 | bun i
248 | ```
249 |
250 | Compilação:
251 |
252 | ```bash
253 | bun run build
254 | ```
255 |
256 | ### Exemplo de Configuração Local
257 |
258 | ```json
259 | {
260 | "mcpServers": {
261 | "context7": {
262 | "command": "npx",
263 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
264 | }
265 | }
266 | }
267 | ```
268 |
269 | ### Testando com o MCP Inspector
270 |
271 | ```bash
272 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
273 | ```
274 |
275 | ## Solução de Problemas
276 |
277 | ### ERR_MODULE_NOT_FOUND
278 |
279 | Se você vir este erro, tente usar `bunx` em vez de `npx`.
280 |
281 | ```json
282 | {
283 | "mcpServers": {
284 | "context7": {
285 | "command": "bunx",
286 | "args": ["-y", "@upstash/context7-mcp@latest"]
287 | }
288 | }
289 | }
290 | ```
291 |
292 | Isso geralmente resolve problemas de resolução de módulos, especialmente em ambientes onde o `npx` não instala ou resolve pacotes adequadamente.
293 |
294 | ### Problemas de Resolução ESM
295 |
296 | Se você encontrar um erro como: `Error: Cannot find module 'uriTemplate.js'` tente executar com a flag `--experimental-vm-modules`:
297 |
298 | ```json
299 | {
300 | "mcpServers": {
301 | "context7": {
302 | "command": "npx",
303 | "args": ["-y", "--node-options=--experimental-vm-modules", "@upstash/context7-mcp@1.0.6"]
304 | }
305 | }
306 | }
307 | ```
308 |
309 | ### Erros do Cliente MCP
310 |
311 | 1. Tente remover `@latest` do nome do pacote.
312 |
313 | 2. Tente usar `bunx` como alternativa.
314 |
315 | 3. Tente usar `deno` como alternativa.
316 |
317 | 4. Certifique-se de estar usando o Node v18 ou superior para ter suporte nativo ao fetch com `npx`.
318 |
319 | ## Aviso Legal
320 |
321 | Os projetos Context7 são contribuições da comunidade e, embora nos esforcemos para manter alta qualidade, não podemos garantir a precisão, completude ou segurança de toda a documentação da biblioteca. Os projetos listados no Context7 são desenvolvidos e mantidos por seus respectivos proprietários, não pelo Context7. Se você encontrar qualquer conteúdo suspeito, inadequado ou potencialmente prejudicial, use o botão "Report" na página do projeto para nos notificar imediatamente. Levamos todos os relatórios a sério e revisaremos o conteúdo sinalizado prontamente para manter a integridade e segurança de nossa plataforma. Ao usar o Context7, você reconhece que o faz por sua própria conta e risco.
322 |
323 | ## Context7 na Mídia
324 |
325 | - [Better Stack: "Free Tool Makes Cursor 10x Smarter"](https://youtu.be/52FC3qObp9E)
326 | - [Cole Medin: "This is Hands Down the BEST MCP Server for AI Coding Assistants"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
327 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Is This AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
328 | - [Julian Goldie SEO: "Context7: New MCP AI Agent Update"](https://www.youtube.com/watch?v=CTZm6fBYisc)
329 | - [JeredBlu: "Context 7 MCP: Get Documentation Instantly + VS Code Setup"](https://www.youtube.com/watch?v=-ls0D-rtET4)
330 | - [Income stream surfers: "Context7: The New MCP Server That Will CHANGE AI Coding"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
331 |
332 | ## Histórico de Estrelas
333 |
334 | [](https://www.star-history.com/#upstash/context7&Date)
335 |
336 | ## Licença
337 |
338 | MIT
339 |
--------------------------------------------------------------------------------
/docs/README.ru.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Актуальная документация для любого промпта
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | ## ❌ Без Context7
6 |
7 | LLMs полагаются на устаревшую или обобщённую информацию о библиотеках, с которыми вы работаете. В результате этого вы получаете:
8 |
9 | - ❌ Устаревшие примеры кода многолетней давности
10 | - ❌ Выдуманные API, которые даже не существуют
11 | - ❌ Обобщённые ответы для старых библиотек
12 |
13 | ## ✅ С Context7
14 |
15 | Context7 MCP получает актуальную документацию и примеры кода, строго соответствующие нужной версии, прямо из исходных источников и вставляет их прямо в ваш промпт.
16 |
17 | Добавьте строку `use context7` в промпт для Cursor:
18 |
19 | ```txt
20 | Создай базовый Next.js проект с маршрутизатором приложений. Use context7
21 | ```
22 |
23 | ```txt
24 | Создай скрипт, удаляющий строки, где город равен "", используя учётные данные PostgreSQL. Use context7
25 | ```
26 |
27 | Context7 MCP подгружает свежие примеры кода и документацию из источников прямо в контекст вашей LLM.
28 |
29 | - 1️⃣ Напишите свой промпт так, как писали его всегда
30 | - 2️⃣ Добавьте к промпту `use context7`
31 | - 3️⃣ Получите работающий результат
32 |
33 | Никакого переключения между вкладками, выдуманного API или устаревшего кода.
34 |
35 | ## 🛠️ Начало работы
36 |
37 | ### Требования
38 |
39 | - Node.js >= v18.0.0
40 | - Cursor, Windsurf, Claude Desktop или другой MCP клиент
41 |
42 | ### Установка через Smithery
43 |
44 | Воспользуйтесь [Smithery](https://smithery.ai/server/@upstash/context7-mcp), чтобы автоматически установить MCP сервер Context7 для Claude Desktop:
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### Установка в Cursor
51 |
52 | Перейдите в вкладку: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
53 |
54 | Рекомендуется вставить конфигурацию в файл `~/.cursor/mcp.json`. Также можно установить конфигурацию для конкретного проекта, создав файл `.cursor/mcp.json` в его директории. Смотрите [документацию Cursor MCP](https://docs.cursor.com/context/model-context-protocol) для получения дополнительной информации.
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 |
68 | Альтернативный вариант - Bun
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "command": "bunx",
75 | "args": ["-y", "@upstash/context7-mcp"]
76 | }
77 | }
78 | }
79 | ```
80 |
81 |
82 |
83 |
84 | Альтернативный вариант - Deno
85 |
86 | ```json
87 | {
88 | "mcpServers": {
89 | "context7": {
90 | "command": "deno",
91 | "args": ["run", "--allow-env", "--allow-net", "npm:@upstash/context7-mcp"]
92 | }
93 | }
94 | }
95 | ```
96 |
97 |
98 |
99 | ### Установка в Windsurf
100 |
101 | Добавьте следующие строки в ваш конфигурационный файл Windsurf MCP. Смотрите [документацию Windsurf MCP](https://docs.windsurf.com/windsurf/mcp) для получения дополнительной информации.
102 |
103 | ```json
104 | {
105 | "mcpServers": {
106 | "context7": {
107 | "command": "npx",
108 | "args": ["-y", "@upstash/context7-mcp"]
109 | }
110 | }
111 | }
112 | ```
113 |
114 | ### Установка в VS Code
115 |
116 | [
](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)
117 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
118 |
119 | Добавьте следующие строки в ваш конфигурационный файл VS Code MCP. Смотрите [документацию VS Code MCP](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) для получения дополнительной информации.
120 |
121 | ```json
122 | {
123 | "servers": {
124 | "Context7": {
125 | "type": "stdio",
126 | "command": "npx",
127 | "args": ["-y", "@upstash/context7-mcp"]
128 | }
129 | }
130 | }
131 | ```
132 |
133 | ### Установка in Zed
134 |
135 | Можно установить через [Zed расширение](https://zed.dev/extensions?query=Context7) или добавить следующие строки в `settings.json`. Смотрите [документацию Zed Context Server](https://zed.dev/docs/assistant/context-servers) для получения дополнительной информации.
136 |
137 | ```json
138 | {
139 | "context_servers": {
140 | "Context7": {
141 | "command": {
142 | "path": "npx",
143 | "args": ["-y", "@upstash/context7-mcp"]
144 | },
145 | "settings": {}
146 | }
147 | }
148 | }
149 | ```
150 |
151 | ### Установка в Claude Code
152 |
153 | Запустите следующую команду для установки. Смотрите [документацию Claude Code MCP](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) для получения дополнительной информации.
154 |
155 | ```sh
156 | claude mcp add context7 -- npx -y @upstash/context7-mcp
157 | ```
158 |
159 | ### Установка в Claude Desktop
160 |
161 | Добавьте следующие следующие строки в ваш конфигурационный файл `claude_desktop_config.json`. Смотрите [документацию Claude Desktop MCP](https://modelcontextprotocol.io/quickstart/user) для получения дополнительной информации.
162 |
163 | ```json
164 | {
165 | "mcpServers": {
166 | "Context7": {
167 | "command": "npx",
168 | "args": ["-y", "@upstash/context7-mcp"]
169 | }
170 | }
171 | }
172 | ```
173 |
174 | ### Установка в BoltAI
175 |
176 | Откройте страницу "Settings", перейдите в "Plugins" и добавьте следующие JSON-строки:
177 |
178 | ```json
179 | {
180 | "mcpServers": {
181 | "context7": {
182 | "args": ["-y", "@upstash/context7-mcp"],
183 | "command": "npx"
184 | }
185 | }
186 | }
187 | ```
188 |
189 | ### Используя Docker
190 |
191 | Если вы предпочитаете запускать MCP сервер в Docker контейнере:
192 |
193 | 1. **Создайте образ Docker:**
194 |
195 | Во-первых, создайте `Dockerfile` в корне вашего проекта (или в любом другом месте):
196 |
197 |
198 | Нажмите, чтобы просмотреть содержимое файла Dockerfile
199 |
200 | ```Dockerfile
201 | FROM node:18-alpine
202 |
203 | WORKDIR /app
204 |
205 | # Установите последнюю версию пакета глобально
206 | RUN npm install -g @upstash/context7-mcp
207 |
208 | # Откройте стандартный порт, если это необходимо (необязательно, это зависит от взаимодействия с MCP клиентом)
209 | # EXPOSE 3000
210 |
211 | # Стандартная команда для запуска сервера
212 | CMD ["context7-mcp"]
213 | ```
214 |
215 |
216 |
217 | Затем, соберите образ, используя тег (например, `context7-mcp`). **Убедитесь, что Docker Desktop (или демон Docker) работает.** Запустите следующую команду в этой же директории, где сохранён `Dockerfile`:
218 |
219 | ```bash
220 | docker build -t context7-mcp .
221 | ```
222 |
223 | 2. **Настройте ваш MCP клиент:**
224 |
225 | Обновите вашу конфигурацию MCP клиента, чтобы использовать Docker команду.
226 |
227 | *Пример для cline_mcp_settings.json:*
228 |
229 | ```json
230 | {
231 | "mcpServers": {
232 | "Сontext7": {
233 | "autoApprove": [],
234 | "disabled": false,
235 | "timeout": 60,
236 | "command": "docker",
237 | "args": ["run", "-i", "--rm", "context7-mcp"],
238 | "transportType": "stdio"
239 | }
240 | }
241 | }
242 | ```
243 |
244 | *Примечение: это пример конфигурации. Обратитесь к конкретным примерам для вашего MCP-клиента (например, Cursor, VS Code и т.д.), в предыдущих разделах этого README, чтобы адаптировать структуру (например, `mcpServers` вместо `servers`). Также убедитесь, что имя образа в `args` соответствует тегу, использованному при выполнении команды `docker build`.*
245 |
246 | ### Установка в Windows
247 |
248 | Конфигурация в Windows немного отличается от Linux или macOS (*в качестве примера используется `Cline`*). Однако, эти же же принципы применимы и к другим редакторам. В случае необходимости обратитесь к настройкам `command` и `args`.
249 |
250 | ```json
251 | {
252 | "mcpServers": {
253 | "github.com/upstash/context7-mcp": {
254 | "command": "cmd",
255 | "args": [
256 | "/c",
257 | "npx",
258 | "-y",
259 | "@upstash/context7-mcp"
260 | ],
261 | "disabled": false,
262 | "autoApprove": []
263 | }
264 | }
265 | }
266 | ```
267 |
268 | ### Переменные окружения
269 |
270 | - `DEFAULT_MINIMUM_TOKENS`: минимальное количество токенов, необходимое для получения документации (по умолчанию: 10000).
271 |
272 | Examples:
273 |
274 | ```json
275 | {
276 | "mcpServers": {
277 | "context7": {
278 | "command": "npx",
279 | "args": ["-y", "@upstash/context7-mcp"],
280 | "env": {
281 | "DEFAULT_MINIMUM_TOKENS": "10000"
282 | }
283 | }
284 | }
285 | }
286 | ```
287 |
288 | ### Доступные инструменты
289 |
290 | - `resolve-library-id`: преобразует общее название библиотеки в совместимый с Context7 идентификатор.
291 | - `libraryName` (обязательно)
292 | - `get-library-docs`: получает документацию по библиотеке по совместимому с Context7 идентификатору.
293 | - `context7CompatibleLibraryID` (обязательно)
294 | - `topic` (необязательно): фокусирует документацию на определённой теме (например, "routing", "hooks")
295 | - `tokens` (необязательно, по умолчанию 10000): максимальное число токенов в ответе. Значения ниже заданного `DEFAULT_MINIMUM_TOKENS` будут автоматически увеличены до него.
296 |
297 | ## Разработка
298 |
299 | Склонируйте проект и установите зависимости:
300 |
301 | ```bash
302 | bun i
303 | ```
304 |
305 | Сборка:
306 |
307 | ```bash
308 | bun run build
309 | ```
310 |
311 | ### Пример локальной конфигурации
312 |
313 | ```json
314 | {
315 | "mcpServers": {
316 | "context7": {
317 | "command": "npx",
318 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
319 | }
320 | }
321 | }
322 | ```
323 |
324 | ### Тестирование с помощью инспектора MCP
325 |
326 | ```bash
327 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp
328 | ```
329 |
330 | ## Решение проблем
331 |
332 | ### ERR_MODULE_NOT_FOUND
333 |
334 | Если вы видите эту ошибку, используйте `bunx` вместо `npx`.
335 |
336 | ```json
337 | {
338 | "mcpServers": {
339 | "context7": {
340 | "command": "bunx",
341 | "args": ["-y", "@upstash/context7-mcp"]
342 | }
343 | }
344 | }
345 | ```
346 |
347 | Зачастую это решает проблему с недостающими модулями, особенно в окружении, где `npx` некорректно устанавливает или разрешает библиотеки.
348 |
349 | ### Проблемы с разрешением ESM
350 |
351 | Если вы сталкиваетесь с проблемой по типу: `Error: Cannot find module 'uriTemplate.js'`, попробуйте запустить команду с флагом `--experimental-vm-modules`:
352 |
353 | ```json
354 | {
355 | "mcpServers": {
356 | "context7": {
357 | "command": "npx",
358 | "args": [
359 | "-y",
360 | "--node-options=--experimental-vm-modules",
361 | "@upstash/context7-mcp"
362 | ]
363 | }
364 | }
365 | }
366 | ```
367 |
368 | ### Проблемы с TLS/сертификатами
369 |
370 | Используйте флаг `--experimental-fetch` c `npx`, чтобы избежать ошибки, связанные с TLS:
371 |
372 | ```json
373 | {
374 | "mcpServers": {
375 | "context7": {
376 | "command": "npx",
377 | "args": [
378 | "-y",
379 | "--node-options=--experimental-fetch",
380 | "@upstash/context7-mcp"
381 | ]
382 | }
383 | }
384 | }
385 | ```
386 |
387 | ### Ошибки MCP клиента
388 |
389 | 1. Попробуйте добавить тег `@latest` в имя пакета.
390 |
391 | 2. Попробуйте использовать `bunx` как альтернативу `npx`.
392 |
393 | 3. Попробуйте использовать `deno` как замену `npx` или `bunx`.
394 |
395 | 4. Убедитесь, что используете версию Node v18 или выше, чтобы `npx` поддерживал встроенный `fetch`.
396 |
397 | ## Отказ от ответственности
398 |
399 | Проекты Context7 создаются сообществом. Мы стремимся поддерживать высокое качество, однако не можем гарантировать точность, полноту или безопасность всей документации по библиотекам. Проекты, представленные в Context7, разрабатываются и поддерживаются их авторами, а не командой Context7.
400 |
401 | Если вы столкнётесь с подозрительным, неуместным или потенциально вредоносным контентом, пожалуйста, воспользуйтесь кнопкой "Report" на странице проекта, чтобы немедленно сообщить нам. Мы внимательно относимся ко всем обращениям и оперативно проверяем помеченные материалы, чтобы обеспечить надёжность и безопасность платформы.
402 |
403 | Используя Context7, вы признаёте, что делаете это по собственному усмотрению и на свой страх и риск.
404 |
405 | ## Оставайтесь с нами на связи
406 |
407 | Будьте в курсе последних новостей на наших платформах:
408 |
409 | - 📢 Следите за нашими новостями на [X](https://x.com/contextai), чтобы быть в курсе последних новостей
410 | - 🌐 Загляните на наш [сайт](https://context7.com)
411 | - 💬 При желании присоединяйтесь к нашему [сообществу в Discord](https://upstash.com/discord)
412 |
413 | ## Context7 в СМИ
414 |
415 | - [Better Stack: "Бесплатный инструмент делает Cursor в 10 раз умнее"](https://youtu.be/52FC3qObp9E)
416 | - [Cole Medin: "Это, без сомнения, ЛУЧШИЙ MCP-сервер для AI-помощников в коде"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
417 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: Это уже AGI?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
418 | - [Julian Goldie SEO: "Context7: обновление MCP-агента"](https://www.youtube.com/watch?v=CTZm6fBYisc)
419 | - [JeredBlu: "Context 7 MCP: мгновенный доступ к документации + настройка для VS Code"](https://www.youtube.com/watch?v=-ls0D-rtET4)
420 | - [Income stream surfers: "Context7: новый MCP-сервер, который изменит кодинг с ИИ"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
421 | - [AICodeKing: "Context7 + Cline & RooCode: Этот MCP сервер делает CLINE в 100 раз ЭФФЕКТИВНЕЕ!"](https://www.youtube.com/watch?v=qZfENAPMnyo)
422 | - [Sean Kochel: "5 MCP серверов для стремительного вайб-программирования (Подключи и Работай)"](https://www.youtube.com/watch?v=LqTQi8qexJM)
423 |
424 | ## История звёзд на GitHub
425 |
426 | [](https://www.star-history.com/#upstash/context7&Date)
427 |
428 | ## Лицензия
429 |
430 | MIT
431 |
--------------------------------------------------------------------------------
/docs/README.tr.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - Herhangi Bir Prompt İçin Güncel Kod Belgeleri
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](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 |
5 | [](./docs/README.zh-CN.md) [](./docs/README.ko.md) [](./docs/README.es.md) [](./docs/README.fr.md) [-purple)](./docs/README.pt-BR.md) [](./docs/README.it.md) [](./docs/README.id-ID.md) [](./docs/README.de.md) [](./docs/README.ru.md) [](./docs/README.tr.md)
6 |
7 |
8 | ## ❌ Context7 Olmadan
9 |
10 | LLM'ler, kullandığınız kütüphaneler hakkında güncel olmayan veya genel bilgilere güvenir. Karşılaştığınız sorunlar:
11 |
12 | - ❌ Kod örnekleri eskidir ve bir yıllık eğitim verilerine dayanır
13 | - ❌ Halüsinasyon yapılan API'ler gerçekte mevcut değildir
14 | - ❌ Eski paket sürümleri için genel cevaplar alırsınız
15 |
16 | ## ✅ Context7 İle
17 |
18 | Context7 MCP, güncel ve sürüme özel belgeleri ve kod örneklerini doğrudan kaynağından çeker ve doğrudan prompt'unuza yerleştirir.
19 |
20 | Cursor'da prompt'unuza `use context7` ekleyin:
21 |
22 | ```txt
23 | Next.js ile app router kullanan basit bir proje oluştur. use context7
24 | ```
25 |
26 | ```txt
27 | PostgreSQL kimlik bilgileriyle şehir değeri "" olan satırları silmek için bir betik oluştur. use context7
28 | ```
29 |
30 | Context7, güncel kod örneklerini ve belgelerini doğrudan LLM'inizin içeriğine getirir.
31 |
32 | - 1️⃣ Prompt'unuzu doğal bir şekilde yazın
33 | - 2️⃣ LLM'e `use context7` kullanmasını söyleyin
34 | - 3️⃣ Çalışan kod cevapları alın
35 |
36 | Sekme değiştirme, var olmayan halüsinasyon API'ler, güncel olmayan kod üretimleri yok.
37 |
38 | ## 🛠️ Başlangıç
39 |
40 | ### Gereksinimler
41 |
42 | - Node.js >= v18.0.0
43 | - Cursor, Windsurf, Claude Desktop veya başka bir MCP İstemcisi
44 |
45 | ### Smithery aracılığıyla kurulum
46 |
47 | Context7 MCP Server'ı Claude Desktop için [Smithery](https://smithery.ai/server/@upstash/context7-mcp) aracılığıyla otomatik olarak kurmak için:
48 |
49 | ```bash
50 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
51 | ```
52 |
53 | ### Cursor'da Kurulum
54 |
55 | Şu yolu izleyin: `Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
56 |
57 | Aşağıdaki yapılandırmayı Cursor `~/.cursor/mcp.json` dosyanıza yapıştırmanız önerilen yaklaşımdır. Ayrıca, proje klasörünüzde `.cursor/mcp.json` oluşturarak belirli bir projeye de kurabilirsiniz. Daha fazla bilgi için [Cursor MCP belgelerine](https://docs.cursor.com/context/model-context-protocol) bakabilirsiniz.
58 |
59 | ```json
60 | {
61 | "mcpServers": {
62 | "context7": {
63 | "command": "npx",
64 | "args": ["-y", "@upstash/context7-mcp@latest"]
65 | }
66 | }
67 | }
68 | ```
69 |
70 |
71 | Alternatif: Bun Kullanın
72 |
73 | ```json
74 | {
75 | "mcpServers": {
76 | "context7": {
77 | "command": "bunx",
78 | "args": ["-y", "@upstash/context7-mcp@latest"]
79 | }
80 | }
81 | }
82 | ```
83 |
84 |
85 |
86 |
87 | Alternatif: Deno Kullanın
88 |
89 | ```json
90 | {
91 | "mcpServers": {
92 | "context7": {
93 | "command": "deno",
94 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
95 | }
96 | }
97 | }
98 | ```
99 |
100 |
101 |
102 | ### Windsurf'te Kurulum
103 |
104 | Bunu Windsurf MCP yapılandırma dosyanıza ekleyin. Daha fazla bilgi için [Windsurf MCP belgelerine](https://docs.windsurf.com/windsurf/mcp) bakabilirsiniz.
105 |
106 | ```json
107 | {
108 | "mcpServers": {
109 | "context7": {
110 | "command": "npx",
111 | "args": ["-y", "@upstash/context7-mcp@latest"]
112 | }
113 | }
114 | }
115 | ```
116 |
117 | ### VS Code'da Kurulum
118 |
119 | [
](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)
120 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%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)
121 |
122 | Bunu VS Code MCP yapılandırma dosyanıza ekleyin. Daha fazla bilgi için [VS Code MCP belgelerine](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) bakabilirsiniz.
123 |
124 | ```json
125 | {
126 | "servers": {
127 | "Context7": {
128 | "type": "stdio",
129 | "command": "npx",
130 | "args": ["-y", "@upstash/context7-mcp@latest"]
131 | }
132 | }
133 | }
134 | ```
135 |
136 | ### Zed'de Kurulum
137 |
138 | [Zed Uzantıları](https://zed.dev/extensions?query=Context7) aracılığıyla kurulabilir veya Zed `settings.json` dosyanıza ekleyebilirsiniz. Daha fazla bilgi için [Zed Context Server belgelerine](https://zed.dev/docs/assistant/context-servers) bakabilirsiniz.
139 |
140 | ```json
141 | {
142 | "context_servers": {
143 | "Context7": {
144 | "command": {
145 | "path": "npx",
146 | "args": ["-y", "@upstash/context7-mcp@latest"]
147 | },
148 | "settings": {}
149 | }
150 | }
151 | }
152 | ```
153 |
154 | ### Claude Code'da Kurulum
155 |
156 | Bu komutu çalıştırın. Daha fazla bilgi için [Claude Code MCP belgelerine](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp) bakabilirsiniz.
157 |
158 | ```sh
159 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
160 | ```
161 |
162 | ### Claude Desktop'ta Kurulum
163 |
164 | Bunu Claude Desktop `claude_desktop_config.json` dosyanıza ekleyin. Daha fazla bilgi için [Claude Desktop MCP belgelerine](https://modelcontextprotocol.io/quickstart/user) bakabilirsiniz.
165 |
166 | ```json
167 | {
168 | "mcpServers": {
169 | "Context7": {
170 | "command": "npx",
171 | "args": ["-y", "@upstash/context7-mcp@latest"]
172 | }
173 | }
174 | }
175 | ```
176 |
177 | ### Docker Kullanımı
178 |
179 | MCP sunucusunu bir Docker konteynerinde çalıştırmayı tercih ederseniz:
180 |
181 | 1. **Docker Görüntüsü Oluşturun:**
182 |
183 | Önce, proje kökünde (veya tercih ettiğiniz herhangi bir yerde) bir `Dockerfile` oluşturun:
184 |
185 |
186 | Dockerfile içeriğini görmek için tıklayın
187 |
188 | ```Dockerfile
189 | FROM node:18-alpine
190 |
191 | WORKDIR /app
192 |
193 | # En son sürümü global olarak yükleyin
194 | RUN npm install -g @upstash/context7-mcp@latest
195 |
196 | # Gerekirse varsayılan portu açın (isteğe bağlı, MCP istemci etkileşimine bağlıdır)
197 | # EXPOSE 3000
198 |
199 | # Sunucuyu çalıştırmak için varsayılan komut
200 | CMD ["context7-mcp"]
201 | ```
202 |
203 |
204 |
205 | Ardından, bir etiket (örneğin, `context7-mcp`) kullanarak görüntüyü oluşturun. **Docker Desktop'un (veya Docker daemon'un) çalıştığından emin olun.** `Dockerfile`'ı kaydettiğiniz dizinde aşağıdaki komutu çalıştırın:
206 |
207 | ```bash
208 | docker build -t context7-mcp .
209 | ```
210 |
211 | 2. **MCP İstemcinizi Yapılandırın:**
212 |
213 | MCP istemcinizin yapılandırmasını Docker komutunu kullanacak şekilde güncelleyin.
214 |
215 | *cline_mcp_settings.json için örnek:*
216 |
217 | ```json
218 | {
219 | "mcpServers": {
220 | "Сontext7": {
221 | "autoApprove": [],
222 | "disabled": false,
223 | "timeout": 60,
224 | "command": "docker",
225 | "args": ["run", "-i", "--rm", "context7-mcp"],
226 | "transportType": "stdio"
227 | }
228 | }
229 | }
230 | ```
231 |
232 | *Not: Bu bir örnek yapılandırmadır. Yapıyı uyarlamak için MCP istemcinize (Cursor, VS Code vb.) özel örneklere bakın (örneğin, `mcpServers` ve `servers` farkı). Ayrıca, `args` içindeki görüntü adının `docker build` komutu sırasında kullanılan etiketle eşleştiğinden emin olun.*
233 |
234 | ### Çevre Değişkenleri
235 |
236 | - `DEFAULT_MINIMUM_TOKENS`: Belge alımı için minimum token sayısını ayarlayın (varsayılan: 10000).
237 |
238 | Örnekler:
239 |
240 | ```json
241 | {
242 | "mcpServers": {
243 | "context7": {
244 | "command": "npx",
245 | "args": ["-y", "@upstash/context7-mcp@latest"],
246 | "env": {
247 | "DEFAULT_MINIMUM_TOKENS": "10000"
248 | }
249 | }
250 | }
251 | }
252 | ```
253 |
254 | ### Kullanılabilir Araçlar
255 |
256 | - `resolve-library-id`: Genel bir kütüphane adını Context7 uyumlu bir kütüphane ID'sine dönüştürür.
257 | - `libraryName` (gerekli)
258 | - `get-library-docs`: Context7 uyumlu bir kütüphane ID'si kullanarak bir kütüphane için belgeleri getirir.
259 | - `context7CompatibleLibraryID` (gerekli)
260 | - `topic` (isteğe bağlı): Belgeleri belirli bir konuya odaklayın (örn. "routing", "hooks")
261 | - `tokens` (isteğe bağlı, varsayılan 10000): Döndürülecek maksimum token sayısı. Yapılandırılmış `DEFAULT_MINIMUM_TOKENS` değerinden veya varsayılan 10000 değerinden düşük değerler otomatik olarak o değere yükseltilir.
262 |
263 | ## Geliştirme
264 |
265 | Projeyi klonlayın ve bağımlılıkları yükleyin:
266 |
267 | ```bash
268 | bun i
269 | ```
270 |
271 | Derleyin:
272 |
273 | ```bash
274 | bun run build
275 | ```
276 |
277 | ### Yerel Yapılandırma Örneği
278 |
279 | ```json
280 | {
281 | "mcpServers": {
282 | "context7": {
283 | "command": "npx",
284 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
285 | }
286 | }
287 | }
288 | ```
289 |
290 | ### MCP Inspector ile Test Etme
291 |
292 | ```bash
293 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
294 | ```
295 |
296 | ## Sorun Giderme
297 |
298 | ### ERR_MODULE_NOT_FOUND
299 |
300 | Bu hatayı görürseniz, `npx` yerine `bunx` kullanmayı deneyin.
301 |
302 | ```json
303 | {
304 | "mcpServers": {
305 | "context7": {
306 | "command": "bunx",
307 | "args": ["-y", "@upstash/context7-mcp@latest"]
308 | }
309 | }
310 | }
311 | ```
312 |
313 | Bu, özellikle `npx`'in paketleri düzgün şekilde yüklemediği veya çözemediği ortamlarda modül çözümleme sorunlarını genellikle çözer.
314 |
315 | ### ESM Çözümleme Sorunları
316 |
317 | `Error: Cannot find module 'uriTemplate.js'` gibi bir hatayla karşılaşırsanız, `--experimental-vm-modules` bayrağıyla çalıştırmayı deneyin:
318 |
319 | ```json
320 | {
321 | "mcpServers": {
322 | "context7": {
323 | "command": "npx",
324 | "args": [
325 | "-y",
326 | "--node-options=--experimental-vm-modules",
327 | "@upstash/context7-mcp@1.0.6"
328 | ]
329 | }
330 | }
331 | }
332 | ```
333 |
334 | ### MCP İstemci Hataları
335 |
336 | 1. Paket adından `@latest` ifadesini kaldırmayı deneyin.
337 |
338 | 2. Alternatif olarak `bunx` kullanmayı deneyin.
339 |
340 | 3. Alternatif olarak `deno` kullanmayı deneyin.
341 |
342 | 4. `npx` ile yerel fetch desteğine sahip olmak için Node v18 veya daha yüksek bir sürüm kullandığınızdan emin olun.
343 |
344 | ## Sorumluluk Reddi
345 |
346 | Context7 projeleri topluluk katkılıdır ve yüksek kaliteyi korumaya çalışsak da, tüm kütüphane belgelerinin doğruluğunu, eksiksizliğini veya güvenliğini garanti edemeyiz. Context7'de listelenen projeler, Context7 tarafından değil, ilgili sahipleri tarafından geliştirilmekte ve sürdürülmektedir. Şüpheli, uygunsuz veya potansiyel olarak zararlı içerikle karşılaşırsanız, lütfen bizi hemen bilgilendirmek için proje sayfasındaki "Bildir" düğmesini kullanın. Tüm bildirimleri ciddiye alıyoruz ve platformumuzun bütünlüğünü ve güvenliğini korumak için işaretlenen içeriği hızla inceleyeceğiz. Context7'yi kullanarak, bunu kendi takdirinizle ve riskinizle yaptığınızı kabul etmiş olursunuz.
347 |
348 | ## Context7 Medyada
349 |
350 | - [Better Stack: "Ücretsiz Araç Cursor'u 10 Kat Daha Akıllı Yapıyor"](https://youtu.be/52FC3qObp9E)
351 | - [Cole Medin: "Bu, Tartışmasız AI Kodlama Asistanları İçin EN İYİ MCP Sunucusudur"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
352 | - [Income stream surfers: "Context7 + SequentialThinking MCP'leri: Bu AGI mi?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
353 | - [Julian Goldie SEO: "Context7: Yeni MCP AI Aracı Güncellemesi"](https://www.youtube.com/watch?v=CTZm6fBYisc)
354 | - [JeredBlu: "Context 7 MCP: Belgeleri Anında Alın + VS Code Kurulumu"](https://www.youtube.com/watch?v=-ls0D-rtET4)
355 | - [Income stream surfers: "Context7: AI Kodlamayı DEĞİŞTİRECEK Yeni MCP Sunucusu"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
356 | - [AICodeKing: "Context7 + Cline & RooCode: Bu MCP Sunucusu CLINE'ı 100 KAT DAHA ETKİLİ YAPIYOR!"](https://www.youtube.com/watch?v=qZfENAPMnyo)
357 | - [Sean Kochel: "Vibe Kodlama İhtişamı İçin 5 MCP Sunucusu (Tak ve Çalıştır)"](https://www.youtube.com/watch?v=LqTQi8qexJM)
358 |
359 | ## Yıldız Geçmişi
360 |
361 | [](https://www.star-history.com/#upstash/context7&Date)
362 |
363 | ## Lisans
364 |
365 | MIT
--------------------------------------------------------------------------------
/docs/README.zh-CN.md:
--------------------------------------------------------------------------------
1 | # Context7 MCP - 为所有Prompt获取最新文档
2 |
3 | [](https://context7.com) [](https://smithery.ai/server/@upstash/context7-mcp) [
](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
4 |
5 | ## ❌ 不使用Context7
6 |
7 | 大语言模型(LLM)可能依赖过时或通用的库信息。你可能会遇到:
8 |
9 | - ❌ 代码示例已过时,或基于一年前的训练数据
10 | - ❌ 幻觉产生的API根本不存在
11 | - ❌ 针对旧版本包的通用回答
12 |
13 | ## ✅ 使用Context7
14 |
15 | Context7 MCP直接从源头获取最新的、特定版本的文档和代码示例 — 并将它们直接放入你的提示中。
16 |
17 | 在Cursor中添加`使用 context7`到你的提示:
18 |
19 | ```txt
20 | 创建一个使用app router的基本Next.js项目。使用 context7
21 | ```
22 |
23 | ```txt
24 | 创建一个脚本,删除PostgreSQL数据库中city字段为""的行。使用 context7
25 | ```
26 |
27 | Context7将最新的代码示例和文档直接获取到你的LLM上下文中。
28 |
29 | - 1️⃣ 按照往常,自然地编写你的提示
30 | - 2️⃣ 告诉LLM`使用 context7`
31 | - 3️⃣ 获取可用的代码回复
32 |
33 | 无需在标签间切换,不存在幻觉API,不会生成过时的代码。
34 |
35 | ## 🛠️ 开始使用
36 |
37 | ### 要求
38 |
39 | - Node.js >= v18.0.0
40 | - Cursor, Windsurf, Claude Desktop或其他MCP客户端
41 |
42 | ### 通过Smithery安装
43 |
44 | 要通过[Smithery](https://smithery.ai/server/@upstash/context7-mcp)自动安装Context7 MCP Server for Claude Desktop:
45 |
46 | ```bash
47 | npx -y @smithery/cli install @upstash/context7-mcp --client claude
48 | ```
49 |
50 | ### 在Cursor中安装
51 |
52 | 前往:`Settings` -> `Cursor Settings` -> `MCP` -> `Add new global MCP server`
53 |
54 | 推荐的方法是将以下配置粘贴到你的Cursor `~/.cursor/mcp.json`文件中。更多信息请参见[Cursor MCP文档](https://docs.cursor.com/context/model-context-protocol)。
55 |
56 | ```json
57 | {
58 | "mcpServers": {
59 | "context7": {
60 | "command": "npx",
61 | "args": ["-y", "@upstash/context7-mcp@latest"]
62 | }
63 | }
64 | }
65 | ```
66 |
67 |
68 | 替代方案:使用Bun
69 |
70 | ```json
71 | {
72 | "mcpServers": {
73 | "context7": {
74 | "command": "bunx",
75 | "args": ["-y", "@upstash/context7-mcp@latest"]
76 | }
77 | }
78 | }
79 | ```
80 |
81 |
82 |
83 |
84 | 替代方案:使用Deno
85 |
86 | ```json
87 | {
88 | "mcpServers": {
89 | "context7": {
90 | "command": "deno",
91 | "args": ["run", "--allow-net", "npm:@upstash/context7-mcp"]
92 | }
93 | }
94 | }
95 | ```
96 |
97 |
98 |
99 | ### 在Windsurf中安装
100 |
101 | 将此内容添加到你的Windsurf MCP配置文件中。更多信息请参见[Windsurf MCP文档](https://docs.windsurf.com/windsurf/mcp)。
102 |
103 | ```json
104 | {
105 | "mcpServers": {
106 | "context7": {
107 | "command": "npx",
108 | "args": ["-y", "@upstash/context7-mcp@latest"]
109 | }
110 | }
111 | }
112 | ```
113 |
114 | ### 在VSCode中安装
115 |
116 | [
](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
117 | [
](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522context7%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522%2540upstash%252Fcontext7-mcp%2540latest%2522%255D%257D%257D)
118 |
119 | 将此内容添加到你的VSCode MCP配置文件中。更多信息请参见[VSCode MCP文档](https://code.visualstudio.com/docs/copilot/chat/mcp-servers)。
120 |
121 | ```json
122 | {
123 | "servers": {
124 | "Context7": {
125 | "type": "stdio",
126 | "command": "npx",
127 | "args": ["-y", "@upstash/context7-mcp@latest"]
128 | }
129 | }
130 | }
131 | ```
132 |
133 | ### 在Zed中安装
134 |
135 | 可以通过[Zed扩展](https://zed.dev/extensions?query=Context7)安装,或者你可以将以下内容添加到你的Zed `settings.json`文件中。更多信息请参见[Zed Context Server文档](https://zed.dev/docs/assistant/context-servers)。
136 |
137 | ```json
138 | {
139 | "context_servers": {
140 | "Context7": {
141 | "command": {
142 | "path": "npx",
143 | "args": ["-y", "@upstash/context7-mcp@latest"]
144 | },
145 | "settings": {}
146 | }
147 | }
148 | }
149 | ```
150 |
151 | ### 在Claude Code中安装
152 |
153 | 运行此命令。更多信息请参见[Claude Code MCP文档](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/tutorials#set-up-model-context-protocol-mcp)。
154 |
155 | ```sh
156 | claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
157 | ```
158 |
159 | ### 在Claude Desktop中安装
160 |
161 | 将此内容添加到你的Claude Desktop `claude_desktop_config.json`文件中。更多信息请参见[Claude Desktop MCP文档](https://modelcontextprotocol.io/quickstart/user)。
162 |
163 | ```json
164 | {
165 | "mcpServers": {
166 | "Context7": {
167 | "command": "npx",
168 | "args": ["-y", "@upstash/context7-mcp@latest"]
169 | }
170 | }
171 | }
172 | ```
173 |
174 | ### 使用Docker(容器部署)
175 |
176 | 如果你希望使用Docker容器运行MCP服务器:
177 |
178 | 1. **构建Docker镜像:**
179 |
180 | **确保Docker Desktop(或Docker守护进程)正在运行。** 在项目根目录运行:
181 |
182 | ```bash
183 | docker build -t context7-mcp .
184 | ```
185 |
186 | 2. **配置MCP客户端:**
187 |
188 | 更新MCP客户端配置以使用Docker命令。
189 |
190 | *cline_mcp_settings.json配置示例:*
191 |
192 | ```json
193 | {
194 | "mcpServers": {
195 | "Сontext7": {
196 | "autoApprove": [],
197 | "disabled": false,
198 | "timeout": 60,
199 | "command": "docker",
200 | "args": ["run", "-i", "--rm", "context7-mcp"],
201 | "transportType": "stdio"
202 | }
203 | }
204 | }
205 | ```
206 | *注意事项:*
207 |
208 | - 此为示例配置。请参考前面README中针对具体MCP客户端(如Cursor、VS Code等)的示例来调整结构(如`mcpServers`与`servers`)。同时确保`args`中的镜像名称与`docker build`命令使用的标签一致。
209 | - 当前Cursor版本(0.49.5), 请不要使用本方式启动MCP server,详情:[Cursor官方说明](https://docs.cursor.com/context/model-context-protocol#remote-development)
210 |
211 |
212 | ### 在Windows上安装
213 | 在windows上的配置相对于linux或macos来说有些许不同,(*示例使用的`Cline`*), 其它编辑器同理, 参考`command`和`args`的配置即可
214 | ```json
215 | {
216 | "mcpServers": {
217 | "github.com/upstash/context7-mcp": {
218 | "command": "cmd",
219 | "args": [
220 | "/c",
221 | "npx",
222 | "-y",
223 | "@upstash/context7-mcp@latest"
224 | ],
225 | "disabled": false,
226 | "autoApprove": []
227 | }
228 | }
229 | }
230 | ```
231 |
232 | ### 可用工具
233 |
234 | - `resolve-library-id`: 将通用库名称解析为Context7兼容的库ID。
235 | - `libraryName` (必需)
236 | - `get-library-docs`: 使用Context7兼容的库ID获取库的文档。
237 | - `context7CompatibleLibraryID` (必需)
238 | - `topic` (可选): 将文档集中在特定主题上(例如"routing"、"hooks")
239 | - `tokens` (可选,默认10000): 返回的最大令牌数。小于10000的值会自动增加到10000。
240 |
241 | ## 开发
242 |
243 | 克隆项目并安装依赖:
244 |
245 | ```bash
246 | bun i
247 | ```
248 |
249 | 构建:
250 |
251 | ```bash
252 | bun run build
253 | ```
254 |
255 | ### 本地配置示例
256 |
257 | ```json
258 | {
259 | "mcpServers": {
260 | "context7": {
261 | "command": "npx",
262 | "args": ["tsx", "/path/to/folder/context7-mcp/src/index.ts"]
263 | }
264 | }
265 | }
266 | ```
267 |
268 | ### 使用MCP Inspector测试
269 |
270 | ```bash
271 | npx -y @modelcontextprotocol/inspector npx @upstash/context7-mcp@latest
272 | ```
273 |
274 |
275 | ## 故障排除
276 |
277 | ### ERR_MODULE_NOT_FOUND
278 |
279 | 如果你看到这个错误,请尝试使用`bunx`而不是`npx`。
280 |
281 | ```json
282 | {
283 | "mcpServers": {
284 | "context7": {
285 | "command": "bunx",
286 | "args": ["-y", "@upstash/context7-mcp@latest"]
287 | }
288 | }
289 | }
290 | ```
291 |
292 | 这通常可以解决模块解析问题,特别是在`npx`无法正确安装或解析包的环境中。
293 |
294 | ### MCP客户端错误
295 |
296 | 1. 尝试从包名中删除`@latest`。
297 |
298 | 2. 尝试使用`bunx`作为替代方案。
299 |
300 | 3. 尝试使用`deno`作为替代方案。
301 |
302 | 4. 确保你使用的是Node v18或更高版本,以便使用`npx`时获得原生fetch支持。
303 |
304 | ## Context7媒体报道
305 |
306 | - [Better Stack: "免费工具让Cursor变得更智能10倍"](https://youtu.be/52FC3qObp9E)
307 | - [Cole Medin: "这绝对是AI编码助手的最佳MCP服务器"](https://www.youtube.com/watch?v=G7gK8H6u7Rs)
308 | - [Income stream surfers: "Context7 + SequentialThinking MCPs: 这是AGI吗?"](https://www.youtube.com/watch?v=-ggvzyLpK6o)
309 | - [Julian Goldie SEO: "Context7: 新的MCP AI代理更新"](https://www.youtube.com/watch?v=CTZm6fBYisc)
310 | - [JeredBlu: "Context 7 MCP: 即时获取文档 + VS Code设置"](https://www.youtube.com/watch?v=-ls0D-rtET4)
311 | - [Income stream surfers: "Context7: 将改变AI编码的新MCP服务器"](https://www.youtube.com/watch?v=PS-2Azb-C3M)
312 |
313 | ## Star历史
314 |
315 | [](https://www.star-history.com/#upstash/context7&Date)
316 |
317 | ## 许可证
318 |
319 | MIT
320 |
--------------------------------------------------------------------------------
/docs/adding-projects.md:
--------------------------------------------------------------------------------
1 | # Adding Projects to Context7
2 |
3 | Context7 allows you to add your favorite libraries and frameworks to help developers get up-to-date documentation directly in their coding environment.
4 |
5 | ## Quick Submission
6 |
7 | The easiest way to add a library is through our web interface:
8 |
9 | **[Submit a Library →](https://context7.com/add-library?tab=github)**
10 |
11 | Simply provide the GitHub repository URL and Context7 will automatically parse and index the project's documentation.
12 |
13 | ## Advanced Configuration with `context7.json`
14 |
15 | For more control over how Context7 parses and presents your library, you can add a `context7.json` file to the root of your repository. This file works similar to `robots.txt` and tells Context7 how to handle your project.
16 |
17 | ### Configuration Fields
18 |
19 | Here's an example `context7.json` file with all available options:
20 |
21 | ```json
22 | {
23 | "$schema": "https://context7.com/schema/context7.json",
24 | "projectTitle": "Upstash Ratelimit",
25 | "description": "Ratelimiting library based on Upstash Redis",
26 | "folders": [],
27 | "excludeFolders": ["src"],
28 | "excludeFiles": [],
29 | "rules": ["Use Upstash Redis as a database", "Use single region set up"],
30 | "previousVersions": [
31 | {
32 | "tag": "v1.2.1",
33 | "title": "version 1.2.1"
34 | }
35 | ]
36 | }
37 | ```
38 |
39 | > **💡 Pro Tip**: Including the `$schema` field enables autocomplete, validation, and helpful tooltips in modern code editors like VS Code, making it easier to create and maintain your configuration.
40 |
41 | #### Field Descriptions
42 |
43 | - **`projectTitle`** (string): The display name for your project in Context7. This overrides the default repository name.
44 |
45 | - **`description`** (string): A brief description of what your library does. This helps coding agents understand the purpose of your project.
46 |
47 | - **`folders`** (array): Specific folder paths to include when parsing documentation. If empty, Context7 will scan the entire repository for relevant documentation files. Supports regex patterns and requires full paths.
48 |
49 | - **`excludeFolders`** (array): Folder paths to exclude from documentation parsing. Useful for excluding source code directories, build folders, or other non-documentation content. Supports regex patterns and requires full paths.
50 |
51 | - **`excludeFiles`** (array): Specific file names to exclude from documentation parsing. Only include the filename (not the path). Useful for excluding files like `CHANGELOG.md`, license files, or other non-documentation content that might not be relevant for coding agents. Regex patterns are not supported.
52 |
53 | - **`rules`** (array): Best practices or important guidelines that coding agents should follow when using your library. These appear as recommendations in the documentation context provided to coding agents.
54 |
55 | - **`previousVersions`** (array): Information about previous versions of your library that should also be available in Context7.
56 | - **`tag`**: The Git tag or version identifier
57 | - **`title`**: Human-readable version name
58 |
59 | ### Default Exclusions
60 |
61 | If you don't specify `excludeFiles` or `excludeFolders` in your `context7.json`, Context7 uses these default patterns:
62 |
63 | #### Default Excluded Files
64 |
65 | ```
66 | CHANGELOG.md, changelog.md, CHANGELOG.mdx, changelog.mdx
67 | LICENSE.md, license.md
68 | CODE_OF_CONDUCT.md, code_of_conduct.md
69 | ```
70 |
71 | #### Default Excluded Folders
72 |
73 | ```
74 | *archive*, *archived*, old, docs/old, *deprecated*, *legacy*
75 | *previous*, *outdated*, *superseded*
76 | i18n/zh*, i18n/es*, i18n/fr*, i18n/de*, i18n/ja*, i18n/ko*
77 | i18n/ru*, i18n/pt*, i18n/it*, i18n/ar*, i18n/hi*, i18n/tr*
78 | i18n/nl*, i18n/pl*, i18n/sv*, i18n/vi*, i18n/th*
79 | zh-cn, zh-tw, zh-hk, zh-mo, zh-sg
80 | ```
81 |
82 | These defaults help ensure that coding agents receive relevant, current documentation without outdated or non-technical content.
83 |
84 | ## Who Can Add Configuration?
85 |
86 | - **Library authors**: Add `context7.json` directly to your repository
87 | - **Contributors**: Submit pull requests to add or update the configuration
88 | - **Community members**: Propose improvements to how popular libraries are parsed
89 |
90 | ## Best Practices
91 |
92 | 1. **Keep descriptions concise**: Aim for one clear sentence that explains your library's purpose to coding agents
93 | 2. **Exclude irrelevant folders**: Use `excludeFolders` to avoid indexing source code, tests, or build artifacts
94 | 3. **Add helpful rules**: Include common gotchas or best practices that coding agents should know when generating code
95 | 4. **Maintain version history**: Keep important previous versions accessible for projects that need older APIs
96 |
97 | ## Adding a Version
98 |
99 | To add a new version to your existing library:
100 |
101 | 1. **Add version to the `context7.json` file**: Update the `previousVersions` array with your new version:
102 |
103 | ```json
104 | "previousVersions": [
105 | {
106 | "tag": "v2.0.0",
107 | "title": "version 2.0.0"
108 | }
109 | ]
110 | ```
111 |
112 | > **Note**: The `tag` value must exactly match an existing Git tag in your GitHub repository.
113 |
114 | 2. **Refresh your library**: Go to your library page on Context7 and trigger a refresh to index the new version.
115 |
116 | ## Need Help?
117 |
118 | If you encounter issues or need assistance adding your project, please [report an issue](https://context7.com/add-library?tab=github) or reach out to our community.
119 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import tseslint from "typescript-eslint";
2 | import eslintPluginPrettier from "eslint-plugin-prettier";
3 |
4 | export default tseslint.config({
5 | // Base ESLint configuration
6 | ignores: ["node_modules/**", "build/**", "dist/**", ".git/**", ".github/**"],
7 | languageOptions: {
8 | ecmaVersion: 2020,
9 | sourceType: "module",
10 | parser: tseslint.parser,
11 | parserOptions: {},
12 | globals: {
13 | // Add Node.js globals
14 | process: "readonly",
15 | require: "readonly",
16 | module: "writable",
17 | console: "readonly",
18 | },
19 | },
20 | // Settings for all files
21 | linterOptions: {
22 | reportUnusedDisableDirectives: true,
23 | },
24 | // Apply ESLint recommended rules
25 | extends: [tseslint.configs.recommended],
26 | plugins: {
27 | prettier: eslintPluginPrettier,
28 | },
29 | rules: {
30 | // TypeScript rules
31 | "@typescript-eslint/explicit-module-boundary-types": "off",
32 | "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
33 | "@typescript-eslint/no-explicit-any": "warn",
34 | // Prettier integration
35 | "prettier/prettier": "error",
36 | },
37 | });
38 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@upstash/context7-mcp",
3 | "version": "1.0.0",
4 | "description": "MCP server for Context7",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1",
7 | "build": "tsc && chmod 755 dist/index.js",
8 | "format": "prettier --write .",
9 | "lint": "eslint \"**/*.{js,ts,tsx}\" --fix",
10 | "start": "MCP_TRANSPORT=http node dist/index.js"
11 | },
12 | "repository": {
13 | "type": "git",
14 | "url": "git+https://github.com/upstash/context7.git"
15 | },
16 | "keywords": [
17 | "modelcontextprotocol",
18 | "mcp",
19 | "context7"
20 | ],
21 | "author": "abdush",
22 | "license": "MIT",
23 | "type": "module",
24 | "bin": {
25 | "context7-mcp": "dist/index.js"
26 | },
27 | "files": [
28 | "dist"
29 | ],
30 | "bugs": {
31 | "url": "https://github.com/upstash/context7/issues"
32 | },
33 | "homepage": "https://github.com/upstash/context7#readme",
34 | "dependencies": {
35 | "@modelcontextprotocol/sdk": "^1.12.0",
36 | "dotenv": "^16.5.0",
37 | "zod": "^3.24.2"
38 | },
39 | "devDependencies": {
40 | "@types/node": "^22.13.14",
41 | "@typescript-eslint/eslint-plugin": "^8.28.0",
42 | "@typescript-eslint/parser": "^8.28.0",
43 | "eslint": "^9.23.0",
44 | "eslint-config-prettier": "^10.1.1",
45 | "eslint-plugin-prettier": "^5.2.5",
46 | "prettier": "^3.5.3",
47 | "typescript": "^5.8.2",
48 | "typescript-eslint": "^8.28.0"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/prettier.config.mjs:
--------------------------------------------------------------------------------
1 | /**
2 | * @type {import('prettier').Config}
3 | */
4 | const config = {
5 | endOfLine: "lf",
6 | singleQuote: false,
7 | tabWidth: 2,
8 | trailingComma: "es5",
9 | printWidth: 100,
10 | arrowParens: "always",
11 | };
12 |
13 | export default config;
14 |
--------------------------------------------------------------------------------
/schema/context7.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema#",
3 | "$id": "https://context7.com/schema/context7.json",
4 | "title": "Context7 Configuration Schema",
5 | "description": "Configuration file for Context7 project parsing and documentation generation",
6 | "type": "object",
7 | "properties": {
8 | "projectTitle": {
9 | "type": "string",
10 | "description": "The display name for your project in Context7. This overrides the default repository name.",
11 | "minLength": 1,
12 | "maxLength": 100,
13 | "examples": ["Upstash Ratelimit", "Next.js", "React Query"]
14 | },
15 | "description": {
16 | "type": "string",
17 | "description": "A brief description of what your library does. This helps coding agents understand the purpose of your project.",
18 | "minLength": 10,
19 | "maxLength": 200,
20 | "examples": [
21 | "Ratelimiting library based on Upstash Redis",
22 | "The React Framework for Production",
23 | "Powerful data synchronization for React"
24 | ]
25 | },
26 | "folders": {
27 | "type": "array",
28 | "description": "Specific folder paths to include when parsing documentation. If empty, Context7 will scan the entire repository. Supports regex patterns and requires full paths.",
29 | "items": {
30 | "type": "string",
31 | "minLength": 1
32 | },
33 | "uniqueItems": true,
34 | "default": [],
35 | "examples": [
36 | ["docs", "guides"],
37 | ["documentation/**"],
38 | ["api-reference", "tutorials/*"]
39 | ]
40 | },
41 | "excludeFolders": {
42 | "type": "array",
43 | "description": "Folder paths to exclude from documentation parsing. Supports regex patterns and requires full paths.",
44 | "items": {
45 | "type": "string",
46 | "minLength": 1
47 | },
48 | "uniqueItems": true,
49 | "default": [],
50 | "examples": [
51 | ["src", "build", "node_modules"],
52 | ["**/test/**", "**/tests/**"],
53 | ["legacy/*", "archive"]
54 | ]
55 | },
56 | "excludeFiles": {
57 | "type": "array",
58 | "description": "Specific file names to exclude from documentation parsing. Only include the filename (not the path). Regex patterns are not supported.",
59 | "items": {
60 | "type": "string",
61 | "minLength": 1,
62 | "pattern": "^[^/\\\\]+$"
63 | },
64 | "uniqueItems": true,
65 | "default": [],
66 | "examples": [
67 | ["CHANGELOG.md", "LICENSE"],
68 | ["README-dev.md", "CONTRIBUTING.md"],
69 | ["package.json", "tsconfig.json"]
70 | ]
71 | },
72 | "rules": {
73 | "type": "array",
74 | "description": "Best practices or important guidelines that coding agents should follow when using your library. These appear as recommendations in the documentation context.",
75 | "items": {
76 | "type": "string",
77 | "minLength": 5,
78 | "maxLength": 200
79 | },
80 | "default": [],
81 | "examples": [
82 | ["Always use TypeScript for better type safety"],
83 | ["Use Upstash Redis as a database", "Use single region set up"],
84 | ["Import components from the main package", "Follow the naming conventions"]
85 | ]
86 | },
87 | "previousVersions": {
88 | "type": "array",
89 | "description": "Information about previous versions of your library that should also be available in Context7.",
90 | "items": {
91 | "type": "object",
92 | "properties": {
93 | "tag": {
94 | "type": "string",
95 | "description": "The Git tag or version identifier",
96 | "pattern": "^v?\\d+\\.\\d+\\.\\d+",
97 | "examples": ["v1.2.1", "2.0.0", "v3.1.0-beta.1"]
98 | },
99 | "title": {
100 | "type": "string",
101 | "description": "Human-readable version name",
102 | "minLength": 1,
103 | "maxLength": 50,
104 | "examples": ["version 1.2.1", "Legacy Version", "Beta Release"]
105 | }
106 | },
107 | "required": ["tag", "title"],
108 | "additionalProperties": false
109 | },
110 | "default": []
111 | }
112 | },
113 | "additionalProperties": false,
114 | "examples": [
115 | {
116 | "projectTitle": "Upstash Ratelimit",
117 | "description": "Ratelimiting library based on Upstash Redis",
118 | "folders": [],
119 | "excludeFolders": ["src"],
120 | "excludeFiles": [],
121 | "rules": ["Use Upstash Redis as a database", "Use single region set up"],
122 | "previousVersions": [
123 | {
124 | "tag": "v1.2.1",
125 | "title": "version 1.2.1"
126 | }
127 | ]
128 | }
129 | ]
130 | }
--------------------------------------------------------------------------------
/smithery.yaml:
--------------------------------------------------------------------------------
1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml
2 |
3 | startCommand:
4 | type: http
5 | configSchema:
6 | # JSON Schema defining the configuration options for the MCP.
7 | type: object
8 | description: No configuration required
9 | exampleConfig: {}
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5 | import { z } from "zod";
6 | import { searchLibraries, fetchLibraryDocumentation } from "./lib/api.js";
7 | import { formatSearchResults } from "./lib/utils.js";
8 | import dotenv from "dotenv";
9 | import { createServer } from "http";
10 | import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
11 | import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
12 | import { parse } from "url";
13 |
14 | // Load environment variables from .env file if present
15 | dotenv.config();
16 |
17 | // Get DEFAULT_MINIMUM_TOKENS from environment variable or use default
18 | let DEFAULT_MINIMUM_TOKENS = 10000;
19 | if (process.env.DEFAULT_MINIMUM_TOKENS) {
20 | const parsedValue = parseInt(process.env.DEFAULT_MINIMUM_TOKENS, 10);
21 | if (!isNaN(parsedValue) && parsedValue > 0) {
22 | DEFAULT_MINIMUM_TOKENS = parsedValue;
23 | } else {
24 | console.warn(
25 | `Warning: Invalid DEFAULT_MINIMUM_TOKENS value provided in environment variable. Using default value of 10000`
26 | );
27 | }
28 | }
29 |
30 | // Store SSE transports by session ID
31 | const sseTransports: Record = {};
32 |
33 | // Function to create a new server instance with all tools registered
34 | function createServerInstance() {
35 | const server = new McpServer({
36 | name: "Context7",
37 | description: "Retrieves up-to-date documentation and code examples for any library.",
38 | version: "1.0.13",
39 | capabilities: {
40 | resources: {},
41 | tools: {},
42 | },
43 | });
44 |
45 | // Register Context7 tools
46 | server.tool(
47 | "resolve-library-id",
48 | `Resolves a package/product name to a Context7-compatible library ID and returns a list of matching libraries.
49 |
50 | 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.
51 |
52 | Selection Process:
53 | 1. Analyze the query to understand what library/package the user is looking for
54 | 2. Return the most relevant match based on:
55 | - Name similarity to the query (exact matches prioritized)
56 | - Description relevance to the query's intent
57 | - Documentation coverage (prioritize libraries with higher Code Snippet counts)
58 | - Trust score (consider libraries with scores of 7-10 more authoritative)
59 |
60 | Response Format:
61 | - Return the selected library ID in a clearly marked section
62 | - Provide a brief explanation for why this library was chosen
63 | - If multiple good matches exist, acknowledge this but proceed with the most relevant one
64 | - If no good matches exist, clearly state this and suggest query refinements
65 |
66 | For ambiguous queries, request clarification before proceeding with a best-guess match.`,
67 | {
68 | libraryName: z
69 | .string()
70 | .describe("Library name to search for and retrieve a Context7-compatible library ID."),
71 | },
72 | async ({ libraryName }) => {
73 | const searchResponse = await searchLibraries(libraryName);
74 |
75 | if (!searchResponse || !searchResponse.results) {
76 | return {
77 | content: [
78 | {
79 | type: "text",
80 | text: "Failed to retrieve library documentation data from Context7",
81 | },
82 | ],
83 | };
84 | }
85 |
86 | if (searchResponse.results.length === 0) {
87 | return {
88 | content: [
89 | {
90 | type: "text",
91 | text: "No documentation libraries available",
92 | },
93 | ],
94 | };
95 | }
96 |
97 | const resultsText = formatSearchResults(searchResponse);
98 |
99 | return {
100 | content: [
101 | {
102 | type: "text",
103 | text: `Available Libraries (top matches):
104 |
105 | Each result includes:
106 | - Library ID: Context7-compatible identifier (format: /org/project)
107 | - Name: Library or package name
108 | - Description: Short summary
109 | - Code Snippets: Number of available code examples
110 | - Trust Score: Authority indicator
111 | - Versions: List of versions if available. Use one of those versions if and only if the user explicitly provides a version in their query.
112 |
113 | For best results, select libraries based on name match, trust score, snippet coverage, and relevance to your use case.
114 |
115 | ----------
116 |
117 | ${resultsText}`,
118 | },
119 | ],
120 | };
121 | }
122 | );
123 |
124 | server.tool(
125 | "get-library-docs",
126 | "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.",
127 | {
128 | context7CompatibleLibraryID: z
129 | .string()
130 | .describe(
131 | "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'."
132 | ),
133 | topic: z
134 | .string()
135 | .optional()
136 | .describe("Topic to focus documentation on (e.g., 'hooks', 'routing')."),
137 | tokens: z
138 | .preprocess((val) => (typeof val === "string" ? Number(val) : val), z.number())
139 | .transform((val) => (val < DEFAULT_MINIMUM_TOKENS ? DEFAULT_MINIMUM_TOKENS : val))
140 | .optional()
141 | .describe(
142 | `Maximum number of tokens of documentation to retrieve (default: ${DEFAULT_MINIMUM_TOKENS}). Higher values provide more context but consume more tokens.`
143 | ),
144 | },
145 | async ({ context7CompatibleLibraryID, tokens = DEFAULT_MINIMUM_TOKENS, topic = "" }) => {
146 | const documentationText = await fetchLibraryDocumentation(context7CompatibleLibraryID, {
147 | tokens,
148 | topic,
149 | });
150 |
151 | if (!documentationText) {
152 | return {
153 | content: [
154 | {
155 | type: "text",
156 | text: "Documentation not found or not finalized for this library. This might have happened because you used an invalid Context7-compatible library ID. To get a valid Context7-compatible library ID, use the 'resolve-library-id' with the package name you wish to retrieve documentation for.",
157 | },
158 | ],
159 | };
160 | }
161 |
162 | return {
163 | content: [
164 | {
165 | type: "text",
166 | text: documentationText,
167 | },
168 | ],
169 | };
170 | }
171 | );
172 |
173 | return server;
174 | }
175 |
176 | async function main() {
177 | const transportType = process.env.MCP_TRANSPORT || "stdio";
178 |
179 | if (transportType === "http" || transportType === "sse") {
180 | // Get initial port from environment or use default
181 | const initialPort = process.env.PORT ? parseInt(process.env.PORT, 10) : 3000;
182 | // Keep track of which port we end up using
183 | let actualPort = initialPort;
184 | const httpServer = createServer(async (req, res) => {
185 | const url = parse(req.url || "").pathname;
186 |
187 | // Set CORS headers for all responses
188 | res.setHeader("Access-Control-Allow-Origin", "*");
189 | res.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,DELETE");
190 | res.setHeader("Access-Control-Allow-Headers", "Content-Type, MCP-Session-Id, mcp-session-id");
191 |
192 | // Handle preflight OPTIONS requests
193 | if (req.method === "OPTIONS") {
194 | res.writeHead(200);
195 | res.end();
196 | return;
197 | }
198 |
199 | try {
200 | // Create new server instance for each request
201 | const requestServer = createServerInstance();
202 |
203 | if (url === "/mcp") {
204 | const transport = new StreamableHTTPServerTransport({
205 | sessionIdGenerator: undefined,
206 | });
207 | await requestServer.connect(transport);
208 | await transport.handleRequest(req, res);
209 | } else if (url === "/sse" && req.method === "GET") {
210 | // Create new SSE transport for GET request
211 | const sseTransport = new SSEServerTransport("/messages", res);
212 | // Store the transport by session ID
213 | sseTransports[sseTransport.sessionId] = sseTransport;
214 | // Clean up transport when connection closes
215 | res.on("close", () => {
216 | delete sseTransports[sseTransport.sessionId];
217 | });
218 | await requestServer.connect(sseTransport);
219 | } else if (url === "/messages" && req.method === "POST") {
220 | // Get session ID from query parameters
221 | const parsedUrl = parse(req.url || "", true);
222 | const sessionId = parsedUrl.query.sessionId as string;
223 |
224 | if (!sessionId) {
225 | res.writeHead(400);
226 | res.end("Missing sessionId parameter");
227 | return;
228 | }
229 |
230 | // Get existing transport for this session
231 | const sseTransport = sseTransports[sessionId];
232 | if (!sseTransport) {
233 | res.writeHead(400);
234 | res.end(`No transport found for sessionId: ${sessionId}`);
235 | return;
236 | }
237 |
238 | // Handle the POST message with the existing transport
239 | await sseTransport.handlePostMessage(req, res);
240 | } else if (url === "/ping") {
241 | res.writeHead(200, { "Content-Type": "text/plain" });
242 | res.end("pong");
243 | } else {
244 | res.writeHead(404);
245 | res.end("Not found");
246 | }
247 | } catch (error) {
248 | console.error("Error handling request:", error);
249 | if (!res.headersSent) {
250 | res.writeHead(500);
251 | res.end("Internal Server Error");
252 | }
253 | }
254 | });
255 |
256 | // Function to attempt server listen with port fallback
257 | const startServer = (port: number, maxAttempts = 10) => {
258 | httpServer.once("error", (err: NodeJS.ErrnoException) => {
259 | if (err.code === "EADDRINUSE" && port < initialPort + maxAttempts) {
260 | console.warn(`Port ${port} is in use, trying port ${port + 1}...`);
261 | startServer(port + 1, maxAttempts);
262 | } else {
263 | console.error(`Failed to start server: ${err.message}`);
264 | process.exit(1);
265 | }
266 | });
267 |
268 | httpServer.listen(port, () => {
269 | actualPort = port;
270 | console.error(
271 | `Context7 Documentation MCP Server running on ${transportType.toUpperCase()} at http://localhost:${actualPort}/mcp and legacy SSE at /sse`
272 | );
273 | });
274 | };
275 |
276 | // Start the server with initial port
277 | startServer(initialPort);
278 | } else {
279 | // Stdio transport - this is already stateless by nature
280 | const server = createServerInstance();
281 | const transport = new StdioServerTransport();
282 | await server.connect(transport);
283 | console.error("Context7 Documentation MCP Server running on stdio");
284 | }
285 | }
286 |
287 | main().catch((error) => {
288 | console.error("Fatal error in main():", error);
289 | process.exit(1);
290 | });
291 |
--------------------------------------------------------------------------------
/src/lib/api.ts:
--------------------------------------------------------------------------------
1 | import { SearchResponse } from "./types.js";
2 |
3 | const CONTEXT7_API_BASE_URL = "https://context7.com/api";
4 | const DEFAULT_TYPE = "txt";
5 |
6 | /**
7 | * Searches for libraries matching the given query
8 | * @param query The search query
9 | * @returns Search results or null if the request fails
10 | */
11 | export async function searchLibraries(query: string): Promise {
12 | try {
13 | const url = new URL(`${CONTEXT7_API_BASE_URL}/v1/search`);
14 | url.searchParams.set("query", query);
15 | const response = await fetch(url);
16 | if (!response.ok) {
17 | console.error(`Failed to search libraries: ${response.status}`);
18 | return null;
19 | }
20 | return await response.json();
21 | } catch (error) {
22 | console.error("Error searching libraries:", error);
23 | return null;
24 | }
25 | }
26 |
27 | /**
28 | * Fetches documentation context for a specific library
29 | * @param libraryId The library ID to fetch documentation for
30 | * @param options Options for the request
31 | * @returns The documentation text or null if the request fails
32 | */
33 | export async function fetchLibraryDocumentation(
34 | libraryId: string,
35 | options: {
36 | tokens?: number;
37 | topic?: string;
38 | } = {}
39 | ): Promise {
40 | try {
41 | if (libraryId.startsWith("/")) {
42 | libraryId = libraryId.slice(1);
43 | }
44 | const url = new URL(`${CONTEXT7_API_BASE_URL}/v1/${libraryId}`);
45 | if (options.tokens) url.searchParams.set("tokens", options.tokens.toString());
46 | if (options.topic) url.searchParams.set("topic", options.topic);
47 | url.searchParams.set("type", DEFAULT_TYPE);
48 | const response = await fetch(url, {
49 | headers: {
50 | "X-Context7-Source": "mcp-server",
51 | },
52 | });
53 | if (!response.ok) {
54 | console.error(`Failed to fetch documentation: ${response.status}`);
55 | return null;
56 | }
57 | const text = await response.text();
58 | if (!text || text === "No content available" || text === "No context data available") {
59 | return null;
60 | }
61 | return text;
62 | } catch (error) {
63 | console.error("Error fetching library documentation:", error);
64 | return null;
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/src/lib/types.ts:
--------------------------------------------------------------------------------
1 | export interface SearchResult {
2 | id: string;
3 | title: string;
4 | description: string;
5 | branch: string;
6 | lastUpdateDate: string;
7 | state: DocumentState;
8 | totalTokens: number;
9 | totalSnippets: number;
10 | totalPages: number;
11 | stars?: number;
12 | trustScore?: number;
13 | versions?: string[];
14 | }
15 |
16 | export interface SearchResponse {
17 | results: SearchResult[];
18 | }
19 |
20 | // Version state is still needed for validating search results
21 | export type DocumentState = "initial" | "finalized" | "error" | "delete";
22 |
--------------------------------------------------------------------------------
/src/lib/utils.ts:
--------------------------------------------------------------------------------
1 | import { SearchResponse, SearchResult } from "./types.js";
2 |
3 | /**
4 | * Formats a search result into a human-readable string representation.
5 | * Only shows code snippet count and GitHub stars when available (not equal to -1).
6 | *
7 | * @param result The SearchResult object to format
8 | * @returns A formatted string with library information
9 | */
10 | export function formatSearchResult(result: SearchResult): string {
11 | // Always include these basic details
12 | const formattedResult = [
13 | `- Title: ${result.title}`,
14 | `- Context7-compatible library ID: ${result.id}`,
15 | `- Description: ${result.description}`,
16 | ];
17 |
18 | // Only add code snippets count if it's a valid value
19 | if (result.totalSnippets !== -1 && result.totalSnippets !== undefined) {
20 | formattedResult.push(`- Code Snippets: ${result.totalSnippets}`);
21 | }
22 |
23 | // Only add trust score if it's a valid value
24 | if (result.trustScore !== -1 && result.trustScore !== undefined) {
25 | formattedResult.push(`- Trust Score: ${result.trustScore}`);
26 | }
27 |
28 | // Only add versions if it's a valid value
29 | if (result.versions !== undefined && result.versions.length > 0) {
30 | formattedResult.push(`- Versions: ${result.versions.join(", ")}`);
31 | }
32 |
33 | // Join all parts with newlines
34 | return formattedResult.join("\n");
35 | }
36 |
37 | /**
38 | * Formats a search response into a human-readable string representation.
39 | * Each result is formatted using formatSearchResult.
40 | *
41 | * @param searchResponse The SearchResponse object to format
42 | * @returns A formatted string with search results
43 | */
44 | export function formatSearchResults(searchResponse: SearchResponse): string {
45 | if (!searchResponse.results || searchResponse.results.length === 0) {
46 | return "No documentation libraries found matching your query.";
47 | }
48 |
49 | const formattedResults = searchResponse.results.map(formatSearchResult);
50 | return formattedResults.join("\n----------\n");
51 | }
52 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2022",
4 | "module": "Node16",
5 | "moduleResolution": "Node16",
6 | "outDir": "./dist",
7 | "rootDir": "./src",
8 | "strict": true,
9 | "esModuleInterop": true,
10 | "skipLibCheck": true,
11 | "forceConsistentCasingInFileNames": true
12 | },
13 | "include": ["src/**/*"],
14 | "exclude": ["node_modules"]
15 | }
16 |
--------------------------------------------------------------------------------