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,254 @@
|
|
|
1
|
+
# Repository Classification
|
|
2
|
+
|
|
3
|
+
How GitHub to MCP analyzes and categorizes repositories.
|
|
4
|
+
|
|
5
|
+
## Why Classification Matters
|
|
6
|
+
|
|
7
|
+
Different repository types require different extraction strategies:
|
|
8
|
+
|
|
9
|
+
- **API SDKs** → Extract from OpenAPI specs
|
|
10
|
+
- **MCP Servers** → Parse existing tool definitions
|
|
11
|
+
- **CLI Tools** → Extract command structure
|
|
12
|
+
- **Libraries** → Default to universal tools
|
|
13
|
+
|
|
14
|
+
## Classification Types
|
|
15
|
+
|
|
16
|
+
### mcp-server
|
|
17
|
+
|
|
18
|
+
An existing MCP server implementation.
|
|
19
|
+
|
|
20
|
+
**Indicators:**
|
|
21
|
+
- `@modelcontextprotocol/sdk` in dependencies
|
|
22
|
+
- `mcp.json` configuration file
|
|
23
|
+
- `server.tool()` patterns in code
|
|
24
|
+
- "MCP" in README/description
|
|
25
|
+
|
|
26
|
+
**Extraction Strategy:**
|
|
27
|
+
Parse existing tool definitions and re-export them.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
### api-sdk
|
|
32
|
+
|
|
33
|
+
A client library for REST or GraphQL APIs.
|
|
34
|
+
|
|
35
|
+
**Indicators:**
|
|
36
|
+
- `openapi.json`, `swagger.yaml` files
|
|
37
|
+
- `schema.graphql` file
|
|
38
|
+
- Package name contains `-sdk`, `-client`, `-api`
|
|
39
|
+
- REST client patterns in code
|
|
40
|
+
|
|
41
|
+
**Extraction Strategy:**
|
|
42
|
+
Parse OpenAPI/GraphQL specs, generate typed API tools.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### cli-tool
|
|
47
|
+
|
|
48
|
+
A command-line interface application.
|
|
49
|
+
|
|
50
|
+
**Indicators:**
|
|
51
|
+
- `bin` entry in package.json
|
|
52
|
+
- `argparse`, `commander`, `yargs` dependencies
|
|
53
|
+
- `click`, `typer` for Python
|
|
54
|
+
- CLI documentation in README
|
|
55
|
+
|
|
56
|
+
**Extraction Strategy:**
|
|
57
|
+
Parse CLI help output or code to extract commands.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### library
|
|
62
|
+
|
|
63
|
+
A general-purpose programming library.
|
|
64
|
+
|
|
65
|
+
**Indicators:**
|
|
66
|
+
- Published to npm/PyPI
|
|
67
|
+
- Exports functions/classes
|
|
68
|
+
- No specific API or CLI patterns
|
|
69
|
+
- Generic package name
|
|
70
|
+
|
|
71
|
+
**Extraction Strategy:**
|
|
72
|
+
Universal tools only, plus any detected patterns.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### documentation
|
|
77
|
+
|
|
78
|
+
A documentation-only repository.
|
|
79
|
+
|
|
80
|
+
**Indicators:**
|
|
81
|
+
- Primarily markdown/MDX files
|
|
82
|
+
- MkDocs, Docusaurus, Nextra config
|
|
83
|
+
- No source code directories
|
|
84
|
+
- "docs" in repo name
|
|
85
|
+
|
|
86
|
+
**Extraction Strategy:**
|
|
87
|
+
Universal tools optimized for documentation browsing.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
### data
|
|
92
|
+
|
|
93
|
+
A data or configuration repository.
|
|
94
|
+
|
|
95
|
+
**Indicators:**
|
|
96
|
+
- JSON, YAML, CSV files
|
|
97
|
+
- No source code
|
|
98
|
+
- "data", "config", "assets" in name
|
|
99
|
+
- Large binary files
|
|
100
|
+
|
|
101
|
+
**Extraction Strategy:**
|
|
102
|
+
Universal tools for data access.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### unknown
|
|
107
|
+
|
|
108
|
+
Repository type couldn't be determined.
|
|
109
|
+
|
|
110
|
+
**Extraction Strategy:**
|
|
111
|
+
Universal tools only.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Classification Logic
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
function classifyRepository(repo: RepositoryInfo): RepositoryType {
|
|
119
|
+
const { readme, files, packageJson } = repo;
|
|
120
|
+
|
|
121
|
+
// Priority 1: Check for MCP server
|
|
122
|
+
if (isMcpServer(packageJson, files)) {
|
|
123
|
+
return 'mcp-server';
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Priority 2: Check for API patterns
|
|
127
|
+
if (hasApiSpecs(files)) {
|
|
128
|
+
return 'api-sdk';
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Priority 3: Check for CLI
|
|
132
|
+
if (isCliTool(packageJson, files)) {
|
|
133
|
+
return 'cli-tool';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Priority 4: Check for documentation
|
|
137
|
+
if (isDocumentation(files, readme)) {
|
|
138
|
+
return 'documentation';
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Priority 5: Check for data repo
|
|
142
|
+
if (isDataRepo(files)) {
|
|
143
|
+
return 'data';
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Priority 6: Check for library
|
|
147
|
+
if (isLibrary(packageJson)) {
|
|
148
|
+
return 'library';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return 'unknown';
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Detection Functions
|
|
156
|
+
|
|
157
|
+
### isMcpServer
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
function isMcpServer(pkg: PackageJson, files: FileTree): boolean {
|
|
161
|
+
// Check dependencies
|
|
162
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
163
|
+
if (deps['@modelcontextprotocol/sdk']) return true;
|
|
164
|
+
|
|
165
|
+
// Check for MCP config
|
|
166
|
+
if (files.includes('mcp.json')) return true;
|
|
167
|
+
|
|
168
|
+
// Check for MCP patterns in source
|
|
169
|
+
const sourceFiles = files.filter(f => f.endsWith('.ts') || f.endsWith('.js'));
|
|
170
|
+
for (const file of sourceFiles) {
|
|
171
|
+
const content = await readFile(file);
|
|
172
|
+
if (content.includes('server.tool(') ||
|
|
173
|
+
content.includes('McpServer')) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### hasApiSpecs
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
function hasApiSpecs(files: FileTree): boolean {
|
|
186
|
+
const specPatterns = [
|
|
187
|
+
'openapi.json', 'openapi.yaml', 'openapi.yml',
|
|
188
|
+
'swagger.json', 'swagger.yaml', 'swagger.yml',
|
|
189
|
+
'api-spec.json', 'api-spec.yaml',
|
|
190
|
+
'schema.graphql', 'schema.gql',
|
|
191
|
+
];
|
|
192
|
+
|
|
193
|
+
return specPatterns.some(pattern =>
|
|
194
|
+
files.some(f => f.endsWith(pattern))
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### isCliTool
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
function isCliTool(pkg: PackageJson, files: FileTree): boolean {
|
|
203
|
+
// Check for bin entry
|
|
204
|
+
if (pkg.bin) return true;
|
|
205
|
+
|
|
206
|
+
// Check for CLI dependencies
|
|
207
|
+
const cliDeps = ['commander', 'yargs', 'meow', 'cac', 'argparse'];
|
|
208
|
+
const deps = Object.keys({ ...pkg.dependencies, ...pkg.devDependencies });
|
|
209
|
+
if (cliDeps.some(d => deps.includes(d))) return true;
|
|
210
|
+
|
|
211
|
+
// Check for cli directory
|
|
212
|
+
if (files.some(f => f.startsWith('cli/') || f.startsWith('bin/'))) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Manual Override
|
|
221
|
+
|
|
222
|
+
Classification can be overridden via options:
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
const result = await generateFromGithub(url, {
|
|
226
|
+
forceType: 'api-sdk' // Override automatic classification
|
|
227
|
+
});
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Or via CLI:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
github-to-mcp <url> --type api-sdk
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Classification Impact
|
|
237
|
+
|
|
238
|
+
| Type | Universal Tools | OpenAPI | GraphQL | Code Analysis |
|
|
239
|
+
|------|-----------------|---------|---------|---------------|
|
|
240
|
+
| mcp-server | ✅ | ❌ | ❌ | ✅ (MCP patterns) |
|
|
241
|
+
| api-sdk | ✅ | ✅ | ✅ | ❌ |
|
|
242
|
+
| cli-tool | ✅ | ❌ | ❌ | ✅ (CLI patterns) |
|
|
243
|
+
| library | ✅ | ❌ | ❌ | Limited |
|
|
244
|
+
| documentation | ✅ | ❌ | ❌ | ❌ |
|
|
245
|
+
| data | ✅ | ❌ | ❌ | ❌ |
|
|
246
|
+
| unknown | ✅ | ❌ | ❌ | ❌ |
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## See Also
|
|
251
|
+
|
|
252
|
+
- [How It Works](how-it-works.md) - Full extraction flow
|
|
253
|
+
- [Tool Types](tool-types.md) - Understanding tools
|
|
254
|
+
- [Configuration](../getting-started/configuration.md) - Override options
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
# How It Works
|
|
2
|
+
|
|
3
|
+
A deep dive into the GitHub to MCP conversion process.
|
|
4
|
+
|
|
5
|
+
## High-Level Flow
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
9
|
+
│ User Input (GitHub URL) │
|
|
10
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
11
|
+
↓
|
|
12
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
13
|
+
│ 1. FETCH │ Download repo metadata, README, file tree │
|
|
14
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
15
|
+
↓
|
|
16
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
17
|
+
│ 2. CLASSIFY │ Determine repo type (API, CLI, Library...) │
|
|
18
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
19
|
+
↓
|
|
20
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
21
|
+
│ 3. EXTRACT │ Find tools from OpenAPI, GraphQL, code, etc. │
|
|
22
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
23
|
+
↓
|
|
24
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
25
|
+
│ 4. GENERATE │ Create MCP server code and tool impls │
|
|
26
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
27
|
+
↓
|
|
28
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ 5. PACKAGE │ Bundle with dependencies and config │
|
|
30
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Step 1: Fetch Repository
|
|
34
|
+
|
|
35
|
+
The process starts by fetching information from GitHub:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
// Pseudocode
|
|
39
|
+
const repoInfo = await githubClient.getRepository(url);
|
|
40
|
+
const readme = await githubClient.getReadme(url);
|
|
41
|
+
const fileTree = await githubClient.getFileTree(url, { depth: 3 });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### What's Fetched
|
|
45
|
+
|
|
46
|
+
| Data | Purpose |
|
|
47
|
+
|------|---------|
|
|
48
|
+
| Repository metadata | Name, description, stars, language |
|
|
49
|
+
| README content | Context for classification |
|
|
50
|
+
| File tree | Find specs, source files |
|
|
51
|
+
| Package files | package.json, pyproject.toml |
|
|
52
|
+
| Spec files | openapi.json, schema.graphql |
|
|
53
|
+
|
|
54
|
+
### Rate Limiting
|
|
55
|
+
|
|
56
|
+
GitHub API limits are handled automatically:
|
|
57
|
+
|
|
58
|
+
- **Anonymous**: 60 requests/hour (very limited)
|
|
59
|
+
- **Authenticated**: 5,000 requests/hour (recommended)
|
|
60
|
+
|
|
61
|
+
## Step 2: Classify Repository
|
|
62
|
+
|
|
63
|
+
The repo is analyzed to determine its type:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
function classifyRepository(repoInfo): RepositoryType {
|
|
67
|
+
// Check for MCP server indicators
|
|
68
|
+
if (hasMcpDependency(repoInfo) || hasMcpServerFile(repoInfo)) {
|
|
69
|
+
return 'mcp-server';
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Check for API patterns
|
|
73
|
+
if (hasOpenApiSpec(repoInfo) || hasGraphqlSchema(repoInfo)) {
|
|
74
|
+
return 'api-sdk';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Check for CLI patterns
|
|
78
|
+
if (hasCliPackage(repoInfo) || hasBinEntry(repoInfo)) {
|
|
79
|
+
return 'cli-tool';
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ... more checks
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Classification Types
|
|
87
|
+
|
|
88
|
+
| Type | Indicators | Tool Extraction |
|
|
89
|
+
|------|------------|-----------------|
|
|
90
|
+
| `mcp-server` | `@modelcontextprotocol/sdk` dependency | Parse existing tools |
|
|
91
|
+
| `api-sdk` | OpenAPI spec, REST client patterns | Extract API endpoints |
|
|
92
|
+
| `cli-tool` | `bin` in package.json, argparse | Extract CLI commands |
|
|
93
|
+
| `library` | Generic npm/pip package | Universal tools only |
|
|
94
|
+
| `documentation` | Mostly markdown files | Universal tools only |
|
|
95
|
+
|
|
96
|
+
## Step 3: Extract Tools
|
|
97
|
+
|
|
98
|
+
Tools are extracted from multiple sources:
|
|
99
|
+
|
|
100
|
+
### Universal Tools
|
|
101
|
+
|
|
102
|
+
Always included (unless disabled):
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
const universalTools = [
|
|
106
|
+
{ name: 'get_readme', source: 'universal' },
|
|
107
|
+
{ name: 'list_files', source: 'universal' },
|
|
108
|
+
{ name: 'read_file', source: 'universal' },
|
|
109
|
+
{ name: 'search_code', source: 'universal' },
|
|
110
|
+
];
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### OpenAPI Extraction
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Find and parse OpenAPI specs
|
|
117
|
+
const specs = findOpenApiSpecs(fileTree);
|
|
118
|
+
|
|
119
|
+
for (const spec of specs) {
|
|
120
|
+
const parsed = await parseOpenApi(spec.content);
|
|
121
|
+
|
|
122
|
+
for (const path of Object.keys(parsed.paths)) {
|
|
123
|
+
for (const method of ['get', 'post', 'put', 'delete']) {
|
|
124
|
+
const operation = parsed.paths[path][method];
|
|
125
|
+
if (operation) {
|
|
126
|
+
tools.push(createToolFromOperation(operation, path, method));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### GraphQL Extraction
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// Parse GraphQL schema
|
|
137
|
+
const schema = parseGraphqlSchema(schemaContent);
|
|
138
|
+
|
|
139
|
+
// Extract queries as tools
|
|
140
|
+
for (const query of schema.queries) {
|
|
141
|
+
tools.push({
|
|
142
|
+
name: query.name,
|
|
143
|
+
description: query.description,
|
|
144
|
+
inputSchema: convertGraphqlArgsToJsonSchema(query.args),
|
|
145
|
+
source: 'graphql',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Extract mutations as tools
|
|
150
|
+
for (const mutation of schema.mutations) {
|
|
151
|
+
tools.push({
|
|
152
|
+
name: mutation.name,
|
|
153
|
+
// ...
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Code Analysis
|
|
159
|
+
|
|
160
|
+
For MCP servers and Python packages:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// Find @mcp.tool decorators
|
|
164
|
+
const mcpTools = findMcpDecorators(sourceFiles);
|
|
165
|
+
|
|
166
|
+
// Find FastAPI/Flask routes
|
|
167
|
+
const apiRoutes = findApiRoutes(sourceFiles);
|
|
168
|
+
|
|
169
|
+
// Find CLI commands
|
|
170
|
+
const cliCommands = findCliCommands(sourceFiles);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Step 4: Generate Code
|
|
174
|
+
|
|
175
|
+
The extracted tools are converted to working MCP server code:
|
|
176
|
+
|
|
177
|
+
### Server Template
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
const serverCode = `
|
|
181
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
182
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
183
|
+
|
|
184
|
+
const server = new Server({
|
|
185
|
+
name: '${repoName}-mcp',
|
|
186
|
+
version: '1.0.0',
|
|
187
|
+
}, {
|
|
188
|
+
capabilities: {
|
|
189
|
+
tools: {},
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Register tools
|
|
194
|
+
${tools.map(tool => generateToolRegistration(tool)).join('\n')}
|
|
195
|
+
|
|
196
|
+
// Start server
|
|
197
|
+
const transport = new StdioServerTransport();
|
|
198
|
+
await server.connect(transport);
|
|
199
|
+
`;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Tool Implementation
|
|
203
|
+
|
|
204
|
+
Each tool gets an implementation:
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
function generateToolImplementation(tool: Tool): string {
|
|
208
|
+
if (tool.source === 'universal') {
|
|
209
|
+
return universalImplementations[tool.name];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (tool.source === 'openapi') {
|
|
213
|
+
return `
|
|
214
|
+
async function ${tool.name}(params) {
|
|
215
|
+
const response = await fetch('${tool.endpoint}', {
|
|
216
|
+
method: '${tool.method}',
|
|
217
|
+
headers: { 'Content-Type': 'application/json' },
|
|
218
|
+
body: JSON.stringify(params),
|
|
219
|
+
});
|
|
220
|
+
return response.json();
|
|
221
|
+
}`;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// ... other sources
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Step 5: Package Output
|
|
229
|
+
|
|
230
|
+
Finally, everything is bundled:
|
|
231
|
+
|
|
232
|
+
### Output Structure
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
output/
|
|
236
|
+
├── package.json # Dependencies
|
|
237
|
+
├── tsconfig.json # TypeScript config
|
|
238
|
+
├── server.ts # Main server (source)
|
|
239
|
+
├── server.mjs # Compiled server
|
|
240
|
+
├── tools/
|
|
241
|
+
│ ├── index.ts
|
|
242
|
+
│ ├── universal/
|
|
243
|
+
│ │ ├── read_file.ts
|
|
244
|
+
│ │ └── ...
|
|
245
|
+
│ └── extracted/
|
|
246
|
+
│ ├── create_customer.ts
|
|
247
|
+
│ └── ...
|
|
248
|
+
└── README.md # Usage instructions
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Generated package.json
|
|
252
|
+
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"name": "repo-name-mcp",
|
|
256
|
+
"version": "1.0.0",
|
|
257
|
+
"type": "module",
|
|
258
|
+
"main": "server.mjs",
|
|
259
|
+
"scripts": {
|
|
260
|
+
"start": "node server.mjs",
|
|
261
|
+
"build": "tsc"
|
|
262
|
+
},
|
|
263
|
+
"dependencies": {
|
|
264
|
+
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Performance Considerations
|
|
272
|
+
|
|
273
|
+
### Caching
|
|
274
|
+
|
|
275
|
+
- Repository metadata is cached for 5 minutes
|
|
276
|
+
- File contents are cached per session
|
|
277
|
+
- OpenAPI parsing results are memoized
|
|
278
|
+
|
|
279
|
+
### Parallel Processing
|
|
280
|
+
|
|
281
|
+
- Multiple files are fetched in parallel
|
|
282
|
+
- Tool extraction runs concurrently
|
|
283
|
+
- Limited by GitHub API rate limits
|
|
284
|
+
|
|
285
|
+
### Size Limits
|
|
286
|
+
|
|
287
|
+
| Limit | Default | Purpose |
|
|
288
|
+
|-------|---------|---------|
|
|
289
|
+
| Max depth | 3 | Prevent scanning huge repos |
|
|
290
|
+
| Max file size | 100KB | Skip large binary files |
|
|
291
|
+
| Max files | 1000 | Reasonable processing time |
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## See Also
|
|
296
|
+
|
|
297
|
+
- [Tool Types](tool-types.md) - Understanding extracted tools
|
|
298
|
+
- [Classification](classification.md) - Repository classification
|
|
299
|
+
- [Architecture](../contributing/architecture.md) - Code architecture
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Concepts
|
|
2
|
+
|
|
3
|
+
Understand how GitHub to MCP works under the hood.
|
|
4
|
+
|
|
5
|
+
## Core Concepts
|
|
6
|
+
|
|
7
|
+
<div class="feature-grid" markdown>
|
|
8
|
+
|
|
9
|
+
<div class="feature-card" markdown>
|
|
10
|
+
|
|
11
|
+
### [How It Works](how-it-works.md)
|
|
12
|
+
|
|
13
|
+
The end-to-end flow from GitHub URL to MCP server.
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="feature-card" markdown>
|
|
18
|
+
|
|
19
|
+
### [Tool Types](tool-types.md)
|
|
20
|
+
|
|
21
|
+
Understanding universal and extracted tools.
|
|
22
|
+
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="feature-card" markdown>
|
|
26
|
+
|
|
27
|
+
### [Repository Classification](classification.md)
|
|
28
|
+
|
|
29
|
+
How repos are analyzed and categorized.
|
|
30
|
+
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div class="feature-card" markdown>
|
|
34
|
+
|
|
35
|
+
### [MCP Protocol](mcp-protocol.md)
|
|
36
|
+
|
|
37
|
+
Understanding the Model Context Protocol.
|
|
38
|
+
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
## Quick Overview
|
|
44
|
+
|
|
45
|
+
### What is MCP?
|
|
46
|
+
|
|
47
|
+
The **Model Context Protocol (MCP)** is an open standard that enables AI assistants to interact with external tools and data sources. It provides a standardized way for AI models to:
|
|
48
|
+
|
|
49
|
+
- Call external functions (tools)
|
|
50
|
+
- Access external data (resources)
|
|
51
|
+
- Use predefined conversation templates (prompts)
|
|
52
|
+
|
|
53
|
+
### What GitHub to MCP Does
|
|
54
|
+
|
|
55
|
+
1. **Fetches** a GitHub repository
|
|
56
|
+
2. **Analyzes** its structure and contents
|
|
57
|
+
3. **Extracts** tool definitions from various sources
|
|
58
|
+
4. **Generates** a complete MCP server
|
|
59
|
+
5. **Packages** everything for easy deployment
|
|
60
|
+
|
|
61
|
+
### Why This Matters
|
|
62
|
+
|
|
63
|
+
Without MCP, AI assistants are limited to their training data. With MCP:
|
|
64
|
+
|
|
65
|
+
- **Claude** can read your actual codebase
|
|
66
|
+
- **Cursor** can call real API endpoints
|
|
67
|
+
- **ChatGPT** can search your documentation
|
|
68
|
+
|
|
69
|
+
## Key Terms
|
|
70
|
+
|
|
71
|
+
| Term | Definition |
|
|
72
|
+
|------|------------|
|
|
73
|
+
| **MCP Server** | A program that exposes tools via the MCP protocol |
|
|
74
|
+
| **Tool** | A function that an AI can call with parameters |
|
|
75
|
+
| **Resource** | Static data that an AI can read |
|
|
76
|
+
| **Transport** | How the AI communicates with the server (stdio, HTTP) |
|
|
77
|
+
| **Schema** | JSON Schema describing a tool's input/output |
|