├── .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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Install in VS Code (npx)](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 | [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) [![Documentação em Português (Brasil)]()](./docs/README.pt-BR.md) [![Documentazione in italiano](https://img.shields.io/badge/docs-Italian-red)](./docs/README.it.md) [![Dokumentasi Bahasa Indonesia](https://img.shields.io/badge/docs-Bahasa%20Indonesia-pink)](./docs/README.id-ID.md) [![Dokumentation auf Deutsch](https://img.shields.io/badge/docs-Deutsch-darkgreen)](./docs/README.de.md) [![Документация на русском языке](https://img.shields.io/badge/docs-Русский-darkblue)](./docs/README.ru.md) [![Türkçe Doküman](https://img.shields.io/badge/docs-Türkçe-blue)](./docs/README.tr.md) [![Arabic Documentation](https://img.shields.io/badge/docs-Arabic-white)](./docs/README.ar.md) 6 | 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 | [Install in VS Code (npx)](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 | [Install in VS Code Insiders (npx)](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 | [![Star History Chart](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Install in VS Code (npx)](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 | [![Star History Chart](https://api.star-history.com/svg?repos=upstash/context7\&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [In VS Code installieren (npx)](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 | [In VS Code installieren (npx)](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 | [In VS Code Insiders installieren (npx)](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 | [![Stern-Historien-Diagramm](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Sitio Web](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![insignia smithery](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Instalar en VS Code (npx)](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 | [Instalar en VS Code (npx)](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 | [Instalar en VS Code Insiders (npx)](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 | [![Gráfico de Historial de Estrellas](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Site Web](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![badge smithery](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Installer dans VS Code (npx)](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 | [Installer dans VS Code (npx)](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 | [Installer dans VS Code Insiders (npx)](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 | [![Graphique d'historique des stars](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Install in VS Code (npx)](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 | [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./README.fr.md) [![Documentação em Português (Brasil)](https://img.shields.io/badge/docs-Português%20(Brasil)-purple)](./README.pt-BR.md) [![Dokumentasi Bahasa Indonesia](https://img.shields.io/badge/docs-Bahasa%20Indonesia-red)](./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 | [Install in VS Code (npx)](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 | [Install in VS Code Insiders (npx)](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 | [![Star History Chart](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Install in VS Code (npx)](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 | [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) [![Documentação em Português (Brasil)](https://img.shields.io/badge/docs-Português%20(Brasil)-purple)](./docs/README.pt-BR.md) [![Documentazione in italiano](https://img.shields.io/badge/docs-Italian-red)](./docs/README.it.md) 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 | [Installa in VS Code (npx)](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 | [Installa in VS Code Insiders (npx)](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 | [![Star History Chart](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Star 기록 차트](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Instalar no VS Code (npx)](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 | [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) 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 | [Instalar no VS Code (npx)](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 | [Instalar no VS Code Insiders (npx)](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 | [![Star History Chart](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [Install in VS Code (npx)](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 | [Установка в VS Code (npx)](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 | [Установка в VS Code Insiders (npx)](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 | [![График истории звёзд на GitHub](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | [![Website](https://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery badge](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [VS Code'da Yükle (npx)](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 | [![中文文档](https://img.shields.io/badge/docs-中文版-yellow)](./docs/README.zh-CN.md) [![한국어 문서](https://img.shields.io/badge/docs-한국어-green)](./docs/README.ko.md) [![Documentación en Español](https://img.shields.io/badge/docs-Español-orange)](./docs/README.es.md) [![Documentation en Français](https://img.shields.io/badge/docs-Français-blue)](./docs/README.fr.md) [![Documentação em Português (Brasil)](https://img.shields.io/badge/docs-Português%20(Brasil)-purple)](./docs/README.pt-BR.md) [![Documentazione in italiano](https://img.shields.io/badge/docs-Italian-red)](./docs/README.it.md) [![Dokumentasi Bahasa Indonesia](https://img.shields.io/badge/docs-Bahasa%20Indonesia-pink)](./docs/README.id-ID.md) [![Dokumentation auf Deutsch](https://img.shields.io/badge/docs-Deutsch-darkgreen)](./docs/README.de.md) [![Документация на русском языке](https://img.shields.io/badge/docs-Русский-darkblue)](./docs/README.ru.md) [![Türkçe Doküman](https://img.shields.io/badge/docs-Türkçe-blue)](./docs/README.tr.md) 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 | [VS Code'da Yükle (npx)](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 | [VS Code Insiders'da Yükle (npx)](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 | [![Yıldız Geçmişi Grafiği](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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://img.shields.io/badge/Website-context7.com-blue)](https://context7.com) [![smithery徽章](https://smithery.ai/badge/@upstash/context7-mcp)](https://smithery.ai/server/@upstash/context7-mcp) [在VS Code中安装 (npx)](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 | [在VS Code中安装 (npx)](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 | [在VS Code Insiders中安装 (npx)](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 | [![Star历史图表](https://api.star-history.com/svg?repos=upstash/context7&type=Date)](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 | --------------------------------------------------------------------------------