github-to-mcp-monorepo 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +8 -0
- package/.github/CODEOWNERS +6 -0
- package/.husky/pre-commit +1 -0
- package/.nvmrc +1 -0
- package/.prettierignore +5 -0
- package/.prettierrc +7 -0
- package/.vscode/settings.json +4 -0
- package/ARCHITECTURE.md +1429 -0
- package/CHANGELOG.md +167 -0
- package/CONTRIBUTING.md +327 -0
- package/LICENSE +201 -0
- package/README.md +1028 -0
- package/SECURITY.md +248 -0
- package/VISUAL_GUIDE.md +437 -0
- package/apps/vscode/IMPLEMENTATION.md +480 -0
- package/apps/vscode/README.md +248 -0
- package/apps/vscode/package.json +381 -0
- package/apps/vscode/resources/icon.png +0 -0
- package/apps/vscode/resources/icon.svg +5 -0
- package/apps/vscode/src/commands/browseRegistry.ts +211 -0
- package/apps/vscode/src/commands/configureClaudeDesktop.ts +332 -0
- package/apps/vscode/src/commands/convert.ts +82 -0
- package/apps/vscode/src/commands/convertCurrentRepo.ts +109 -0
- package/apps/vscode/src/commands/convertFromUrl.ts +138 -0
- package/apps/vscode/src/commands/index.ts +121 -0
- package/apps/vscode/src/commands/validate.ts +197 -0
- package/apps/vscode/src/extension.ts +464 -0
- package/apps/vscode/src/global.d.ts +36 -0
- package/apps/vscode/src/test/extension.test.ts +73 -0
- package/apps/vscode/src/utils/file-generator.ts +529 -0
- package/apps/vscode/src/utils/github-api.ts +335 -0
- package/apps/vscode/src/utils/index.ts +29 -0
- package/apps/vscode/src/utils/mcp-config.ts +334 -0
- package/apps/vscode/src/utils/storage.ts +87 -0
- package/apps/vscode/src/views/McpServersTreeView.ts +160 -0
- package/apps/vscode/src/views/OutputChannelView.ts +195 -0
- package/apps/vscode/src/views/StatusBarItem.ts +251 -0
- package/apps/vscode/src/views/ToolsExplorerView.ts +314 -0
- package/apps/vscode/src/views/historyProvider.ts +75 -0
- package/apps/vscode/src/views/index.ts +12 -0
- package/apps/vscode/src/views/resultsPanel.ts +330 -0
- package/apps/vscode/src/webviews/ConversionPanel.ts +350 -0
- package/apps/vscode/src/webviews/ToolDetailsPanel.ts +448 -0
- package/apps/vscode/src/webviews/index.ts +9 -0
- package/apps/vscode/src/webviews/webview-ui/styles.ts +492 -0
- package/apps/vscode/tsconfig.json +20 -0
- package/apps/web/PLAYGROUND_GUIDE.md +499 -0
- package/apps/web/README.md +505 -0
- package/apps/web/app/api/convert/route.ts +100 -0
- package/apps/web/app/api/convert/stream/route.ts +198 -0
- package/apps/web/app/api/deploy/route.ts +157 -0
- package/apps/web/app/api/edge/route.ts +308 -0
- package/apps/web/app/api/export-docker/route.ts +284 -0
- package/apps/web/app/api/generate-openapi/route.ts +119 -0
- package/apps/web/app/api/mcp/[serverId]/route.ts +263 -0
- package/apps/web/app/api/playground/connect/route.ts +143 -0
- package/apps/web/app/api/playground/disconnect/route.ts +78 -0
- package/apps/web/app/api/playground/execute/route.ts +135 -0
- package/apps/web/app/api/playground/sessions/route.ts +103 -0
- package/apps/web/app/api/playground/tools/route.ts +117 -0
- package/apps/web/app/api/playground/v2/connect/route.ts +96 -0
- package/apps/web/app/api/playground/v2/disconnect/route.ts +88 -0
- package/apps/web/app/api/playground/v2/health/route.ts +80 -0
- package/apps/web/app/api/playground/v2/prompts/route.ts +160 -0
- package/apps/web/app/api/playground/v2/resources/route.ts +159 -0
- package/apps/web/app/api/playground/v2/sessions/route.ts +184 -0
- package/apps/web/app/api/playground/v2/tools/route.ts +167 -0
- package/apps/web/app/api/stream/route.ts +232 -0
- package/apps/web/app/batch/BatchConvertClient.tsx +190 -0
- package/apps/web/app/batch/page.tsx +37 -0
- package/apps/web/app/convert/page.tsx +269 -0
- package/apps/web/app/dashboard/page.tsx +380 -0
- package/apps/web/app/globals.css +622 -0
- package/apps/web/app/layout.tsx +120 -0
- package/apps/web/app/manifest.ts +31 -0
- package/apps/web/app/opengraph-image.tsx +112 -0
- package/apps/web/app/page.old.tsx +924 -0
- package/apps/web/app/page.tsx +77 -0
- package/apps/web/app/playground/page.tsx +306 -0
- package/apps/web/app/playground/v2/error.tsx +163 -0
- package/apps/web/app/playground/v2/layout.tsx +58 -0
- package/apps/web/app/playground/v2/loading.tsx +152 -0
- package/apps/web/app/playground/v2/page.tsx +644 -0
- package/apps/web/app/playground/v2/providers.tsx +214 -0
- package/apps/web/app/playground/v2/use-shortcuts.ts +209 -0
- package/apps/web/app/playground/v2/use-url-state.ts +296 -0
- package/apps/web/app/providers.tsx +22 -0
- package/apps/web/app/sitemap.ts +32 -0
- package/apps/web/app/twitter-image.tsx +112 -0
- package/apps/web/components/BranchSelector.tsx +401 -0
- package/apps/web/components/ClaudeConfigExport.tsx +226 -0
- package/apps/web/components/Features.tsx +84 -0
- package/apps/web/components/Footer.tsx +119 -0
- package/apps/web/components/GenerationProgress.tsx +248 -0
- package/apps/web/components/GithubUrlInput.tsx +483 -0
- package/apps/web/components/Header.tsx +175 -0
- package/apps/web/components/Hero.tsx +117 -0
- package/apps/web/components/HowItWorks.tsx +119 -0
- package/apps/web/components/InstallBanner.tsx +158 -0
- package/apps/web/components/Logo.tsx +116 -0
- package/apps/web/components/ParticleBackground.tsx +105 -0
- package/apps/web/components/Playground.tsx +472 -0
- package/apps/web/components/PlaygroundToolTester.tsx +410 -0
- package/apps/web/components/ProductCards.tsx +179 -0
- package/apps/web/components/SplitView.tsx +194 -0
- package/apps/web/components/ToolFilter.tsx +260 -0
- package/apps/web/components/ToolList.tsx +325 -0
- package/apps/web/components/batch/BatchConvert.tsx +785 -0
- package/apps/web/components/batch/index.ts +7 -0
- package/apps/web/components/convert/ConfigTabs.tsx +230 -0
- package/apps/web/components/convert/ConversionResult.tsx +482 -0
- package/apps/web/components/convert/InlinePlayground.tsx +259 -0
- package/apps/web/components/convert/LoadingSteps.tsx +311 -0
- package/apps/web/components/convert/OneClickInstall.tsx +224 -0
- package/apps/web/components/convert/ToolCard.tsx +189 -0
- package/apps/web/components/convert/TryInPlayground.tsx +242 -0
- package/apps/web/components/convert/index.ts +12 -0
- package/apps/web/components/deploy/DeployButton.tsx +369 -0
- package/apps/web/components/deploy/index.ts +7 -0
- package/apps/web/components/docker/DockerExport.tsx +690 -0
- package/apps/web/components/docker/index.ts +7 -0
- package/apps/web/components/install/OneClickInstall.tsx +676 -0
- package/apps/web/components/install/index.ts +7 -0
- package/apps/web/components/playground/CapabilityTabs.tsx +150 -0
- package/apps/web/components/playground/ConnectionStatusV2.tsx +322 -0
- package/apps/web/components/playground/EmptyStates.tsx +305 -0
- package/apps/web/components/playground/ExecutionLog.tsx +260 -0
- package/apps/web/components/playground/ExecutionLogV2.tsx +378 -0
- package/apps/web/components/playground/JsonViewer.tsx +388 -0
- package/apps/web/components/playground/PlaygroundLayout.tsx +244 -0
- package/apps/web/components/playground/PromptsPanel.tsx +385 -0
- package/apps/web/components/playground/ResourcesPanel.tsx +378 -0
- package/apps/web/components/playground/SchemaForm.tsx +477 -0
- package/apps/web/components/playground/ServerStatus.tsx +151 -0
- package/apps/web/components/playground/ShareButton.tsx +239 -0
- package/apps/web/components/playground/ToolsPanel.tsx +309 -0
- package/apps/web/components/playground/TransportConfigurator.tsx +563 -0
- package/apps/web/components/playground/index.ts +74 -0
- package/apps/web/components/playground/types.ts +202 -0
- package/apps/web/components/streaming/StreamingProgress.tsx +441 -0
- package/apps/web/components/streaming/index.ts +7 -0
- package/apps/web/components/ui/badge.tsx +42 -0
- package/apps/web/components/ui/button.tsx +88 -0
- package/apps/web/components/ui/card.tsx +75 -0
- package/apps/web/components/ui/code-block.tsx +122 -0
- package/apps/web/components/ui/index.ts +12 -0
- package/apps/web/components/ui/input.tsx +55 -0
- package/apps/web/components/ui/tabs.tsx +61 -0
- package/apps/web/hooks/index.ts +85 -0
- package/apps/web/hooks/types.ts +1173 -0
- package/apps/web/hooks/use-conversion.ts +133 -0
- package/apps/web/hooks/use-execution-history.ts +376 -0
- package/apps/web/hooks/use-generation-progress.ts +147 -0
- package/apps/web/hooks/use-local-storage.ts +88 -0
- package/apps/web/hooks/use-mcp-client.ts +623 -0
- package/apps/web/hooks/use-mcp-connection.ts +500 -0
- package/apps/web/hooks/use-mcp-execution.ts +282 -0
- package/apps/web/hooks/use-mcp-prompts.ts +441 -0
- package/apps/web/hooks/use-mcp-resources.ts +430 -0
- package/apps/web/hooks/use-mcp-tools.ts +540 -0
- package/apps/web/hooks/use-playground-store.ts +299 -0
- package/apps/web/hooks/use-playground.ts +184 -0
- package/apps/web/hooks/use-streaming-conversion.ts +227 -0
- package/apps/web/hooks/useBatchConversion.ts +271 -0
- package/apps/web/hooks/useDockerConfig.ts +161 -0
- package/apps/web/hooks/usePlatformDetection.ts +80 -0
- package/apps/web/hooks/useStreaming.ts +199 -0
- package/apps/web/lib/api/errors.ts +386 -0
- package/apps/web/lib/api/index.ts +137 -0
- package/apps/web/lib/api/logger.ts +187 -0
- package/apps/web/lib/api/middleware.ts +364 -0
- package/apps/web/lib/api/openapi.ts +977 -0
- package/apps/web/lib/api/session-manager.ts +594 -0
- package/apps/web/lib/api/types.ts +433 -0
- package/apps/web/lib/api/validation.ts +523 -0
- package/apps/web/lib/constants.ts +114 -0
- package/apps/web/lib/mcp/client.ts +1137 -0
- package/apps/web/lib/mcp/events.ts +651 -0
- package/apps/web/lib/mcp/index.ts +347 -0
- package/apps/web/lib/mcp/logger.ts +428 -0
- package/apps/web/lib/mcp/metrics.ts +703 -0
- package/apps/web/lib/mcp/retry.ts +616 -0
- package/apps/web/lib/mcp/session-manager.ts +779 -0
- package/apps/web/lib/mcp/transports.ts +988 -0
- package/apps/web/lib/mcp/types.ts +594 -0
- package/apps/web/lib/mcp-client-enhanced.ts +871 -0
- package/apps/web/lib/mcp-client.ts +778 -0
- package/apps/web/lib/mcp-errors.ts +489 -0
- package/apps/web/lib/mcp-sandbox.ts +593 -0
- package/apps/web/lib/mcp-testing.ts +428 -0
- package/apps/web/lib/mcp-types.ts +448 -0
- package/apps/web/lib/playground-store.tsx +1147 -0
- package/apps/web/lib/utils.ts +439 -0
- package/apps/web/next-env.d.ts +5 -0
- package/apps/web/next.config.js +23 -0
- package/apps/web/package.json +55 -0
- package/apps/web/postcss.config.js +6 -0
- package/apps/web/public/.well-known/ai-plugin.json +17 -0
- package/apps/web/public/logo.svg +6 -0
- package/apps/web/public/robots.txt +22 -0
- package/apps/web/public/schema.json +27 -0
- package/apps/web/tailwind.config.js +26 -0
- package/apps/web/tailwind.config.ts +123 -0
- package/apps/web/tsconfig.json +20 -0
- package/apps/web/types/deploy.ts +139 -0
- package/apps/web/types/index.ts +247 -0
- package/apps/web/vercel.json +39 -0
- package/eslint.config.mjs +23 -0
- package/llms.txt +102 -0
- package/mkdocs/docs/api/core.md +318 -0
- package/mkdocs/docs/api/index.md +128 -0
- package/mkdocs/docs/api/mcp-server.md +301 -0
- package/mkdocs/docs/api/openapi-parser.md +254 -0
- package/mkdocs/docs/assets/logo.svg +7 -0
- package/mkdocs/docs/changelog.md +118 -0
- package/mkdocs/docs/cli/generate.md +148 -0
- package/mkdocs/docs/cli/index.md +52 -0
- package/mkdocs/docs/cli/inspect.md +164 -0
- package/mkdocs/docs/cli/serve.md +136 -0
- package/mkdocs/docs/concepts/classification.md +254 -0
- package/mkdocs/docs/concepts/how-it-works.md +299 -0
- package/mkdocs/docs/concepts/index.md +77 -0
- package/mkdocs/docs/concepts/mcp-protocol.md +362 -0
- package/mkdocs/docs/concepts/tool-types.md +382 -0
- package/mkdocs/docs/contributing/architecture.md +262 -0
- package/mkdocs/docs/contributing/development.md +245 -0
- package/mkdocs/docs/contributing/index.md +73 -0
- package/mkdocs/docs/contributing/testing.md +320 -0
- package/mkdocs/docs/getting-started/configuration.md +235 -0
- package/mkdocs/docs/getting-started/index.md +54 -0
- package/mkdocs/docs/getting-started/installation.md +145 -0
- package/mkdocs/docs/getting-started/quickstart.md +160 -0
- package/mkdocs/docs/guides/batch.md +375 -0
- package/mkdocs/docs/guides/claude-desktop.md +227 -0
- package/mkdocs/docs/guides/cursor.md +188 -0
- package/mkdocs/docs/guides/custom-tools.md +367 -0
- package/mkdocs/docs/guides/index.md +78 -0
- package/mkdocs/docs/guides/private-repos.md +221 -0
- package/mkdocs/docs/guides/vscode.md +247 -0
- package/mkdocs/docs/index.md +175 -0
- package/mkdocs/docs/reference/config.md +223 -0
- package/mkdocs/docs/reference/env.md +192 -0
- package/mkdocs/docs/reference/index.md +102 -0
- package/mkdocs/docs/reference/tools.md +309 -0
- package/mkdocs/docs/stylesheets/extra.css +231 -0
- package/mkdocs/mkdocs.yml +204 -0
- package/mkdocs/overrides/.gitkeep +1 -0
- package/mkdocs/overrides/main.html +7 -0
- package/mkdocs/python-deps.txt +7 -0
- package/mkdocs/vercel.json +11 -0
- package/package.json +63 -0
- package/packages/core/package.json +61 -0
- package/packages/core/src/__tests__/bitbucket-client.test.ts +366 -0
- package/packages/core/src/__tests__/cli.test.ts +235 -0
- package/packages/core/src/__tests__/code-extractor.test.ts +378 -0
- package/packages/core/src/__tests__/docker-generator.test.ts +255 -0
- package/packages/core/src/__tests__/github-client.test.ts +390 -0
- package/packages/core/src/__tests__/gitlab-client.test.ts +319 -0
- package/packages/core/src/__tests__/go-extractor.test.ts +351 -0
- package/packages/core/src/__tests__/graphql-extractor.test.ts +330 -0
- package/packages/core/src/__tests__/java-extractor.test.ts +497 -0
- package/packages/core/src/__tests__/plugins.test.ts +467 -0
- package/packages/core/src/__tests__/readme-extractor.test.ts +258 -0
- package/packages/core/src/__tests__/redis-cache.test.ts +307 -0
- package/packages/core/src/__tests__/rust-extractor.test.ts +252 -0
- package/packages/core/src/__tests__/streaming.test.ts +251 -0
- package/packages/core/src/additional-extractors.ts +333 -0
- package/packages/core/src/cache/cache-interface.ts +179 -0
- package/packages/core/src/cache/index.ts +210 -0
- package/packages/core/src/cache/redis-cache.ts +291 -0
- package/packages/core/src/cache/upstash-cache.ts +379 -0
- package/packages/core/src/cache.ts +251 -0
- package/packages/core/src/cli.ts +822 -0
- package/packages/core/src/code-extractor.ts +696 -0
- package/packages/core/src/docker-generator.ts +470 -0
- package/packages/core/src/edge-compatible.ts +491 -0
- package/packages/core/src/extractors/go-extractor.ts +791 -0
- package/packages/core/src/extractors/index.ts +9 -0
- package/packages/core/src/extractors/java-extractor.ts +937 -0
- package/packages/core/src/extractors/rust-extractor.ts +744 -0
- package/packages/core/src/github-client.ts +319 -0
- package/packages/core/src/go-generator.ts +356 -0
- package/packages/core/src/graphql-extractor.ts +358 -0
- package/packages/core/src/index.ts +797 -0
- package/packages/core/src/langchain-exporter.ts +617 -0
- package/packages/core/src/language-parsers.ts +1114 -0
- package/packages/core/src/mcp-introspector.ts +279 -0
- package/packages/core/src/monorepo-detector.ts +378 -0
- package/packages/core/src/plugins/index.ts +370 -0
- package/packages/core/src/plugins/registry.ts +404 -0
- package/packages/core/src/plugins/types.ts +215 -0
- package/packages/core/src/providers/base-provider.ts +246 -0
- package/packages/core/src/providers/bitbucket-client.ts +464 -0
- package/packages/core/src/providers/gitlab-client.ts +388 -0
- package/packages/core/src/providers/index.ts +176 -0
- package/packages/core/src/python-generator.ts +260 -0
- package/packages/core/src/queue/index.ts +100 -0
- package/packages/core/src/queue/memory-queue.ts +445 -0
- package/packages/core/src/queue/redis-queue.ts +578 -0
- package/packages/core/src/queue/types.ts +251 -0
- package/packages/core/src/readme-extractor.ts +409 -0
- package/packages/core/src/schema-generator.ts +638 -0
- package/packages/core/src/streaming.ts +999 -0
- package/packages/core/src/types.ts +289 -0
- package/packages/core/tsconfig.json +9 -0
- package/packages/core/tsup.config.ts +25 -0
- package/packages/mcp-server/README.md +297 -0
- package/packages/mcp-server/package.json +55 -0
- package/packages/mcp-server/src/__tests__/mcp-server.test.ts +177 -0
- package/packages/mcp-server/src/__tests__/tools.test.ts +217 -0
- package/packages/mcp-server/src/index.ts +1206 -0
- package/packages/mcp-server/src/prompts/index.ts +601 -0
- package/packages/mcp-server/src/tools/export-docker.ts +362 -0
- package/packages/mcp-server/src/tools/generate-openapi.ts +162 -0
- package/packages/mcp-server/src/tools/monitor-mcp-server.ts +448 -0
- package/packages/mcp-server/src/tools/stream-convert.ts +398 -0
- package/packages/mcp-server/src/tools/test-mcp-tool.ts +531 -0
- package/packages/mcp-server/tsconfig.json +12 -0
- package/packages/mcp-server/tsup.config.ts +14 -0
- package/packages/openapi-parser/package-lock.json +3028 -0
- package/packages/openapi-parser/package.json +41 -0
- package/packages/openapi-parser/src/analyzer.ts +700 -0
- package/packages/openapi-parser/src/asyncapi-parser.ts +475 -0
- package/packages/openapi-parser/src/cli.ts +302 -0
- package/packages/openapi-parser/src/generator.ts +570 -0
- package/packages/openapi-parser/src/generators/express-analyzer.ts +649 -0
- package/packages/openapi-parser/src/generators/fastapi-analyzer.ts +960 -0
- package/packages/openapi-parser/src/generators/index.ts +200 -0
- package/packages/openapi-parser/src/generators/nextjs-analyzer.ts +768 -0
- package/packages/openapi-parser/src/generators/openapi-builder.ts +527 -0
- package/packages/openapi-parser/src/generators/types.ts +298 -0
- package/packages/openapi-parser/src/graphql-parser.ts +462 -0
- package/packages/openapi-parser/src/grpc-parser.ts +649 -0
- package/packages/openapi-parser/src/har-parser.ts +723 -0
- package/packages/openapi-parser/src/index.ts +635 -0
- package/packages/openapi-parser/src/insomnia-parser.ts +614 -0
- package/packages/openapi-parser/src/parser.ts +231 -0
- package/packages/openapi-parser/src/postman-parser.ts +611 -0
- package/packages/openapi-parser/src/ref-resolver.ts +313 -0
- package/packages/openapi-parser/src/transformer.ts +459 -0
- package/packages/openapi-parser/tests/generators/express.test.ts +209 -0
- package/packages/openapi-parser/tests/generators/fastapi.test.ts +236 -0
- package/packages/openapi-parser/tests/generators/nextjs.test.ts +273 -0
- package/packages/openapi-parser/tests/parsers.test.ts +847 -0
- package/packages/openapi-parser/tsconfig.json +9 -0
- package/packages/openapi-parser/tsup.config.ts +11 -0
- package/packages/registry/package.json +59 -0
- package/packages/registry/src/cli.ts +456 -0
- package/packages/registry/src/index.ts +44 -0
- package/packages/registry/src/popular/github.json +47 -0
- package/packages/registry/src/popular/index.ts +55 -0
- package/packages/registry/src/popular/linear.json +42 -0
- package/packages/registry/src/popular/notion.json +42 -0
- package/packages/registry/src/popular/openai.json +40 -0
- package/packages/registry/src/popular/resend.json +38 -0
- package/packages/registry/src/popular/slack.json +42 -0
- package/packages/registry/src/popular/stripe.json +163 -0
- package/packages/registry/src/popular/supabase.json +42 -0
- package/packages/registry/src/popular/twilio.json +40 -0
- package/packages/registry/src/popular/vercel.json +40 -0
- package/packages/registry/src/registry.ts +492 -0
- package/packages/registry/src/storage.ts +334 -0
- package/packages/registry/src/types.ts +275 -0
- package/packages/registry/src/updater.ts +208 -0
- package/packages/registry/tsconfig.json +10 -0
- package/packages/registry/tsup.config.ts +11 -0
- package/pnpm-workspace.yaml +3 -0
- package/scripts/build-docs.sh +16 -0
- package/server.json +9 -0
- package/templates/Dockerfile.python.template +60 -0
- package/templates/Dockerfile.typescript.template +60 -0
- package/templates/docker-compose.template.yml +68 -0
- package/tests/fixtures/express-app/index.js +34 -0
- package/tests/fixtures/express-app/routes/posts.js +43 -0
- package/tests/fixtures/express-app/routes/users.js +58 -0
- package/tests/fixtures/fastapi-app/main.py +125 -0
- package/tests/fixtures/fastapi-app/routes/admin.py +42 -0
- package/tests/fixtures/graphql/simple-schema.graphql +65 -0
- package/tests/fixtures/mocks/github-api-responses.json +63 -0
- package/tests/fixtures/nextjs-app/app/api/posts/route.ts +55 -0
- package/tests/fixtures/nextjs-app/app/api/users/[id]/route.ts +63 -0
- package/tests/fixtures/nextjs-app/app/api/users/route.ts +44 -0
- package/tests/fixtures/nextjs-app/pages/api/health.ts +28 -0
- package/tests/fixtures/openapi/petstore.yaml +179 -0
- package/tests/integration/langchain-export.test.ts +405 -0
- package/tests/integration/openapi-conversion.test.ts +221 -0
- package/tsconfig.json +18 -0
- package/vitest.config.ts +32 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Cursor Integration
|
|
2
|
+
|
|
3
|
+
Use GitHub to MCP with Cursor IDE for AI-assisted coding with full codebase context.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- [Cursor](https://cursor.sh) installed
|
|
8
|
+
- A generated MCP server (see [Quick Start](../getting-started/quickstart.md))
|
|
9
|
+
- Node.js 18+ installed
|
|
10
|
+
|
|
11
|
+
## Step 1: Generate Your MCP Server
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @nirholas/github-to-mcp https://github.com/owner/repo -o ~/mcp-servers/my-repo
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Step 2: Configure Cursor
|
|
18
|
+
|
|
19
|
+
Cursor's MCP configuration is in your settings. Open Cursor and:
|
|
20
|
+
|
|
21
|
+
1. Press `Cmd/Ctrl + ,` to open Settings
|
|
22
|
+
2. Search for "MCP"
|
|
23
|
+
3. Click "Edit in settings.json"
|
|
24
|
+
|
|
25
|
+
Or edit directly:
|
|
26
|
+
|
|
27
|
+
=== "macOS"
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
~/Library/Application Support/Cursor/User/settings.json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
=== "Windows"
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
%APPDATA%\Cursor\User\settings.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
=== "Linux"
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
~/.config/Cursor/User/settings.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Step 3: Add MCP Server
|
|
46
|
+
|
|
47
|
+
Add your MCP server configuration:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcp.servers": {
|
|
52
|
+
"my-repo": {
|
|
53
|
+
"command": "node",
|
|
54
|
+
"args": ["/Users/yourname/mcp-servers/my-repo/server.mjs"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Step 4: Restart Cursor
|
|
61
|
+
|
|
62
|
+
1. Close all Cursor windows
|
|
63
|
+
2. Relaunch Cursor
|
|
64
|
+
3. The MCP tools should now be available
|
|
65
|
+
|
|
66
|
+
## Using MCP with Cursor
|
|
67
|
+
|
|
68
|
+
### In Chat (Cmd+L)
|
|
69
|
+
|
|
70
|
+
Ask questions about the connected repository:
|
|
71
|
+
|
|
72
|
+
> **You:** How does the authentication middleware work?
|
|
73
|
+
>
|
|
74
|
+
> **Cursor:** *Uses MCP tools to search and read files* The authentication middleware in this repo...
|
|
75
|
+
|
|
76
|
+
### In Composer (Cmd+K)
|
|
77
|
+
|
|
78
|
+
Reference MCP tools when generating code:
|
|
79
|
+
|
|
80
|
+
> **You:** Create a new endpoint similar to the existing /users endpoint
|
|
81
|
+
>
|
|
82
|
+
> **Cursor:** *Uses `search_code` to find the users endpoint, `read_file` to understand the pattern*
|
|
83
|
+
|
|
84
|
+
### Context Awareness
|
|
85
|
+
|
|
86
|
+
With MCP connected, Cursor can:
|
|
87
|
+
|
|
88
|
+
- Search the entire repository for relevant code
|
|
89
|
+
- Understand API patterns and conventions
|
|
90
|
+
- Find related implementations
|
|
91
|
+
- Reference documentation
|
|
92
|
+
|
|
93
|
+
## Multiple Repositories
|
|
94
|
+
|
|
95
|
+
Configure multiple repos for cross-codebase AI assistance:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"mcp.servers": {
|
|
100
|
+
"frontend": {
|
|
101
|
+
"command": "node",
|
|
102
|
+
"args": ["/path/to/frontend-mcp/server.mjs"]
|
|
103
|
+
},
|
|
104
|
+
"backend": {
|
|
105
|
+
"command": "node",
|
|
106
|
+
"args": ["/path/to/backend-mcp/server.mjs"]
|
|
107
|
+
},
|
|
108
|
+
"shared-lib": {
|
|
109
|
+
"command": "node",
|
|
110
|
+
"args": ["/path/to/shared-mcp/server.mjs"]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Workflow Tips
|
|
117
|
+
|
|
118
|
+
### 1. Connect External Dependencies
|
|
119
|
+
|
|
120
|
+
Generate MCP servers for libraries you use:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Your project's main dependency
|
|
124
|
+
npx @nirholas/github-to-mcp https://github.com/prisma/prisma -o ~/mcp-servers/prisma
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Then ask Cursor about Prisma patterns while coding.
|
|
128
|
+
|
|
129
|
+
### 2. Reference Documentation Repos
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
npx @nirholas/github-to-mcp https://github.com/vercel/next.js -o ~/mcp-servers/nextjs
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Ask about Next.js best practices with real code context.
|
|
136
|
+
|
|
137
|
+
### 3. Keep Servers Updated
|
|
138
|
+
|
|
139
|
+
When dependencies update, regenerate:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npx @nirholas/github-to-mcp https://github.com/prisma/prisma -o ~/mcp-servers/prisma --force
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Troubleshooting
|
|
146
|
+
|
|
147
|
+
### MCP Not Working
|
|
148
|
+
|
|
149
|
+
1. Check Cursor version (MCP requires recent versions)
|
|
150
|
+
2. Verify the config file location
|
|
151
|
+
3. Test the server standalone:
|
|
152
|
+
```bash
|
|
153
|
+
node ~/mcp-servers/my-repo/server.mjs
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Slow Responses
|
|
157
|
+
|
|
158
|
+
For large repos, optimize your MCP server:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
npx @nirholas/github-to-mcp <url> \
|
|
162
|
+
--exclude-tools get_readme \
|
|
163
|
+
-o ~/mcp-servers/my-repo
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Permission Errors
|
|
167
|
+
|
|
168
|
+
On macOS, you may need to allow Node.js:
|
|
169
|
+
|
|
170
|
+
1. System Preferences → Security & Privacy
|
|
171
|
+
2. Allow `node` to run
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Best Practices
|
|
176
|
+
|
|
177
|
+
1. **Local repos first** - For your active project, use Cursor's built-in context
|
|
178
|
+
2. **MCP for external** - Use MCP for dependencies and reference repos
|
|
179
|
+
3. **Selective tools** - Exclude unused tools for faster responses
|
|
180
|
+
4. **Keep servers lean** - Don't generate servers for massive repos unless needed
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Next Steps
|
|
185
|
+
|
|
186
|
+
- [VS Code Integration](vscode.md)
|
|
187
|
+
- [Custom Tools](custom-tools.md)
|
|
188
|
+
- [Batch Conversion](batch.md) - Generate multiple servers at once
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# Custom Tools
|
|
2
|
+
|
|
3
|
+
Extend and customize the generated MCP tools to fit your needs.
|
|
4
|
+
|
|
5
|
+
## Understanding Generated Tools
|
|
6
|
+
|
|
7
|
+
Each generated MCP server includes tool implementations that you can modify:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
my-mcp-server/
|
|
11
|
+
├── server.mjs # Main server (registers tools)
|
|
12
|
+
├── tools/
|
|
13
|
+
│ ├── index.mjs # Tool exports
|
|
14
|
+
│ ├── read_file.mjs
|
|
15
|
+
│ ├── list_files.mjs
|
|
16
|
+
│ ├── search_code.mjs
|
|
17
|
+
│ └── get_readme.mjs
|
|
18
|
+
└── package.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Modifying Existing Tools
|
|
22
|
+
|
|
23
|
+
### Example: Add Caching to read_file
|
|
24
|
+
|
|
25
|
+
Edit `tools/read_file.mjs`:
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
import { LRUCache } from 'lru-cache';
|
|
29
|
+
|
|
30
|
+
// Add a cache
|
|
31
|
+
const cache = new LRUCache({ max: 100, ttl: 1000 * 60 * 5 });
|
|
32
|
+
|
|
33
|
+
export const readFileTool = {
|
|
34
|
+
name: 'read_file',
|
|
35
|
+
description: 'Read the contents of a file from the repository',
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {
|
|
39
|
+
path: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'Path to the file to read'
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
required: ['path']
|
|
45
|
+
},
|
|
46
|
+
async execute({ path }) {
|
|
47
|
+
// Check cache first
|
|
48
|
+
const cached = cache.get(path);
|
|
49
|
+
if (cached) {
|
|
50
|
+
return { content: cached, cached: true };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Fetch if not cached
|
|
54
|
+
const content = await fetchFileFromGithub(path);
|
|
55
|
+
cache.set(path, content);
|
|
56
|
+
|
|
57
|
+
return { content, cached: false };
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Example: Add Filtering to list_files
|
|
63
|
+
|
|
64
|
+
```javascript
|
|
65
|
+
export const listFilesTool = {
|
|
66
|
+
name: 'list_files',
|
|
67
|
+
description: 'List files in a directory with optional filtering',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
path: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
description: 'Directory path'
|
|
74
|
+
},
|
|
75
|
+
pattern: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Glob pattern to filter files (e.g., "*.ts")'
|
|
78
|
+
},
|
|
79
|
+
maxDepth: {
|
|
80
|
+
type: 'number',
|
|
81
|
+
description: 'Maximum depth to traverse'
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
required: ['path']
|
|
85
|
+
},
|
|
86
|
+
async execute({ path, pattern, maxDepth = 3 }) {
|
|
87
|
+
let files = await fetchDirectoryListing(path, maxDepth);
|
|
88
|
+
|
|
89
|
+
if (pattern) {
|
|
90
|
+
const minimatch = await import('minimatch');
|
|
91
|
+
files = files.filter(f => minimatch.default(f.name, pattern));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return { files };
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Adding New Tools
|
|
100
|
+
|
|
101
|
+
### Step 1: Create the Tool File
|
|
102
|
+
|
|
103
|
+
Create `tools/my_custom_tool.mjs`:
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
export const myCustomTool = {
|
|
107
|
+
name: 'analyze_dependencies',
|
|
108
|
+
description: 'Analyze package.json dependencies and find outdated packages',
|
|
109
|
+
inputSchema: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {
|
|
112
|
+
checkUpdates: {
|
|
113
|
+
type: 'boolean',
|
|
114
|
+
description: 'Check npm for newer versions'
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
async execute({ checkUpdates = false }) {
|
|
119
|
+
// Read package.json
|
|
120
|
+
const packageJson = await this.tools.read_file.execute({
|
|
121
|
+
path: 'package.json'
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const pkg = JSON.parse(packageJson.content);
|
|
125
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
126
|
+
|
|
127
|
+
const result = {
|
|
128
|
+
total: Object.keys(deps).length,
|
|
129
|
+
dependencies: pkg.dependencies,
|
|
130
|
+
devDependencies: pkg.devDependencies
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
if (checkUpdates) {
|
|
134
|
+
// Check for updates (simplified example)
|
|
135
|
+
result.outdated = await checkForUpdates(deps);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Step 2: Register the Tool
|
|
144
|
+
|
|
145
|
+
Edit `tools/index.mjs`:
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
export { readFileTool } from './read_file.mjs';
|
|
149
|
+
export { listFilesTool } from './list_files.mjs';
|
|
150
|
+
export { searchCodeTool } from './search_code.mjs';
|
|
151
|
+
export { getReadmeTool } from './get_readme.mjs';
|
|
152
|
+
// Add your custom tool
|
|
153
|
+
export { myCustomTool } from './my_custom_tool.mjs';
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Step 3: Add to Server
|
|
157
|
+
|
|
158
|
+
Edit `server.mjs`:
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
162
|
+
import * as tools from './tools/index.mjs';
|
|
163
|
+
|
|
164
|
+
const server = new Server({
|
|
165
|
+
name: 'my-repo-mcp',
|
|
166
|
+
version: '1.0.0'
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// Register all tools
|
|
170
|
+
Object.values(tools).forEach(tool => {
|
|
171
|
+
server.setRequestHandler('tools/call', tool.name, tool.execute);
|
|
172
|
+
});
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Tool Patterns
|
|
176
|
+
|
|
177
|
+
### Composite Tools
|
|
178
|
+
|
|
179
|
+
Create tools that combine multiple operations:
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
export const explainCodeTool = {
|
|
183
|
+
name: 'explain_code',
|
|
184
|
+
description: 'Read a file and provide structured information about it',
|
|
185
|
+
inputSchema: {
|
|
186
|
+
type: 'object',
|
|
187
|
+
properties: {
|
|
188
|
+
path: { type: 'string' }
|
|
189
|
+
},
|
|
190
|
+
required: ['path']
|
|
191
|
+
},
|
|
192
|
+
async execute({ path }, { tools }) {
|
|
193
|
+
// Use other tools
|
|
194
|
+
const content = await tools.read_file.execute({ path });
|
|
195
|
+
const related = await tools.search_code.execute({
|
|
196
|
+
query: path.split('/').pop().replace('.', '')
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
return {
|
|
200
|
+
content: content.content,
|
|
201
|
+
relatedFiles: related.results.slice(0, 5),
|
|
202
|
+
lineCount: content.content.split('\n').length,
|
|
203
|
+
language: detectLanguage(path)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Tools with Side Effects
|
|
210
|
+
|
|
211
|
+
For tools that modify state (use cautiously):
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
export const createIssueTool = {
|
|
215
|
+
name: 'create_issue',
|
|
216
|
+
description: 'Create a GitHub issue (requires write access)',
|
|
217
|
+
inputSchema: {
|
|
218
|
+
type: 'object',
|
|
219
|
+
properties: {
|
|
220
|
+
title: { type: 'string' },
|
|
221
|
+
body: { type: 'string' },
|
|
222
|
+
labels: { type: 'array', items: { type: 'string' } }
|
|
223
|
+
},
|
|
224
|
+
required: ['title', 'body']
|
|
225
|
+
},
|
|
226
|
+
async execute({ title, body, labels = [] }, { config }) {
|
|
227
|
+
const response = await fetch(
|
|
228
|
+
`https://api.github.com/repos/${config.owner}/${config.repo}/issues`,
|
|
229
|
+
{
|
|
230
|
+
method: 'POST',
|
|
231
|
+
headers: {
|
|
232
|
+
Authorization: `token ${config.token}`,
|
|
233
|
+
'Content-Type': 'application/json'
|
|
234
|
+
},
|
|
235
|
+
body: JSON.stringify({ title, body, labels })
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
|
|
239
|
+
return await response.json();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Paginated Tools
|
|
245
|
+
|
|
246
|
+
Handle large result sets:
|
|
247
|
+
|
|
248
|
+
```javascript
|
|
249
|
+
export const searchCodeTool = {
|
|
250
|
+
name: 'search_code',
|
|
251
|
+
inputSchema: {
|
|
252
|
+
type: 'object',
|
|
253
|
+
properties: {
|
|
254
|
+
query: { type: 'string' },
|
|
255
|
+
page: { type: 'number', default: 1 },
|
|
256
|
+
perPage: { type: 'number', default: 30 }
|
|
257
|
+
},
|
|
258
|
+
required: ['query']
|
|
259
|
+
},
|
|
260
|
+
async execute({ query, page = 1, perPage = 30 }) {
|
|
261
|
+
const results = await searchGithubCode(query, page, perPage);
|
|
262
|
+
|
|
263
|
+
return {
|
|
264
|
+
results: results.items,
|
|
265
|
+
total: results.total_count,
|
|
266
|
+
page,
|
|
267
|
+
perPage,
|
|
268
|
+
hasMore: results.total_count > page * perPage
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## TypeScript Tools
|
|
275
|
+
|
|
276
|
+
For TypeScript servers, use proper types:
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
import { Tool, ToolResult } from '@modelcontextprotocol/sdk';
|
|
280
|
+
|
|
281
|
+
interface ReadFileInput {
|
|
282
|
+
path: string;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
interface ReadFileOutput {
|
|
286
|
+
content: string;
|
|
287
|
+
encoding: string;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export const readFileTool: Tool<ReadFileInput, ReadFileOutput> = {
|
|
291
|
+
name: 'read_file',
|
|
292
|
+
description: 'Read file contents',
|
|
293
|
+
inputSchema: {
|
|
294
|
+
type: 'object',
|
|
295
|
+
properties: {
|
|
296
|
+
path: { type: 'string' }
|
|
297
|
+
},
|
|
298
|
+
required: ['path']
|
|
299
|
+
},
|
|
300
|
+
async execute(input: ReadFileInput): Promise<ToolResult<ReadFileOutput>> {
|
|
301
|
+
const content = await fetchFile(input.path);
|
|
302
|
+
return {
|
|
303
|
+
content,
|
|
304
|
+
encoding: 'utf-8'
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Testing Custom Tools
|
|
311
|
+
|
|
312
|
+
### Unit Testing
|
|
313
|
+
|
|
314
|
+
```javascript
|
|
315
|
+
import { describe, it, expect } from 'vitest';
|
|
316
|
+
import { myCustomTool } from './my_custom_tool.mjs';
|
|
317
|
+
|
|
318
|
+
describe('myCustomTool', () => {
|
|
319
|
+
it('should analyze dependencies', async () => {
|
|
320
|
+
const mockTools = {
|
|
321
|
+
read_file: {
|
|
322
|
+
execute: async () => ({
|
|
323
|
+
content: JSON.stringify({
|
|
324
|
+
dependencies: { 'lodash': '^4.0.0' }
|
|
325
|
+
})
|
|
326
|
+
})
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
const result = await myCustomTool.execute(
|
|
331
|
+
{ checkUpdates: false },
|
|
332
|
+
{ tools: mockTools }
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
expect(result.total).toBe(1);
|
|
336
|
+
expect(result.dependencies.lodash).toBe('^4.0.0');
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Integration Testing
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Start the server
|
|
345
|
+
node server.mjs &
|
|
346
|
+
|
|
347
|
+
# Test with MCP inspector
|
|
348
|
+
mcp-inspector ws://localhost:3000 --call analyze_dependencies
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Best Practices
|
|
354
|
+
|
|
355
|
+
1. **Keep tools focused** - One tool, one purpose
|
|
356
|
+
2. **Validate inputs** - Check required fields and types
|
|
357
|
+
3. **Handle errors gracefully** - Return meaningful error messages
|
|
358
|
+
4. **Document well** - Clear descriptions help AI use tools correctly
|
|
359
|
+
5. **Test thoroughly** - Both unit and integration tests
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Next Steps
|
|
364
|
+
|
|
365
|
+
- [Batch Conversion](batch.md) - Convert multiple repos
|
|
366
|
+
- [API Reference](../api/index.md) - Full programmatic API
|
|
367
|
+
- [Architecture](../contributing/architecture.md) - How it all works
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Guides
|
|
2
|
+
|
|
3
|
+
Step-by-step tutorials for using GitHub to MCP with your favorite tools.
|
|
4
|
+
|
|
5
|
+
## Integration Guides
|
|
6
|
+
|
|
7
|
+
<div class="feature-grid" markdown>
|
|
8
|
+
|
|
9
|
+
<div class="feature-card" markdown>
|
|
10
|
+
|
|
11
|
+
### [Claude Desktop](claude-desktop.md)
|
|
12
|
+
Connect your MCP server to Claude Desktop for powerful AI conversations about your codebase.
|
|
13
|
+
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="feature-card" markdown>
|
|
17
|
+
|
|
18
|
+
### [Cursor](cursor.md)
|
|
19
|
+
Integrate MCP servers with Cursor IDE for enhanced AI-assisted coding.
|
|
20
|
+
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="feature-card" markdown>
|
|
24
|
+
|
|
25
|
+
### [VS Code](vscode.md)
|
|
26
|
+
Use MCP servers with VS Code and GitHub Copilot.
|
|
27
|
+
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
## Feature Guides
|
|
33
|
+
|
|
34
|
+
<div class="feature-grid" markdown>
|
|
35
|
+
|
|
36
|
+
<div class="feature-card" markdown>
|
|
37
|
+
|
|
38
|
+
### [Private Repos](private-repos.md)
|
|
39
|
+
Work with private repositories using GitHub authentication.
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div class="feature-card" markdown>
|
|
44
|
+
|
|
45
|
+
### [Custom Tools](custom-tools.md)
|
|
46
|
+
Modify and extend the generated MCP tools.
|
|
47
|
+
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="feature-card" markdown>
|
|
51
|
+
|
|
52
|
+
### [Batch Conversion](batch.md)
|
|
53
|
+
Convert multiple repositories at once.
|
|
54
|
+
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Quick Links
|
|
62
|
+
|
|
63
|
+
| Guide | Best For |
|
|
64
|
+
|-------|----------|
|
|
65
|
+
| [Claude Desktop](claude-desktop.md) | General AI conversations, research |
|
|
66
|
+
| [Cursor](cursor.md) | AI-assisted coding, refactoring |
|
|
67
|
+
| [VS Code](vscode.md) | GitHub Copilot integration |
|
|
68
|
+
| [Private Repos](private-repos.md) | Internal/proprietary codebases |
|
|
69
|
+
| [Custom Tools](custom-tools.md) | Advanced users, API extensions |
|
|
70
|
+
| [Batch Conversion](batch.md) | Multiple repos, automation |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Need Help?
|
|
75
|
+
|
|
76
|
+
- Check the [FAQ](../reference/index.md#faq)
|
|
77
|
+
- Join the [GitHub Discussions](https://github.com/nirholas/github-to-mcp/discussions)
|
|
78
|
+
- Report issues on [GitHub](https://github.com/nirholas/github-to-mcp/issues)
|