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,301 @@
|
|
|
1
|
+
# MCP Server
|
|
2
|
+
|
|
3
|
+
The `@github-to-mcp/mcp-server` package provides the MCP server implementation.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @github-to-mcp/mcp-server
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Creating a Server
|
|
12
|
+
|
|
13
|
+
### Basic Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { createMcpServer } from '@github-to-mcp/mcp-server';
|
|
17
|
+
|
|
18
|
+
const server = createMcpServer({
|
|
19
|
+
name: 'my-mcp-server',
|
|
20
|
+
version: '1.0.0',
|
|
21
|
+
tools: [
|
|
22
|
+
{
|
|
23
|
+
name: 'hello_world',
|
|
24
|
+
description: 'Say hello',
|
|
25
|
+
inputSchema: {
|
|
26
|
+
type: 'object',
|
|
27
|
+
properties: {
|
|
28
|
+
name: { type: 'string' }
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
execute: async ({ name }) => {
|
|
32
|
+
return { greeting: `Hello, ${name}!` };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
await server.start();
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### With Generated Tools
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { createMcpServer } from '@github-to-mcp/mcp-server';
|
|
45
|
+
import { generateFromGithub } from '@nirholas/github-to-mcp';
|
|
46
|
+
|
|
47
|
+
const result = await generateFromGithub('https://github.com/owner/repo');
|
|
48
|
+
|
|
49
|
+
const server = createMcpServer({
|
|
50
|
+
name: 'repo-mcp',
|
|
51
|
+
version: '1.0.0',
|
|
52
|
+
tools: result.tools.map(tool => ({
|
|
53
|
+
...tool,
|
|
54
|
+
execute: createExecutor(tool),
|
|
55
|
+
})),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
await server.start();
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Server Options
|
|
64
|
+
|
|
65
|
+
### McpServerOptions
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
interface McpServerOptions {
|
|
69
|
+
/** Server name */
|
|
70
|
+
name: string;
|
|
71
|
+
|
|
72
|
+
/** Server version */
|
|
73
|
+
version: string;
|
|
74
|
+
|
|
75
|
+
/** Tool definitions */
|
|
76
|
+
tools: ToolDefinition[];
|
|
77
|
+
|
|
78
|
+
/** Transport type */
|
|
79
|
+
transport?: 'stdio' | 'http';
|
|
80
|
+
|
|
81
|
+
/** HTTP port (if using http transport) */
|
|
82
|
+
port?: number;
|
|
83
|
+
|
|
84
|
+
/** Enable logging */
|
|
85
|
+
logging?: boolean;
|
|
86
|
+
|
|
87
|
+
/** Custom logger */
|
|
88
|
+
logger?: Logger;
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Transport Modes
|
|
95
|
+
|
|
96
|
+
### Stdio (Default)
|
|
97
|
+
|
|
98
|
+
For process-based communication with AI clients:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const server = createMcpServer({
|
|
102
|
+
name: 'my-server',
|
|
103
|
+
transport: 'stdio',
|
|
104
|
+
tools: [...]
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
await server.start();
|
|
108
|
+
// Communicates via stdin/stdout
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### HTTP
|
|
112
|
+
|
|
113
|
+
For network-based communication:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
const server = createMcpServer({
|
|
117
|
+
name: 'my-server',
|
|
118
|
+
transport: 'http',
|
|
119
|
+
port: 3000,
|
|
120
|
+
tools: [...]
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
await server.start();
|
|
124
|
+
// Listening on http://localhost:3000
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Tool Definition
|
|
130
|
+
|
|
131
|
+
### ToolDefinition
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
interface ToolDefinition {
|
|
135
|
+
/** Tool name (snake_case recommended) */
|
|
136
|
+
name: string;
|
|
137
|
+
|
|
138
|
+
/** Human-readable description */
|
|
139
|
+
description: string;
|
|
140
|
+
|
|
141
|
+
/** JSON Schema for input parameters */
|
|
142
|
+
inputSchema: JSONSchema;
|
|
143
|
+
|
|
144
|
+
/** Tool execution function */
|
|
145
|
+
execute: (input: unknown, context: ToolContext) => Promise<unknown>;
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### ToolContext
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
interface ToolContext {
|
|
153
|
+
/** Server configuration */
|
|
154
|
+
config: ServerConfig;
|
|
155
|
+
|
|
156
|
+
/** Logger instance */
|
|
157
|
+
logger: Logger;
|
|
158
|
+
|
|
159
|
+
/** Access to other tools */
|
|
160
|
+
tools: Record<string, ToolDefinition>;
|
|
161
|
+
|
|
162
|
+
/** Request metadata */
|
|
163
|
+
request: RequestMetadata;
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Server Methods
|
|
170
|
+
|
|
171
|
+
### start()
|
|
172
|
+
|
|
173
|
+
Start the MCP server.
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
await server.start();
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### stop()
|
|
180
|
+
|
|
181
|
+
Stop the MCP server.
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
await server.stop();
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### addTool()
|
|
188
|
+
|
|
189
|
+
Add a tool dynamically.
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
server.addTool({
|
|
193
|
+
name: 'new_tool',
|
|
194
|
+
description: 'A new tool',
|
|
195
|
+
inputSchema: { type: 'object' },
|
|
196
|
+
execute: async () => ({ result: 'ok' }),
|
|
197
|
+
});
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### removeTool()
|
|
201
|
+
|
|
202
|
+
Remove a tool.
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
server.removeTool('tool_name');
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### listTools()
|
|
209
|
+
|
|
210
|
+
List all registered tools.
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
const tools = server.listTools();
|
|
214
|
+
console.log(tools.map(t => t.name));
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Error Handling
|
|
220
|
+
|
|
221
|
+
### ToolError
|
|
222
|
+
|
|
223
|
+
Throw to return an error to the client:
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
import { ToolError } from '@github-to-mcp/mcp-server';
|
|
227
|
+
|
|
228
|
+
const tool = {
|
|
229
|
+
name: 'risky_operation',
|
|
230
|
+
execute: async ({ path }) => {
|
|
231
|
+
if (path.includes('..')) {
|
|
232
|
+
throw new ToolError('Invalid path: directory traversal not allowed');
|
|
233
|
+
}
|
|
234
|
+
// ...
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Error Codes
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
enum ErrorCode {
|
|
243
|
+
InvalidParams = -32602,
|
|
244
|
+
InternalError = -32603,
|
|
245
|
+
ToolNotFound = -32001,
|
|
246
|
+
ExecutionFailed = -32002,
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Middleware
|
|
253
|
+
|
|
254
|
+
Add middleware for cross-cutting concerns:
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
const server = createMcpServer({
|
|
258
|
+
name: 'my-server',
|
|
259
|
+
tools: [...],
|
|
260
|
+
middleware: [
|
|
261
|
+
// Logging middleware
|
|
262
|
+
async (tool, input, context, next) => {
|
|
263
|
+
console.log(`Calling ${tool.name} with`, input);
|
|
264
|
+
const start = Date.now();
|
|
265
|
+
const result = await next();
|
|
266
|
+
console.log(`${tool.name} completed in ${Date.now() - start}ms`);
|
|
267
|
+
return result;
|
|
268
|
+
},
|
|
269
|
+
|
|
270
|
+
// Caching middleware
|
|
271
|
+
async (tool, input, context, next) => {
|
|
272
|
+
const cacheKey = `${tool.name}:${JSON.stringify(input)}`;
|
|
273
|
+
const cached = cache.get(cacheKey);
|
|
274
|
+
if (cached) return cached;
|
|
275
|
+
const result = await next();
|
|
276
|
+
cache.set(cacheKey, result);
|
|
277
|
+
return result;
|
|
278
|
+
},
|
|
279
|
+
],
|
|
280
|
+
});
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Protocol Compliance
|
|
286
|
+
|
|
287
|
+
This server implements the [Model Context Protocol](https://modelcontextprotocol.io) specification:
|
|
288
|
+
|
|
289
|
+
- **JSON-RPC 2.0** communication
|
|
290
|
+
- **tools/list** - List available tools
|
|
291
|
+
- **tools/call** - Execute a tool
|
|
292
|
+
- **resources/list** - List resources (optional)
|
|
293
|
+
- **prompts/list** - List prompts (optional)
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## See Also
|
|
298
|
+
|
|
299
|
+
- [Core API](core.md) - Main library
|
|
300
|
+
- [Claude Desktop](../guides/claude-desktop.md) - Integration guide
|
|
301
|
+
- [MCP Protocol](../concepts/mcp-protocol.md) - Protocol details
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# OpenAPI Parser
|
|
2
|
+
|
|
3
|
+
The `@github-to-mcp/openapi-parser` package extracts tools from OpenAPI/Swagger and GraphQL schemas.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @github-to-mcp/openapi-parser
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Functions
|
|
12
|
+
|
|
13
|
+
### parseOpenAPI
|
|
14
|
+
|
|
15
|
+
Parse an OpenAPI specification and extract tools.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
function parseOpenAPI(
|
|
19
|
+
spec: string | object,
|
|
20
|
+
options?: OpenAPIParserOptions
|
|
21
|
+
): Promise<Tool[]>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
#### Example
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { parseOpenAPI } from '@github-to-mcp/openapi-parser';
|
|
28
|
+
|
|
29
|
+
const spec = await fs.readFile('openapi.json', 'utf-8');
|
|
30
|
+
const tools = await parseOpenAPI(spec);
|
|
31
|
+
|
|
32
|
+
console.log(`Extracted ${tools.length} tools from OpenAPI spec`);
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
### parseGraphQL
|
|
38
|
+
|
|
39
|
+
Parse a GraphQL schema and extract tools.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
function parseGraphQL(
|
|
43
|
+
schema: string,
|
|
44
|
+
options?: GraphQLParserOptions
|
|
45
|
+
): Promise<Tool[]>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### Example
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { parseGraphQL } from '@github-to-mcp/openapi-parser';
|
|
52
|
+
|
|
53
|
+
const schema = await fs.readFile('schema.graphql', 'utf-8');
|
|
54
|
+
const tools = await parseGraphQL(schema, {
|
|
55
|
+
includeQueries: true,
|
|
56
|
+
includeMutations: true,
|
|
57
|
+
includeSubscriptions: false,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
console.log(`Extracted ${tools.length} tools from GraphQL schema`);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### findSpecs
|
|
66
|
+
|
|
67
|
+
Find OpenAPI and GraphQL specs in a file tree.
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
function findSpecs(
|
|
71
|
+
files: FileTree,
|
|
72
|
+
options?: FindSpecsOptions
|
|
73
|
+
): SpecFiles
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### Example
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
import { findSpecs } from '@github-to-mcp/openapi-parser';
|
|
80
|
+
|
|
81
|
+
const specs = findSpecs(fileTree, {
|
|
82
|
+
maxDepth: 3,
|
|
83
|
+
patterns: ['**/openapi.{json,yaml}', '**/swagger.{json,yaml}'],
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
console.log(`Found ${specs.openapi.length} OpenAPI specs`);
|
|
87
|
+
console.log(`Found ${specs.graphql.length} GraphQL schemas`);
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Types
|
|
93
|
+
|
|
94
|
+
### OpenAPIParserOptions
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
interface OpenAPIParserOptions {
|
|
98
|
+
/** Include all operations or filter */
|
|
99
|
+
includeOperations?: string[];
|
|
100
|
+
|
|
101
|
+
/** Exclude specific operations */
|
|
102
|
+
excludeOperations?: string[];
|
|
103
|
+
|
|
104
|
+
/** Include deprecated operations */
|
|
105
|
+
includeDeprecated?: boolean;
|
|
106
|
+
|
|
107
|
+
/** Custom operation ID generator */
|
|
108
|
+
operationIdGenerator?: (operation: Operation) => string;
|
|
109
|
+
|
|
110
|
+
/** Base URL for API calls */
|
|
111
|
+
baseUrl?: string;
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### GraphQLParserOptions
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
interface GraphQLParserOptions {
|
|
119
|
+
/** Include query operations */
|
|
120
|
+
includeQueries?: boolean;
|
|
121
|
+
|
|
122
|
+
/** Include mutation operations */
|
|
123
|
+
includeMutations?: boolean;
|
|
124
|
+
|
|
125
|
+
/** Include subscription operations */
|
|
126
|
+
includeSubscriptions?: boolean;
|
|
127
|
+
|
|
128
|
+
/** Include deprecated fields */
|
|
129
|
+
includeDeprecated?: boolean;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### SpecFiles
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
interface SpecFiles {
|
|
137
|
+
/** Found OpenAPI specifications */
|
|
138
|
+
openapi: Array<{
|
|
139
|
+
path: string;
|
|
140
|
+
version: '2.0' | '3.0' | '3.1';
|
|
141
|
+
content: string;
|
|
142
|
+
}>;
|
|
143
|
+
|
|
144
|
+
/** Found GraphQL schemas */
|
|
145
|
+
graphql: Array<{
|
|
146
|
+
path: string;
|
|
147
|
+
content: string;
|
|
148
|
+
}>;
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## OpenAPI Support
|
|
155
|
+
|
|
156
|
+
### Supported Versions
|
|
157
|
+
|
|
158
|
+
| Version | Support |
|
|
159
|
+
|---------|---------|
|
|
160
|
+
| OpenAPI 3.1 | ✅ Full |
|
|
161
|
+
| OpenAPI 3.0 | ✅ Full |
|
|
162
|
+
| Swagger 2.0 | ✅ Full |
|
|
163
|
+
|
|
164
|
+
### Supported Formats
|
|
165
|
+
|
|
166
|
+
| Format | Extensions |
|
|
167
|
+
|--------|------------|
|
|
168
|
+
| JSON | `.json` |
|
|
169
|
+
| YAML | `.yaml`, `.yml` |
|
|
170
|
+
|
|
171
|
+
### Extracted Information
|
|
172
|
+
|
|
173
|
+
For each operation, the parser extracts:
|
|
174
|
+
|
|
175
|
+
- Operation ID (or generates one)
|
|
176
|
+
- HTTP method and path
|
|
177
|
+
- Description and summary
|
|
178
|
+
- Request parameters (path, query, header)
|
|
179
|
+
- Request body schema
|
|
180
|
+
- Response schemas
|
|
181
|
+
- Security requirements
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## GraphQL Support
|
|
186
|
+
|
|
187
|
+
### Supported Features
|
|
188
|
+
|
|
189
|
+
- Queries
|
|
190
|
+
- Mutations
|
|
191
|
+
- Subscriptions (optional)
|
|
192
|
+
- Input types
|
|
193
|
+
- Custom scalars
|
|
194
|
+
- Directives
|
|
195
|
+
|
|
196
|
+
### Schema Introspection
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import { introspectGraphQL } from '@github-to-mcp/openapi-parser';
|
|
200
|
+
|
|
201
|
+
const schema = await introspectGraphQL('https://api.example.com/graphql');
|
|
202
|
+
const tools = await parseGraphQL(schema);
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Advanced Usage
|
|
208
|
+
|
|
209
|
+
### Custom Tool Naming
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
const tools = await parseOpenAPI(spec, {
|
|
213
|
+
operationIdGenerator: (op) => {
|
|
214
|
+
// Custom naming: method_path
|
|
215
|
+
return `${op.method}_${op.path.replace(/\//g, '_')}`;
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Filtering Operations
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
// Only include specific operations
|
|
224
|
+
const tools = await parseOpenAPI(spec, {
|
|
225
|
+
includeOperations: ['createUser', 'getUser', 'updateUser'],
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Exclude deprecated
|
|
229
|
+
const tools = await parseOpenAPI(spec, {
|
|
230
|
+
includeDeprecated: false,
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Combining Multiple Specs
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
import { parseOpenAPI, mergeTools } from '@github-to-mcp/openapi-parser';
|
|
238
|
+
|
|
239
|
+
const spec1Tools = await parseOpenAPI(spec1);
|
|
240
|
+
const spec2Tools = await parseOpenAPI(spec2);
|
|
241
|
+
|
|
242
|
+
const allTools = mergeTools([spec1Tools, spec2Tools], {
|
|
243
|
+
deduplicateBy: 'name',
|
|
244
|
+
conflictResolution: 'rename',
|
|
245
|
+
});
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## See Also
|
|
251
|
+
|
|
252
|
+
- [Core API](core.md) - Main library
|
|
253
|
+
- [Tool Types](../concepts/tool-types.md) - Understanding extracted tools
|
|
254
|
+
- [How It Works](../concepts/how-it-works.md) - Extraction process
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none">
|
|
2
|
+
<rect width="100" height="100" rx="16" fill="#000"/>
|
|
3
|
+
<path d="M50 20C33.4 20 20 33.4 20 50C20 63.3 28.7 74.5 40.7 78.4C42.2 78.7 42.8 77.8 42.8 77C42.8 76.3 42.8 74.5 42.8 72.1C34.1 74.1 32.3 67.4 32.3 67.4C30.9 63.9 28.9 63 28.9 63C26.1 61.1 29.1 61.1 29.1 61.1C32.2 61.3 33.8 64.3 33.8 64.3C36.5 69.1 41 67.5 42.9 66.8C43.2 64.8 44 63.5 44.9 62.7C38 62 30.8 59.5 30.8 48.1C30.8 44.8 32 42.1 33.9 40C33.5 39.2 32.6 36.1 34.2 31.9C34.2 31.9 36.8 31.1 42.8 35.1C45.2 34.4 47.7 34.1 50.2 34.1C52.7 34.1 55.2 34.4 57.6 35.1C63.5 31 66.2 31.9 66.2 31.9C67.8 36.1 66.9 39.2 66.5 40C68.4 42.1 69.6 44.9 69.6 48.1C69.6 59.6 62.3 62 55.4 62.7C56.5 63.7 57.5 65.6 57.5 68.5C57.5 72.7 57.5 76 57.5 77C57.5 77.8 58.1 78.8 59.6 78.5C71.5 74.6 80.2 63.4 80.2 50.1C80 33.4 66.6 20 50 20Z" fill="#fff"/>
|
|
4
|
+
<path d="M65 55L75 65L85 55" stroke="#fff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<circle cx="80" cy="75" r="8" stroke="#fff" stroke-width="3" fill="none"/>
|
|
6
|
+
<path d="M80 70V80M75 75H85" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to GitHub to MCP.
|
|
4
|
+
|
|
5
|
+
## [1.0.0] - 2025-01-17
|
|
6
|
+
|
|
7
|
+
### 🎉 Initial Release
|
|
8
|
+
|
|
9
|
+
First stable release of GitHub to MCP!
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- **Core Conversion** - Convert any GitHub repository to MCP server
|
|
14
|
+
- **Web Interface** - Browser-based conversion at [github-to-mcp.vercel.app](https://github-to-mcp.vercel.app)
|
|
15
|
+
- **CLI Tool** - Command-line interface for automation
|
|
16
|
+
- **Programmatic API** - JavaScript/TypeScript library
|
|
17
|
+
|
|
18
|
+
### Universal Tools
|
|
19
|
+
|
|
20
|
+
Every generated server includes:
|
|
21
|
+
|
|
22
|
+
- `get_readme` - Fetch repository README
|
|
23
|
+
- `list_files` - Browse directory structure
|
|
24
|
+
- `read_file` - Read file contents
|
|
25
|
+
- `search_code` - Search for code patterns
|
|
26
|
+
|
|
27
|
+
### Extraction Sources
|
|
28
|
+
|
|
29
|
+
- **OpenAPI/Swagger** - Extract REST API endpoints
|
|
30
|
+
- **GraphQL** - Extract queries and mutations
|
|
31
|
+
- **MCP Servers** - Parse existing tool definitions
|
|
32
|
+
- **Code Analysis** - Detect patterns in source code
|
|
33
|
+
|
|
34
|
+
### Output Formats
|
|
35
|
+
|
|
36
|
+
- TypeScript MCP servers
|
|
37
|
+
- Python MCP servers (experimental)
|
|
38
|
+
|
|
39
|
+
### Integrations
|
|
40
|
+
|
|
41
|
+
- Claude Desktop configuration
|
|
42
|
+
- Cursor IDE support
|
|
43
|
+
- Continue extension support
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## [0.9.0] - 2025-01-10 (Beta)
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- GraphQL schema parsing
|
|
52
|
+
- Python output support
|
|
53
|
+
- Batch conversion feature
|
|
54
|
+
- Playground for testing tools
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- Improved OpenAPI parsing accuracy
|
|
59
|
+
- Better error messages
|
|
60
|
+
- Faster generation times
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- Rate limit handling
|
|
65
|
+
- Large repository support
|
|
66
|
+
- Unicode file handling
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## [0.8.0] - 2025-01-03 (Alpha)
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- Initial CLI implementation
|
|
75
|
+
- OpenAPI extraction
|
|
76
|
+
- Basic web interface
|
|
77
|
+
|
|
78
|
+
### Known Issues
|
|
79
|
+
|
|
80
|
+
- GraphQL not yet supported
|
|
81
|
+
- Limited error handling
|
|
82
|
+
- No Python output
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Versioning
|
|
87
|
+
|
|
88
|
+
This project follows [Semantic Versioning](https://semver.org/):
|
|
89
|
+
|
|
90
|
+
- **MAJOR** - Breaking changes to public API
|
|
91
|
+
- **MINOR** - New features, backward compatible
|
|
92
|
+
- **PATCH** - Bug fixes, backward compatible
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Upgrade Guide
|
|
97
|
+
|
|
98
|
+
### From 0.x to 1.0
|
|
99
|
+
|
|
100
|
+
No breaking changes! Simply update your dependency:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm install @nirholas/github-to-mcp@latest
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Release Schedule
|
|
109
|
+
|
|
110
|
+
- **Major releases**: As needed for breaking changes
|
|
111
|
+
- **Minor releases**: Monthly feature releases
|
|
112
|
+
- **Patch releases**: As needed for bug fixes
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Contributing
|
|
117
|
+
|
|
118
|
+
Want to contribute to the next release? See our [Contributing Guide](contributing/index.md)!
|