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,375 @@
|
|
|
1
|
+
# Batch Conversion
|
|
2
|
+
|
|
3
|
+
Convert multiple GitHub repositories to MCP servers at once.
|
|
4
|
+
|
|
5
|
+
## Web UI Batch Mode
|
|
6
|
+
|
|
7
|
+
Visit [github-to-mcp.vercel.app/batch](https://github-to-mcp.vercel.app/batch) to convert multiple repos:
|
|
8
|
+
|
|
9
|
+
1. Enter one URL per line
|
|
10
|
+
2. Configure shared options
|
|
11
|
+
3. Click "Generate All"
|
|
12
|
+
4. Download as a single ZIP
|
|
13
|
+
|
|
14
|
+
## CLI Batch Processing
|
|
15
|
+
|
|
16
|
+
### Using a File List
|
|
17
|
+
|
|
18
|
+
Create a file with URLs (one per line):
|
|
19
|
+
|
|
20
|
+
```text title="repos.txt"
|
|
21
|
+
https://github.com/stripe/stripe-node
|
|
22
|
+
https://github.com/openai/openai-node
|
|
23
|
+
https://github.com/vercel/next.js
|
|
24
|
+
https://github.com/prisma/prisma
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then process:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
while read url; do
|
|
31
|
+
npx @nirholas/github-to-mcp "$url" -o "./mcp-servers/$(basename $url)"
|
|
32
|
+
done < repos.txt
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Parallel Processing
|
|
36
|
+
|
|
37
|
+
For faster conversion, use parallel processing:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Using GNU parallel
|
|
41
|
+
cat repos.txt | parallel -j4 \
|
|
42
|
+
'npx @nirholas/github-to-mcp {} -o ./mcp-servers/$(basename {})'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### With xargs
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
cat repos.txt | xargs -I {} -P 4 \
|
|
49
|
+
npx @nirholas/github-to-mcp {} -o ./mcp-servers/$(basename {})
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Programmatic Batch
|
|
53
|
+
|
|
54
|
+
### Basic Batch
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
58
|
+
|
|
59
|
+
const repos = [
|
|
60
|
+
'https://github.com/stripe/stripe-node',
|
|
61
|
+
'https://github.com/openai/openai-node',
|
|
62
|
+
'https://github.com/vercel/next.js',
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
async function batchGenerate() {
|
|
66
|
+
for (const repo of repos) {
|
|
67
|
+
const name = repo.split('/').pop();
|
|
68
|
+
console.log(`Generating: ${name}`);
|
|
69
|
+
|
|
70
|
+
const result = await generateFromGithub(repo);
|
|
71
|
+
await result.save(`./mcp-servers/${name}`);
|
|
72
|
+
|
|
73
|
+
console.log(`✓ Generated ${result.tools.length} tools for ${name}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
batchGenerate();
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Parallel Batch
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
84
|
+
|
|
85
|
+
const repos = [
|
|
86
|
+
'https://github.com/stripe/stripe-node',
|
|
87
|
+
'https://github.com/openai/openai-node',
|
|
88
|
+
'https://github.com/vercel/next.js',
|
|
89
|
+
];
|
|
90
|
+
|
|
91
|
+
async function parallelBatch() {
|
|
92
|
+
const results = await Promise.all(
|
|
93
|
+
repos.map(async (repo) => {
|
|
94
|
+
const name = repo.split('/').pop();
|
|
95
|
+
try {
|
|
96
|
+
const result = await generateFromGithub(repo);
|
|
97
|
+
await result.save(`./mcp-servers/${name}`);
|
|
98
|
+
return { repo, success: true, tools: result.tools.length };
|
|
99
|
+
} catch (error) {
|
|
100
|
+
return { repo, success: false, error: error.message };
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
console.log('Results:', results);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
parallelBatch();
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### With Concurrency Control
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
115
|
+
import pLimit from 'p-limit';
|
|
116
|
+
|
|
117
|
+
const repos = [/* ... */];
|
|
118
|
+
const limit = pLimit(3); // Max 3 concurrent
|
|
119
|
+
|
|
120
|
+
async function controlledBatch() {
|
|
121
|
+
const tasks = repos.map(repo =>
|
|
122
|
+
limit(async () => {
|
|
123
|
+
const name = repo.split('/').pop();
|
|
124
|
+
const result = await generateFromGithub(repo);
|
|
125
|
+
await result.save(`./mcp-servers/${name}`);
|
|
126
|
+
return { name, tools: result.tools.length };
|
|
127
|
+
})
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const results = await Promise.all(tasks);
|
|
131
|
+
console.log('Completed:', results);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
controlledBatch();
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Batch Configuration
|
|
138
|
+
|
|
139
|
+
### Shared Options
|
|
140
|
+
|
|
141
|
+
Apply the same options to all repos:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
const sharedOptions = {
|
|
145
|
+
language: 'typescript',
|
|
146
|
+
includeUniversalTools: true,
|
|
147
|
+
extractFromOpenAPI: true,
|
|
148
|
+
token: process.env.GITHUB_TOKEN,
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
for (const repo of repos) {
|
|
152
|
+
await generateFromGithub(repo, sharedOptions);
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Per-Repo Options
|
|
157
|
+
|
|
158
|
+
Customize options per repository:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
const repoConfigs = [
|
|
162
|
+
{
|
|
163
|
+
url: 'https://github.com/stripe/stripe-node',
|
|
164
|
+
options: { extractFromOpenAPI: true }
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
url: 'https://github.com/facebook/react',
|
|
168
|
+
options: { maxDepth: 2 } // Large repo, limit depth
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
url: 'https://github.com/my-org/private-repo',
|
|
172
|
+
options: { token: process.env.PRIVATE_TOKEN }
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
|
|
176
|
+
for (const { url, options } of repoConfigs) {
|
|
177
|
+
await generateFromGithub(url, options);
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Output Organization
|
|
182
|
+
|
|
183
|
+
### By Category
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
mcp-servers/
|
|
187
|
+
├── apis/
|
|
188
|
+
│ ├── stripe/
|
|
189
|
+
│ └── openai/
|
|
190
|
+
├── frameworks/
|
|
191
|
+
│ ├── nextjs/
|
|
192
|
+
│ └── react/
|
|
193
|
+
└── tools/
|
|
194
|
+
├── prisma/
|
|
195
|
+
└── typescript/
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### By Organization
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
mcp-servers/
|
|
202
|
+
├── stripe/
|
|
203
|
+
│ └── stripe-node/
|
|
204
|
+
├── openai/
|
|
205
|
+
│ └── openai-node/
|
|
206
|
+
└── vercel/
|
|
207
|
+
└── next.js/
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Script for Organization
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
214
|
+
import { mkdir } from 'fs/promises';
|
|
215
|
+
import { join } from 'path';
|
|
216
|
+
|
|
217
|
+
async function organizedBatch(repos: string[], baseDir: string) {
|
|
218
|
+
for (const repo of repos) {
|
|
219
|
+
const [, owner, name] = repo.match(/github\.com\/([^/]+)\/([^/]+)/) || [];
|
|
220
|
+
|
|
221
|
+
const outputDir = join(baseDir, owner, name);
|
|
222
|
+
await mkdir(outputDir, { recursive: true });
|
|
223
|
+
|
|
224
|
+
const result = await generateFromGithub(repo);
|
|
225
|
+
await result.save(outputDir);
|
|
226
|
+
|
|
227
|
+
console.log(`✓ ${owner}/${name} → ${outputDir}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Error Handling
|
|
233
|
+
|
|
234
|
+
### Retry Failed Repos
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
async function batchWithRetry(repos: string[], maxRetries = 3) {
|
|
238
|
+
const results = { success: [], failed: [] };
|
|
239
|
+
|
|
240
|
+
for (const repo of repos) {
|
|
241
|
+
let attempt = 0;
|
|
242
|
+
let success = false;
|
|
243
|
+
|
|
244
|
+
while (attempt < maxRetries && !success) {
|
|
245
|
+
try {
|
|
246
|
+
const result = await generateFromGithub(repo);
|
|
247
|
+
await result.save(`./mcp-servers/${repo.split('/').pop()}`);
|
|
248
|
+
results.success.push(repo);
|
|
249
|
+
success = true;
|
|
250
|
+
} catch (error) {
|
|
251
|
+
attempt++;
|
|
252
|
+
console.log(`Retry ${attempt}/${maxRetries} for ${repo}`);
|
|
253
|
+
|
|
254
|
+
if (attempt === maxRetries) {
|
|
255
|
+
results.failed.push({ repo, error: error.message });
|
|
256
|
+
} else {
|
|
257
|
+
await new Promise(r => setTimeout(r, 1000 * attempt)); // Backoff
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return results;
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Generate Report
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
async function batchWithReport(repos: string[]) {
|
|
271
|
+
const report = {
|
|
272
|
+
timestamp: new Date().toISOString(),
|
|
273
|
+
total: repos.length,
|
|
274
|
+
results: []
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
for (const repo of repos) {
|
|
278
|
+
const start = Date.now();
|
|
279
|
+
try {
|
|
280
|
+
const result = await generateFromGithub(repo);
|
|
281
|
+
await result.save(`./mcp-servers/${repo.split('/').pop()}`);
|
|
282
|
+
|
|
283
|
+
report.results.push({
|
|
284
|
+
repo,
|
|
285
|
+
status: 'success',
|
|
286
|
+
tools: result.tools.length,
|
|
287
|
+
duration: Date.now() - start
|
|
288
|
+
});
|
|
289
|
+
} catch (error) {
|
|
290
|
+
report.results.push({
|
|
291
|
+
repo,
|
|
292
|
+
status: 'failed',
|
|
293
|
+
error: error.message,
|
|
294
|
+
duration: Date.now() - start
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Save report
|
|
300
|
+
await writeFile(
|
|
301
|
+
'./batch-report.json',
|
|
302
|
+
JSON.stringify(report, null, 2)
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
return report;
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Automation
|
|
310
|
+
|
|
311
|
+
### GitHub Action
|
|
312
|
+
|
|
313
|
+
```yaml title=".github/workflows/generate-mcp.yml"
|
|
314
|
+
name: Generate MCP Servers
|
|
315
|
+
|
|
316
|
+
on:
|
|
317
|
+
schedule:
|
|
318
|
+
- cron: '0 0 * * 0' # Weekly on Sunday
|
|
319
|
+
workflow_dispatch:
|
|
320
|
+
|
|
321
|
+
jobs:
|
|
322
|
+
generate:
|
|
323
|
+
runs-on: ubuntu-latest
|
|
324
|
+
steps:
|
|
325
|
+
- uses: actions/checkout@v4
|
|
326
|
+
|
|
327
|
+
- uses: actions/setup-node@v4
|
|
328
|
+
with:
|
|
329
|
+
node-version: '20'
|
|
330
|
+
|
|
331
|
+
- name: Generate MCP Servers
|
|
332
|
+
env:
|
|
333
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
334
|
+
run: |
|
|
335
|
+
npm install -g @nirholas/github-to-mcp
|
|
336
|
+
|
|
337
|
+
while read url; do
|
|
338
|
+
github-to-mcp "$url" -o "./mcp-servers/$(basename $url)"
|
|
339
|
+
done < repos.txt
|
|
340
|
+
|
|
341
|
+
- name: Upload Artifacts
|
|
342
|
+
uses: actions/upload-artifact@v4
|
|
343
|
+
with:
|
|
344
|
+
name: mcp-servers
|
|
345
|
+
path: mcp-servers/
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Cron Job
|
|
349
|
+
|
|
350
|
+
```bash title="update-mcp-servers.sh"
|
|
351
|
+
#!/bin/bash
|
|
352
|
+
set -e
|
|
353
|
+
|
|
354
|
+
cd ~/mcp-servers
|
|
355
|
+
|
|
356
|
+
# Update each server
|
|
357
|
+
for repo in stripe/stripe-node openai/openai-node; do
|
|
358
|
+
name=$(basename $repo)
|
|
359
|
+
npx @nirholas/github-to-mcp "https://github.com/$repo" -o "./$name" --force
|
|
360
|
+
echo "Updated $name"
|
|
361
|
+
done
|
|
362
|
+
|
|
363
|
+
# Restart Claude Desktop to pick up changes
|
|
364
|
+
osascript -e 'quit app "Claude"'
|
|
365
|
+
sleep 2
|
|
366
|
+
open -a "Claude"
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Next Steps
|
|
372
|
+
|
|
373
|
+
- [Configuration](../getting-started/configuration.md) - All generation options
|
|
374
|
+
- [CLI Reference](../cli/index.md) - Command-line details
|
|
375
|
+
- [API Reference](../api/index.md) - Programmatic API
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Claude Desktop Integration
|
|
2
|
+
|
|
3
|
+
Connect your generated MCP server to Claude Desktop for powerful AI conversations about any codebase.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- [Claude Desktop](https://claude.ai/download) 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
|
+
First, generate an MCP server for your target repository:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx @nirholas/github-to-mcp https://github.com/owner/repo -o ~/mcp-servers/my-repo
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Step 2: Find Your Config File
|
|
20
|
+
|
|
21
|
+
Claude Desktop's configuration file location varies by operating system:
|
|
22
|
+
|
|
23
|
+
=== "macOS"
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
~/Library/Application Support/Claude/claude_desktop_config.json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
=== "Windows"
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
%APPDATA%\Claude\claude_desktop_config.json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
=== "Linux"
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
~/.config/Claude/claude_desktop_config.json
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
!!! tip "Create if Missing"
|
|
42
|
+
If the file doesn't exist, create it with an empty JSON object: `{}`
|
|
43
|
+
|
|
44
|
+
## Step 3: Add Your MCP Server
|
|
45
|
+
|
|
46
|
+
Edit the config file to add your MCP server:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"my-repo": {
|
|
52
|
+
"command": "node",
|
|
53
|
+
"args": ["/Users/yourname/mcp-servers/my-repo/server.mjs"]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Multiple Servers
|
|
60
|
+
|
|
61
|
+
You can add multiple MCP servers:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"mcpServers": {
|
|
66
|
+
"stripe-sdk": {
|
|
67
|
+
"command": "node",
|
|
68
|
+
"args": ["/Users/yourname/mcp-servers/stripe/server.mjs"]
|
|
69
|
+
},
|
|
70
|
+
"my-project": {
|
|
71
|
+
"command": "node",
|
|
72
|
+
"args": ["/Users/yourname/mcp-servers/my-project/server.mjs"]
|
|
73
|
+
},
|
|
74
|
+
"openai-docs": {
|
|
75
|
+
"command": "node",
|
|
76
|
+
"args": ["/Users/yourname/mcp-servers/openai/server.mjs"]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Step 4: Restart Claude Desktop
|
|
83
|
+
|
|
84
|
+
After editing the config:
|
|
85
|
+
|
|
86
|
+
1. Quit Claude Desktop completely
|
|
87
|
+
2. Relaunch Claude Desktop
|
|
88
|
+
3. Look for the tools icon in the chat input
|
|
89
|
+
|
|
90
|
+
## Step 5: Verify Connection
|
|
91
|
+
|
|
92
|
+
You should see your MCP tools available in Claude. Click the tools icon (🔧) to see:
|
|
93
|
+
|
|
94
|
+
- `get_readme` - Get the repository README
|
|
95
|
+
- `list_files` - Browse files and directories
|
|
96
|
+
- `read_file` - Read file contents
|
|
97
|
+
- `search_code` - Search for code patterns
|
|
98
|
+
- Plus any extracted tools from the repo
|
|
99
|
+
|
|
100
|
+
## Using MCP Tools in Conversations
|
|
101
|
+
|
|
102
|
+
Once connected, Claude can use your tools automatically:
|
|
103
|
+
|
|
104
|
+
### Example: Explore a Codebase
|
|
105
|
+
|
|
106
|
+
> **You:** What does this repository do?
|
|
107
|
+
>
|
|
108
|
+
> **Claude:** *Uses `get_readme` tool* Based on the README, this is a...
|
|
109
|
+
|
|
110
|
+
### Example: Find Code
|
|
111
|
+
|
|
112
|
+
> **You:** Show me how authentication is implemented
|
|
113
|
+
>
|
|
114
|
+
> **Claude:** *Uses `search_code` tool* I found authentication in these files...
|
|
115
|
+
> *Uses `read_file` tool* Here's the implementation...
|
|
116
|
+
|
|
117
|
+
### Example: Navigate Structure
|
|
118
|
+
|
|
119
|
+
> **You:** What's in the src directory?
|
|
120
|
+
>
|
|
121
|
+
> **Claude:** *Uses `list_files` tool* The src directory contains...
|
|
122
|
+
|
|
123
|
+
## Troubleshooting
|
|
124
|
+
|
|
125
|
+
### Tools Not Appearing
|
|
126
|
+
|
|
127
|
+
1. **Check the config path** - Make sure you edited the correct file
|
|
128
|
+
2. **Validate JSON** - Use a JSON validator to check syntax
|
|
129
|
+
3. **Check absolute paths** - Paths must be absolute, not relative
|
|
130
|
+
4. **Restart Claude** - Fully quit and relaunch
|
|
131
|
+
|
|
132
|
+
### Server Errors
|
|
133
|
+
|
|
134
|
+
Check the server works standalone:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
cd ~/mcp-servers/my-repo
|
|
138
|
+
npm install
|
|
139
|
+
node server.mjs
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Permission Issues
|
|
143
|
+
|
|
144
|
+
Ensure the server file is executable:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
chmod +x ~/mcp-servers/my-repo/server.mjs
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### View Logs
|
|
151
|
+
|
|
152
|
+
Enable MCP logging in Claude Desktop:
|
|
153
|
+
|
|
154
|
+
1. Open Claude Desktop
|
|
155
|
+
2. Go to Settings → Developer
|
|
156
|
+
3. Enable "Show MCP Logs"
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Advanced Configuration
|
|
161
|
+
|
|
162
|
+
### Environment Variables
|
|
163
|
+
|
|
164
|
+
Pass environment variables to your server:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"mcpServers": {
|
|
169
|
+
"my-repo": {
|
|
170
|
+
"command": "node",
|
|
171
|
+
"args": ["/path/to/server.mjs"],
|
|
172
|
+
"env": {
|
|
173
|
+
"GITHUB_TOKEN": "ghp_xxxxx",
|
|
174
|
+
"DEBUG": "true"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Working Directory
|
|
182
|
+
|
|
183
|
+
Set the working directory:
|
|
184
|
+
|
|
185
|
+
```json
|
|
186
|
+
{
|
|
187
|
+
"mcpServers": {
|
|
188
|
+
"my-repo": {
|
|
189
|
+
"command": "node",
|
|
190
|
+
"args": ["server.mjs"],
|
|
191
|
+
"cwd": "/path/to/my-repo"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Using Python Servers
|
|
198
|
+
|
|
199
|
+
For Python-generated servers:
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"mcpServers": {
|
|
204
|
+
"my-repo": {
|
|
205
|
+
"command": "python",
|
|
206
|
+
"args": ["/path/to/server.py"]
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Best Practices
|
|
215
|
+
|
|
216
|
+
1. **Use descriptive names** - Name servers after their repositories
|
|
217
|
+
2. **Keep servers updated** - Regenerate when the source repo updates
|
|
218
|
+
3. **Organize servers** - Keep all servers in a dedicated directory
|
|
219
|
+
4. **Document your setup** - Note which servers you've added
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Next Steps
|
|
224
|
+
|
|
225
|
+
- [Cursor Integration](cursor.md) - Use MCP with Cursor IDE
|
|
226
|
+
- [Custom Tools](custom-tools.md) - Extend your generated tools
|
|
227
|
+
- [API Reference](../api/index.md) - Programmatic server generation
|