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,221 @@
|
|
|
1
|
+
# Working with Private Repositories
|
|
2
|
+
|
|
3
|
+
Use GitHub to MCP with private repositories using authentication.
|
|
4
|
+
|
|
5
|
+
## GitHub Token Setup
|
|
6
|
+
|
|
7
|
+
To access private repositories, you need a GitHub Personal Access Token (PAT).
|
|
8
|
+
|
|
9
|
+
### Creating a Token
|
|
10
|
+
|
|
11
|
+
1. Go to [GitHub Settings → Developer Settings → Personal Access Tokens](https://github.com/settings/tokens)
|
|
12
|
+
2. Click **"Generate new token (classic)"**
|
|
13
|
+
3. Give it a descriptive name (e.g., "GitHub to MCP")
|
|
14
|
+
4. Select scopes:
|
|
15
|
+
- `repo` - Full control of private repositories
|
|
16
|
+
- Or `read:packages` for read-only access
|
|
17
|
+
5. Click **"Generate token"**
|
|
18
|
+
6. **Copy the token immediately** (you won't see it again!)
|
|
19
|
+
|
|
20
|
+
### Token Scopes
|
|
21
|
+
|
|
22
|
+
| Scope | Description | Use Case |
|
|
23
|
+
|-------|-------------|----------|
|
|
24
|
+
| `repo` | Full access to private repos | Read/write operations |
|
|
25
|
+
| `public_repo` | Access to public repos only | Higher rate limits |
|
|
26
|
+
| `read:packages` | Read packages | Package registries |
|
|
27
|
+
|
|
28
|
+
## Using Your Token
|
|
29
|
+
|
|
30
|
+
### Environment Variable (Recommended)
|
|
31
|
+
|
|
32
|
+
Set the `GITHUB_TOKEN` environment variable:
|
|
33
|
+
|
|
34
|
+
=== "macOS/Linux"
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Add to ~/.bashrc or ~/.zshrc
|
|
38
|
+
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
=== "Windows PowerShell"
|
|
42
|
+
|
|
43
|
+
```powershell
|
|
44
|
+
$env:GITHUB_TOKEN="ghp_xxxxxxxxxxxxx"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
=== "Windows CMD"
|
|
48
|
+
|
|
49
|
+
```cmd
|
|
50
|
+
set GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Then use normally:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npx @nirholas/github-to-mcp https://github.com/your-org/private-repo
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### CLI Flag
|
|
60
|
+
|
|
61
|
+
Pass the token directly:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx @nirholas/github-to-mcp https://github.com/your-org/private-repo \
|
|
65
|
+
--token ghp_xxxxxxxxxxxxx
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
!!! warning "Security Warning"
|
|
69
|
+
Don't commit tokens to version control or share them in logs.
|
|
70
|
+
|
|
71
|
+
### Programmatic
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
75
|
+
|
|
76
|
+
const result = await generateFromGithub(
|
|
77
|
+
'https://github.com/your-org/private-repo',
|
|
78
|
+
{ token: process.env.GITHUB_TOKEN }
|
|
79
|
+
);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Web UI Authentication
|
|
83
|
+
|
|
84
|
+
On the [web interface](https://github-to-mcp.vercel.app):
|
|
85
|
+
|
|
86
|
+
1. Click the **"Settings"** gear icon
|
|
87
|
+
2. Enter your GitHub token in the **"GitHub Token"** field
|
|
88
|
+
3. The token is stored locally in your browser (not sent to servers)
|
|
89
|
+
4. Generate private repos normally
|
|
90
|
+
|
|
91
|
+
## GitHub Enterprise
|
|
92
|
+
|
|
93
|
+
For GitHub Enterprise Server, use the full URL:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx @nirholas/github-to-mcp https://github.your-company.com/org/repo \
|
|
97
|
+
--token ghp_xxxxxxxxxxxxx
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Rate Limits
|
|
101
|
+
|
|
102
|
+
| Authentication | Rate Limit |
|
|
103
|
+
|---------------|------------|
|
|
104
|
+
| Anonymous | 60 requests/hour |
|
|
105
|
+
| With Token | 5,000 requests/hour |
|
|
106
|
+
| GitHub Enterprise | Varies by instance |
|
|
107
|
+
|
|
108
|
+
!!! tip "Always Use a Token"
|
|
109
|
+
Even for public repos, using a token gives you 83x more API calls.
|
|
110
|
+
|
|
111
|
+
## Organization Repositories
|
|
112
|
+
|
|
113
|
+
### SSO-Enabled Organizations
|
|
114
|
+
|
|
115
|
+
If your organization uses SAML SSO:
|
|
116
|
+
|
|
117
|
+
1. Create your token normally
|
|
118
|
+
2. Go to [Token Settings](https://github.com/settings/tokens)
|
|
119
|
+
3. Find your token and click **"Enable SSO"**
|
|
120
|
+
4. Authorize for your organization
|
|
121
|
+
|
|
122
|
+
### Fine-Grained Tokens
|
|
123
|
+
|
|
124
|
+
For better security, use fine-grained tokens:
|
|
125
|
+
|
|
126
|
+
1. Go to [Fine-grained tokens](https://github.com/settings/tokens?type=beta)
|
|
127
|
+
2. Click **"Generate new token"**
|
|
128
|
+
3. Select specific repositories
|
|
129
|
+
4. Choose minimal permissions:
|
|
130
|
+
- `Contents: Read-only`
|
|
131
|
+
- `Metadata: Read-only`
|
|
132
|
+
|
|
133
|
+
## Security Best Practices
|
|
134
|
+
|
|
135
|
+
### 1. Rotate Tokens Regularly
|
|
136
|
+
|
|
137
|
+
Set a reminder to regenerate tokens every 90 days.
|
|
138
|
+
|
|
139
|
+
### 2. Use Minimum Scopes
|
|
140
|
+
|
|
141
|
+
Only request the permissions you need.
|
|
142
|
+
|
|
143
|
+
### 3. Never Commit Tokens
|
|
144
|
+
|
|
145
|
+
Add to `.gitignore`:
|
|
146
|
+
|
|
147
|
+
```gitignore
|
|
148
|
+
.env
|
|
149
|
+
.env.local
|
|
150
|
+
*.token
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 4. Use Environment Variables
|
|
154
|
+
|
|
155
|
+
Never hardcode tokens in your code.
|
|
156
|
+
|
|
157
|
+
### 5. Audit Token Usage
|
|
158
|
+
|
|
159
|
+
Check [Security Log](https://github.com/settings/security-log) for token activity.
|
|
160
|
+
|
|
161
|
+
## Troubleshooting
|
|
162
|
+
|
|
163
|
+
### "Bad credentials" Error
|
|
164
|
+
|
|
165
|
+
- Token may be expired
|
|
166
|
+
- Token may lack required scopes
|
|
167
|
+
- SSO may not be authorized
|
|
168
|
+
|
|
169
|
+
### "Not Found" Error
|
|
170
|
+
|
|
171
|
+
- Repo doesn't exist or is private
|
|
172
|
+
- Token lacks `repo` scope
|
|
173
|
+
- Token not authorized for organization
|
|
174
|
+
|
|
175
|
+
### Rate Limit Exceeded
|
|
176
|
+
|
|
177
|
+
- Wait for the limit to reset (usually 1 hour)
|
|
178
|
+
- Use a token if not already
|
|
179
|
+
- Check for API-heavy operations
|
|
180
|
+
|
|
181
|
+
### Check Token Validity
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
curl -H "Authorization: token ghp_xxxxx" \
|
|
185
|
+
https://api.github.com/user
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Should return your user information.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Example: Private Repo Workflow
|
|
193
|
+
|
|
194
|
+
Complete workflow for a private repository:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 1. Set token
|
|
198
|
+
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
|
|
199
|
+
|
|
200
|
+
# 2. Generate MCP server
|
|
201
|
+
npx @nirholas/github-to-mcp https://github.com/my-company/internal-api \
|
|
202
|
+
-o ~/mcp-servers/internal-api
|
|
203
|
+
|
|
204
|
+
# 3. Install dependencies
|
|
205
|
+
cd ~/mcp-servers/internal-api
|
|
206
|
+
npm install
|
|
207
|
+
|
|
208
|
+
# 4. Test the server
|
|
209
|
+
npm start
|
|
210
|
+
|
|
211
|
+
# 5. Add to Claude Desktop
|
|
212
|
+
# Edit claude_desktop_config.json
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Next Steps
|
|
218
|
+
|
|
219
|
+
- [Custom Tools](custom-tools.md) - Extend your MCP server
|
|
220
|
+
- [Claude Desktop](claude-desktop.md) - Connect your server
|
|
221
|
+
- [Configuration](../getting-started/configuration.md) - More options
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# VS Code Integration
|
|
2
|
+
|
|
3
|
+
Use GitHub to MCP with Visual Studio Code for enhanced AI-assisted development.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
VS Code can use MCP servers through several methods:
|
|
8
|
+
|
|
9
|
+
1. **GitHub Copilot Chat** - Native MCP support (coming soon)
|
|
10
|
+
2. **Continue Extension** - MCP-enabled coding assistant
|
|
11
|
+
3. **Custom Extensions** - Build your own integration
|
|
12
|
+
|
|
13
|
+
## Method 1: Continue Extension
|
|
14
|
+
|
|
15
|
+
[Continue](https://continue.dev) is an open-source coding assistant that supports MCP.
|
|
16
|
+
|
|
17
|
+
### Installation
|
|
18
|
+
|
|
19
|
+
1. Install the [Continue extension](https://marketplace.visualstudio.com/items?itemName=Continue.continue)
|
|
20
|
+
2. Open VS Code command palette: `Cmd/Ctrl + Shift + P`
|
|
21
|
+
3. Search "Continue: Open Configuration"
|
|
22
|
+
|
|
23
|
+
### Configuration
|
|
24
|
+
|
|
25
|
+
Edit `~/.continue/config.json`:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"models": [...],
|
|
30
|
+
"mcpServers": [
|
|
31
|
+
{
|
|
32
|
+
"name": "my-repo",
|
|
33
|
+
"command": "node",
|
|
34
|
+
"args": ["/path/to/my-repo-mcp/server.mjs"]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Usage
|
|
41
|
+
|
|
42
|
+
1. Open Continue panel (`Cmd/Ctrl + L`)
|
|
43
|
+
2. Ask questions referencing your MCP server
|
|
44
|
+
3. Continue will use MCP tools automatically
|
|
45
|
+
|
|
46
|
+
## Method 2: MCP Inspector
|
|
47
|
+
|
|
48
|
+
For testing and debugging MCP servers in VS Code:
|
|
49
|
+
|
|
50
|
+
### Install MCP Inspector
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install -g @modelcontextprotocol/inspector
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Use with VS Code Terminal
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Start your MCP server
|
|
60
|
+
cd ~/mcp-servers/my-repo
|
|
61
|
+
node server.mjs
|
|
62
|
+
|
|
63
|
+
# In another terminal, inspect
|
|
64
|
+
mcp-inspector ws://localhost:3000
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Method 3: Custom Task
|
|
68
|
+
|
|
69
|
+
Create a VS Code task to manage MCP servers:
|
|
70
|
+
|
|
71
|
+
### .vscode/tasks.json
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"version": "2.0.0",
|
|
76
|
+
"tasks": [
|
|
77
|
+
{
|
|
78
|
+
"label": "Start MCP Server",
|
|
79
|
+
"type": "shell",
|
|
80
|
+
"command": "node",
|
|
81
|
+
"args": ["${workspaceFolder}/mcp-server/server.mjs"],
|
|
82
|
+
"isBackground": true,
|
|
83
|
+
"problemMatcher": [],
|
|
84
|
+
"presentation": {
|
|
85
|
+
"reveal": "always",
|
|
86
|
+
"panel": "dedicated"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"label": "Generate MCP Server",
|
|
91
|
+
"type": "shell",
|
|
92
|
+
"command": "npx",
|
|
93
|
+
"args": [
|
|
94
|
+
"@nirholas/github-to-mcp",
|
|
95
|
+
"${input:repoUrl}",
|
|
96
|
+
"-o",
|
|
97
|
+
"${workspaceFolder}/mcp-server"
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"inputs": [
|
|
102
|
+
{
|
|
103
|
+
"id": "repoUrl",
|
|
104
|
+
"type": "promptString",
|
|
105
|
+
"description": "GitHub repository URL"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Usage
|
|
112
|
+
|
|
113
|
+
1. `Cmd/Ctrl + Shift + P` → "Tasks: Run Task"
|
|
114
|
+
2. Select "Generate MCP Server" or "Start MCP Server"
|
|
115
|
+
|
|
116
|
+
## Workspace Setup
|
|
117
|
+
|
|
118
|
+
### Project Structure
|
|
119
|
+
|
|
120
|
+
Recommended structure for projects using MCP:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
my-project/
|
|
124
|
+
├── src/
|
|
125
|
+
├── .vscode/
|
|
126
|
+
│ ├── tasks.json # MCP server tasks
|
|
127
|
+
│ └── settings.json # Continue/MCP config
|
|
128
|
+
├── mcp-server/ # Generated MCP server
|
|
129
|
+
│ ├── server.mjs
|
|
130
|
+
│ └── package.json
|
|
131
|
+
└── package.json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Generate on Clone
|
|
135
|
+
|
|
136
|
+
Add a setup script to package.json:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"scripts": {
|
|
141
|
+
"setup:mcp": "npx @nirholas/github-to-mcp https://github.com/owner/repo -o ./mcp-server",
|
|
142
|
+
"mcp:start": "node ./mcp-server/server.mjs"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## GitHub Copilot Integration
|
|
148
|
+
|
|
149
|
+
!!! note "Coming Soon"
|
|
150
|
+
Native MCP support in GitHub Copilot Chat is planned. Until then, use Continue or custom integrations.
|
|
151
|
+
|
|
152
|
+
### Current Workaround
|
|
153
|
+
|
|
154
|
+
Use MCP-generated code as context for Copilot:
|
|
155
|
+
|
|
156
|
+
1. Generate server for a reference repo
|
|
157
|
+
2. Keep the `tools/` directory open in VS Code
|
|
158
|
+
3. Copilot will use it as context when generating code
|
|
159
|
+
|
|
160
|
+
## Tips for VS Code Users
|
|
161
|
+
|
|
162
|
+
### 1. Use Multi-Root Workspaces
|
|
163
|
+
|
|
164
|
+
Add MCP servers as workspace folders:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
// my-project.code-workspace
|
|
168
|
+
{
|
|
169
|
+
"folders": [
|
|
170
|
+
{ "path": "." },
|
|
171
|
+
{ "path": "../mcp-servers/stripe", "name": "Stripe MCP" },
|
|
172
|
+
{ "path": "../mcp-servers/openai", "name": "OpenAI MCP" }
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 2. Create Snippets
|
|
178
|
+
|
|
179
|
+
Add snippets for MCP generation:
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
// .vscode/snippets/mcp.code-snippets
|
|
183
|
+
{
|
|
184
|
+
"Generate MCP": {
|
|
185
|
+
"prefix": "genmcp",
|
|
186
|
+
"body": [
|
|
187
|
+
"npx @nirholas/github-to-mcp $1 -o ./$2-mcp"
|
|
188
|
+
],
|
|
189
|
+
"description": "Generate MCP server command"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 3. Terminal Profiles
|
|
195
|
+
|
|
196
|
+
Add a profile for MCP development:
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
// settings.json
|
|
200
|
+
{
|
|
201
|
+
"terminal.integrated.profiles.osx": {
|
|
202
|
+
"MCP Dev": {
|
|
203
|
+
"path": "bash",
|
|
204
|
+
"args": ["-l"],
|
|
205
|
+
"env": {
|
|
206
|
+
"GITHUB_TOKEN": "${env:GITHUB_TOKEN}"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Troubleshooting
|
|
216
|
+
|
|
217
|
+
### Extension Not Finding Server
|
|
218
|
+
|
|
219
|
+
Ensure the path is absolute and the server is executable:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
chmod +x /path/to/server.mjs
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Node Version Issues
|
|
226
|
+
|
|
227
|
+
Specify Node version in your launch config:
|
|
228
|
+
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"mcpServers": [
|
|
232
|
+
{
|
|
233
|
+
"name": "my-repo",
|
|
234
|
+
"command": "/usr/local/bin/node",
|
|
235
|
+
"args": ["/path/to/server.mjs"]
|
|
236
|
+
}
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Next Steps
|
|
244
|
+
|
|
245
|
+
- [Private Repos](private-repos.md) - Work with authentication
|
|
246
|
+
- [Custom Tools](custom-tools.md) - Extend your MCP server
|
|
247
|
+
- [CLI Reference](../cli/index.md) - Command-line options
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
hide:
|
|
3
|
+
- navigation
|
|
4
|
+
- toc
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<style>
|
|
8
|
+
.md-content__button {
|
|
9
|
+
display: none;
|
|
10
|
+
}
|
|
11
|
+
</style>
|
|
12
|
+
|
|
13
|
+
<div class="hero" markdown>
|
|
14
|
+
|
|
15
|
+
# GitHub to MCP 🚀
|
|
16
|
+
|
|
17
|
+
**Convert any GitHub repository into an MCP server in seconds**
|
|
18
|
+
|
|
19
|
+
Give Claude, ChatGPT, Cursor, Windsurf, Cline, and any AI assistant instant access to any codebase.
|
|
20
|
+
|
|
21
|
+
[Get Started](getting-started/index.md){ .md-button .md-button--primary }
|
|
22
|
+
[Try Web App](https://github-to-mcp.vercel.app){ .md-button }
|
|
23
|
+
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## What is GitHub to MCP?
|
|
29
|
+
|
|
30
|
+
**GitHub to MCP** converts any GitHub repository into a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server. MCP is the open standard that lets AI assistants like **Claude**, **ChatGPT**, **Cursor**, **Windsurf**, and **Cline** interact with external tools and data.
|
|
31
|
+
|
|
32
|
+
**In plain English:** Paste a GitHub URL → Get an MCP server → Your AI can now read files, search code, and use the repo's APIs.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Why use this?
|
|
37
|
+
|
|
38
|
+
<div class="feature-grid" markdown>
|
|
39
|
+
|
|
40
|
+
<div class="feature-card" markdown>
|
|
41
|
+
|
|
42
|
+
### 🚀 Instant Setup
|
|
43
|
+
|
|
44
|
+
No manual configuration required. Just paste a URL and you're ready to go.
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="feature-card" markdown>
|
|
49
|
+
|
|
50
|
+
### 🤖 Works with Any AI
|
|
51
|
+
|
|
52
|
+
Claude Desktop, ChatGPT, Cursor, VS Code Copilot, Cline, Continue, and more.
|
|
53
|
+
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="feature-card" markdown>
|
|
57
|
+
|
|
58
|
+
### 📦 Zero Config
|
|
59
|
+
|
|
60
|
+
Generates a complete, runnable MCP server with all dependencies included.
|
|
61
|
+
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div class="feature-card" markdown>
|
|
65
|
+
|
|
66
|
+
### 🔍 Smart Extraction
|
|
67
|
+
|
|
68
|
+
Automatically finds APIs, tools, and functions from OpenAPI specs, code, and docs.
|
|
69
|
+
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Quick Start
|
|
77
|
+
|
|
78
|
+
### Web UI (Easiest)
|
|
79
|
+
|
|
80
|
+
Visit **[github-to-mcp.vercel.app](https://github-to-mcp.vercel.app)** — Paste any GitHub URL, click Generate, download your MCP server.
|
|
81
|
+
|
|
82
|
+
### CLI (One Command)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx @nirholas/github-to-mcp https://github.com/stripe/stripe-node
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Programmatic (For Automation)
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
92
|
+
|
|
93
|
+
const result = await generateFromGithub('https://github.com/stripe/stripe-node');
|
|
94
|
+
console.log(`Generated ${result.tools.length} tools`);
|
|
95
|
+
await result.save('./my-mcp-server');
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## How It Works
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
104
|
+
│ GitHub Repository │
|
|
105
|
+
└─────────────────────────────────────────────────────────────┘
|
|
106
|
+
↓
|
|
107
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
108
|
+
│ 1. Fetch & Classify → Detect repo type (API/CLI/Lib) │
|
|
109
|
+
│ 2. Extract Tools → OpenAPI, GraphQL, Code, README │
|
|
110
|
+
│ 3. Generate Server → TypeScript or Python MCP server │
|
|
111
|
+
│ 4. Bundle Output → Complete package with dependencies │
|
|
112
|
+
└─────────────────────────────────────────────────────────────┘
|
|
113
|
+
↓
|
|
114
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
115
|
+
│ Ready-to-use MCP Server + Config │
|
|
116
|
+
└─────────────────────────────────────────────────────────────┘
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Features
|
|
122
|
+
|
|
123
|
+
| Feature | Description |
|
|
124
|
+
|---------|-------------|
|
|
125
|
+
| 🔄 **Universal Conversion** | Every repo gets 4 base tools: `read_file`, `list_files`, `search_code`, `get_readme` |
|
|
126
|
+
| 🔍 **Smart Detection** | Extracts tools from OpenAPI/Swagger specs, GraphQL schemas, Python decorators, and README docs |
|
|
127
|
+
| 🏷️ **Auto Classification** | Identifies repo type (API, MCP server, CLI, library, docs) to optimize extraction |
|
|
128
|
+
| 🐍 **Multi-language Output** | Generate TypeScript or Python MCP servers |
|
|
129
|
+
| ⚡ **Instant Deploy** | One-click Vercel deployment for hosted MCP servers |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Use Cases
|
|
134
|
+
|
|
135
|
+
- **"I want Claude to understand my codebase"** → Generate an MCP server, add to Claude Desktop
|
|
136
|
+
- **"I want to query the Stripe API from ChatGPT"** → Convert stripe/stripe-node, get typed tools
|
|
137
|
+
- **"I want Cursor to use my internal SDK"** → Point at your private repo (with token)
|
|
138
|
+
- **"I want to wrap any REST API for AI"** → Convert any repo with an OpenAPI spec
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
<div class="quick-links" markdown>
|
|
143
|
+
|
|
144
|
+
[:fontawesome-solid-rocket: **Getting Started**](getting-started/index.md)
|
|
145
|
+
Learn how to install and use GitHub to MCP
|
|
146
|
+
|
|
147
|
+
[:fontawesome-solid-book: **Guides**](guides/index.md)
|
|
148
|
+
Integration tutorials for Claude, Cursor, VS Code
|
|
149
|
+
|
|
150
|
+
[:fontawesome-solid-terminal: **CLI Reference**](cli/index.md)
|
|
151
|
+
Command-line tool documentation
|
|
152
|
+
|
|
153
|
+
[:fontawesome-solid-code: **API Reference**](api/index.md)
|
|
154
|
+
Programmatic API for automation
|
|
155
|
+
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Related Projects
|
|
161
|
+
|
|
162
|
+
- [Model Context Protocol](https://modelcontextprotocol.io) — The protocol specification
|
|
163
|
+
- [MCP Servers](https://github.com/modelcontextprotocol/servers) — Official MCP server examples
|
|
164
|
+
- [Claude Desktop](https://claude.ai/download) — AI assistant with MCP support
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
<div style="text-align: center; margin-top: 3rem;" markdown>
|
|
169
|
+
|
|
170
|
+
**Built by [nirholas](https://github.com/nirholas)** • MIT License
|
|
171
|
+
|
|
172
|
+
[:fontawesome-brands-github: GitHub](https://github.com/nirholas/github-to-mcp){ .md-button }
|
|
173
|
+
[:fontawesome-brands-npm: npm](https://www.npmjs.com/package/@nirholas/github-to-mcp){ .md-button }
|
|
174
|
+
|
|
175
|
+
</div>
|