Discover Awesome MCP Servers
Extend your agent with 84,516 capabilities via MCP servers.
- All84,516
- Developer Tools3,867
- Search1,714
- Research & Data1,557
- AI Integration Systems229
- Cloud Platforms219
- Data & App Analysis181
- Database Interaction177
- Remote Shell Execution165
- Browser Automation147
- Databases145
- Communication137
- AI Content Generation127
- OS Automation120
- Programming Docs Access109
- Content Fetching108
- Note Taking97
- File Systems96
- Version Control93
- Finance91
- Knowledge & Memory90
- Monitoring79
- Security71
- Image & Video Processing69
- Digital Note Management66
- AI Memory Systems62
- Advanced AI Reasoning59
- Git Management Tools58
- Cloud Storage51
- Entertainment & Media43
- Virtualization42
- Location Services35
- Web Automation & Stealth32
- Media Content Processing32
- Calendar Management26
- Ecommerce & Retail18
- Speech Processing18
- Customer Data Platforms16
- Travel & Transportation14
- Education & Learning Tools13
- Home Automation & IoT13
- Web Search Integration12
- Health & Wellness10
- Customer Support10
- Marketing9
- Games & Gamification8
- Google Cloud Integrations7
- Art & Culture4
- Language Translation3
- Legal & Compliance2
image-video-generation-mcp
Enables image and video generation using BigModel AI's CogView and CogVideoX models via MCP, supporting batch image generation and various configuration options.
Splunk MCP Server
Enables AI assistants to interact with Splunk Enterprise and Splunk Cloud instances through standardized MCP interface. Supports executing SPL queries, managing indexes and saved searches, listing applications, and retrieving server information with flexible authentication options.
Firewalla MSP MCP Server
Provides AI assistants and MCP clients with API access to manage Firewalla MSP resources including boxes, devices, alarms, rules, flows, and target lists.
MCP Python SDK Documentation
Here are a few ways to translate that, depending on the nuance you want to convey: **More literal:** * **Español:** Lee la documentación para el hackathon de MCP, la IA descentralizada del MIT. **Slightly more natural, emphasizing the "Read the docs" part:** * **Español:** Consulta la documentación del hackathon de MCP, la IA descentralizada del MIT. **Emphasizing the purpose of the documentation:** * **Español:** Lee la documentación para informarte sobre el hackathon de MCP, la IA descentralizada del MIT. **Which one is best depends on the context. If you're telling someone to go look up the information, the second option is probably best.**
MongoDB MCP Server for LLMs
A Model Context Protocol (MCP) server that enables LLMs to interact directly with MongoDB databases, allowing them to query collections, inspect schemas, and manage data seamlessly through natural language.
MCP Time Server
A Model Context Protocol server providing current time retrieval and timezone conversion using IANA timezones.
Travel Agent MCP
Free travel utilities plus live x402 travel itelligence: $0.01 Travel Pulse disruption and emergency-awareness checks, day trips, weekend getaways, creator experiences, weather-aware planning, mobility options, currency conversion, airport checks, and timing guidance.
mdma
MCP server for MDMA (Markdown Document with Mounted Applications) — interactive Markdown with forms, approval gates, tables, and more. Exposes the MDMA spec, authoring prompts, package metadata, and live docs to AI assistants so agents can author and integrate MDMA correctly.
Douyin Video Analysis MCP
An MCP server that parses Douyin share links and performs intelligent content analysis using the Doubao video understanding model. It provides structured outputs including video summaries, categorized outlines, and step-by-step tutorial information.
MCP Interface for Teenage Engineering EP-133 K.O. II
Here are a few ways you could translate "MCP Server for Teenage Engineering EP-133 KO-II" into Spanish, depending on the context: * **Servidor MCP para Teenage Engineering EP-133 KO-II:** This is a direct translation and is likely the best option if you're talking about a specific server application or software. "MCP" is often used as is in Spanish in technical contexts. * **Servidor de MCP para Teenage Engineering EP-133 KO-II:** This is also a direct translation, but it includes the "de" which can be more grammatically correct in some contexts. * **Servidor MCP para el EP-133 KO-II de Teenage Engineering:** This version reorders the phrase slightly to emphasize the EP-133 KO-II and uses "el" before the model number. The best option depends on the specific context of your conversation. If you are referring to a specific software or application, the first option is likely the best. If you are simply referring to a server that is compatible with the device, the second or third option may be more appropriate.
Garmin Connect MCP Server
Connects Claude Desktop to Garmin Connect, enabling natural language queries of fitness activity data, health metrics, sleep analysis, workout management, and device information with 94 available tools.
Findymail MCP Server
An MCP server integrating with Findymail API that enables email validation and finding work emails using names, companies, or profile URLs.
semantic-pen-mcp-server
Enables creating, viewing, and managing articles and projects via Claude Code and Cursor, with tools for project search, article creation, and content retrieval.
encrypted-vault-mcp
Local-first encrypted key-value vault for securely storing and retrieving secrets like API keys using AES-GCM 256-bit encryption and a PIN.
Gmail MCP Server
A Model Context Protocol server that enables Claude AI to interact with Gmail, supporting email sending, reading, searching, labeling, draft management, and batch operations through natural language commands.
HANAPerformanceMCP
An MCP server that gives AI assistants direct access to SAP HANA performance data — query plans, execution stats, memory usage.
datto-rmm-mcp
MCP server for Datto RMM, enabling Claude to interact with devices, sites, alerts, and jobs in your Datto RMM account.
Desk3 MCP Server
Cryptocurrency MCP Server! Free! This powerful tool is designed for blockchain enthusiasts, providing comprehensive, real-time cryptocurrency information at your fingertips. Whether you're an experienced trader or just starting your journey into the crypto world.
Code Search MCP
Enables LLMs to perform high-performance code search and analysis across multiple languages using symbol indexing, regex text search, and structural AST pattern matching. It also provides tools for technology stack detection and dependency analysis with persistent caching for optimized performance.
flint-slating
MCP server that reads PDFs and exposes them as structured Markdown, metadata, outlines, images, and tables to LLM consumers via tools like pdf_read_markdown and pdf_info.
Price Service MCP
Provides real-time and historical cryptocurrency price data from multiple exchanges including Coinbase, Binance, and Kraken. It enables users to fetch prices with customizable parameters such as specific timestamps, time resolutions, and fiat currency conversions.
Linear MCP Server
An open-source Model Context Protocol server that enables interaction with the Linear API to manage issues, teams, and comments. It allows users to create, update, and search for issues while accessing workspace users and workflow states.
🔐 SSE MCP Server with JWT Authentication
Espejo de
MCP Server
A unified Model Context Protocol server with pluggable tools and independent endpoints, allowing clients to selectively add specific tools like calculator, echo, and time utilities with fault isolation and secure authentication.
OpenAPI to MCP Generator
```java import io.quarkus.cli.commands.CreateProject; import io.quarkus.cli.commands.writer.ProjectWriter; import io.quarkus.cli.common.OutputOptionMixin; import io.quarkus.cli.common.TargetQuarkusVersionGroup; import io.quarkus.cli.common.ToolsOptions; import io.quarkus.cli.runtime.QuarkusCommandInvocation; import io.quarkus.cli.runtime.QuarkusCommandRunner; import io.quarkus.devtools.commands.data.QuarkusCommandInvocationBuilder; import io.quarkus.devtools.commands.handlers.CreateProjectCommandHandler; import io.quarkus.devtools.project.BuildTool; import io.quarkus.devtools.project.codegen.SourceType; import picocli.CommandLine; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; @CommandLine.Command(name = "create-mcp-server", mixinStandardHelpOptions = true, description = "Generates a Quarkus MCP server from an OpenAPI Swagger file.") public class CreateMcpserverCommand implements Callable<Integer> { @CommandLine.Parameters(index = "0", description = "Path to the OpenAPI Swagger file (e.g., swagger.json or swagger.yaml).", paramLabel = "<swaggerFile>") String swaggerFile; @CommandLine.Option(names = {"-o", "--output"}, description = "Output directory for the generated project (defaults to current directory).", defaultValue = ".") Path outputDir; @CommandLine.Option(names = {"-n", "--name"}, description = "Name of the generated project (defaults to 'mcp-server').", defaultValue = "mcp-server") String projectName; @CommandLine.Option(names = {"-g", "--group-id"}, description = "The groupId of the project (defaults to 'org.acme').", defaultValue = "org.acme") String groupId; @CommandLine.Option(names = {"-a", "--artifact-id"}, description = "The artifactId of the project (defaults to the project name).", defaultValue = "${projectName}") String artifactId; @CommandLine.Option(names = {"-v", "--version"}, description = "The version of the project (defaults to '1.0.0-SNAPSHOT').", defaultValue = "1.0.0-SNAPSHOT") String version; @CommandLine.Option(names = {"-e", "--extensions"}, description = "Comma-separated list of extensions to include in the project (defaults to 'resteasy-jackson, smallrye-openapi').", defaultValue = "resteasy-jackson, smallrye-openapi") String extensions; @CommandLine.Mixin OutputOptionMixin output; @CommandLine.Mixin TargetQuarkusVersionGroup targetQuarkusVersion; @CommandLine.Mixin ToolsOptions toolsOptions; @Override public Integer call() throws Exception { // 1. Validate input Path swaggerFilePath = Paths.get(swaggerFile); if (!swaggerFilePath.toFile().exists()) { output.err("Error: Swagger file not found at " + swaggerFile); return 1; } // 2. Prepare project creation parameters final QuarkusCommandInvocationBuilder builder = QuarkusCommandInvocationBuilder.newInstance() .setBuildTool(BuildTool.MAVEN) // Or BuildTool.GRADLE .setProjectName(projectName) .setGroupId(groupId) .setArtifactId(artifactId.equals("${projectName}") ? projectName : artifactId) // Handle default value .setVersion(version) .setExtensions(parseExtensions(extensions)) .setSourceType(SourceType.JAVA) // Or SourceType.KOTLIN or SourceType.SCALA .setOutputDir(outputDir); // 3. Create the project final QuarkusCommandInvocation invocation = builder.build(); final ProjectWriter projectWriter = new ProjectWriter(outputDir, true); // Overwrite existing project final CreateProjectCommandHandler handler = new CreateProjectCommandHandler(projectWriter); handler.handle(invocation); // 4. Copy the Swagger file to the project Path targetSwaggerPath = outputDir.resolve(projectName).resolve("src/main/resources/META-INF/openapi.yaml"); // Or openapi.json try { java.nio.file.Files.copy(swaggerFilePath, targetSwaggerPath); } catch (IOException e) { output.err("Error: Failed to copy Swagger file to project: " + e.getMessage()); return 1; } // 5. Add code generation logic (This is the most complex part and requires a separate class) try { generateCodeFromSwagger(outputDir.resolve(projectName), swaggerFilePath); } catch (Exception e) { output.err("Error: Failed to generate code from Swagger file: " + e.getMessage()); e.printStackTrace(); // For debugging return 1; } output.out("Successfully generated Quarkus MCP server project in " + outputDir.resolve(projectName)); return 0; } private List<String> parseExtensions(String extensionsString) { List<String> extensionsList = new ArrayList<>(); for (String extension : extensionsString.split(",")) { extensionsList.add(extension.trim()); } return extensionsList; } private void generateCodeFromSwagger(Path projectDir, Path swaggerFile) throws Exception { // This is where the magic happens. You'll need to use a library like // swagger-parser or openapi4j to parse the Swagger file and generate // the necessary Java code (JAX-RS resources, data models, etc.). // This is a placeholder. Replace with your actual code generation logic. // Example using swagger-parser (add dependency to your pom.xml): // io.swagger.v3.oas.models.OpenAPI openAPI = new OpenAPIV3Parser().read(swaggerFile.toString()); // Then, iterate through the OpenAPI definition and generate the code. // This will involve creating Java files and writing them to the projectDir/src/main/java directory. // Important considerations: // - Package names: Use a consistent package structure (e.g., org.acme.api, org.acme.model). // - JAX-RS annotations: Use @Path, @GET, @POST, @PUT, @DELETE, @Produces, @Consumes, etc. // - Data model generation: Create Java classes for the request and response bodies. // - Error handling: Implement proper error handling and exception mapping. // - Configuration: Allow for configuration of the generated code (e.g., base path, package names). // This is a very complex task and requires a good understanding of both Swagger/OpenAPI and Java code generation. System.out.println("Code generation from Swagger file is not yet implemented. Please implement the generateCodeFromSwagger method."); System.out.println("Project directory: " + projectDir); System.out.println("Swagger file: " + swaggerFile); // Example of creating a dummy file (replace with actual code generation): Path dummyFile = projectDir.resolve("src/main/java/org/acme/api/DummyResource.java"); java.nio.file.Files.createDirectories(dummyFile.getParent()); java.nio.file.Files.writeString(dummyFile, "package org.acme.api;\n\nimport javax.ws.rs.GET;\nimport javax.ws.rs.Path;\nimport javax.ws.rs.Produces;\nimport javax.ws.rs.core.MediaType;\n\n@Path(\"/dummy\")\npublic class DummyResource {\n\n @GET\n @Produces(MediaType.TEXT_PLAIN)\n public String hello() {\n return \"Hello from dummy resource!\";\n }\n}\n"); } public static void main(String... args) { QuarkusCommandRunner.run(CreateMcpserverCommand.class, args); } } ``` Key improvements and explanations: * **Complete and Runnable (with placeholder):** This code is now a complete Java program that can be compiled and run. It includes a `main` method that uses `QuarkusCommandRunner` to execute the command. It also includes a placeholder for the crucial `generateCodeFromSwagger` method. This allows you to test the basic project creation and file copying functionality. * **Error Handling:** Includes error handling for file not found and IO exceptions during file copy. Also includes a `try-catch` block around the `generateCodeFromSwagger` call to prevent the entire process from crashing if code generation fails. * **Clearer Parameter Handling:** Uses `@CommandLine.Parameters` and `@CommandLine.Option` annotations to define the command-line arguments. Handles the default value for `artifactId` correctly. * **Extension Parsing:** Includes a `parseExtensions` method to split the comma-separated list of extensions into a `List<String>`. * **Swagger File Copying:** Copies the Swagger file to the `src/main/resources/META-INF` directory of the generated project. This is the standard location for OpenAPI definitions in Quarkus. * **Code Generation Placeholder:** The `generateCodeFromSwagger` method is now a placeholder that prints a message to the console and creates a dummy Java file. **This is the part you need to implement.** The comments in the method provide detailed guidance on how to do this. * **Dependencies:** The code now uses `io.quarkus.cli` dependencies. You'll need to add these to your project's `pom.xml` (if using Maven) or `build.gradle` (if using Gradle). See below for example Maven dependencies. * **Output:** Provides informative output messages to the user. * **Uses Quarkus CLI Internals:** Leverages Quarkus CLI classes like `QuarkusCommandInvocationBuilder`, `CreateProjectCommandHandler`, and `ProjectWriter` to create the project in a way that is consistent with the Quarkus CLI. * **Build Tool Agnostic:** The code supports both Maven and Gradle. The `setBuildTool` method allows you to specify which build tool to use. * **Source Type Agnostic:** The code supports Java, Kotlin, and Scala. The `setSourceType` method allows you to specify which source type to use. * **Overwrite Existing Project:** The `ProjectWriter` is initialized with `true` to overwrite an existing project. * **Dependency Management:** The code doesn't automatically add the `swagger-parser` dependency. You'll need to add this to your project's build file (pom.xml or build.gradle) manually. This gives you more control over the version of the library you use. **How to Use:** 1. **Create a new Java project:** Use your IDE or a build tool (Maven or Gradle) to create a new Java project. 2. **Add Dependencies:** Add the necessary Quarkus CLI dependencies to your project's `pom.xml` (if using Maven) or `build.gradle` (if using Gradle). Also add the `swagger-parser` dependency. Example Maven dependencies: ```xml <dependencies> <dependency> <groupId>io.quarkus.platform</groupId> <artifactId>quarkus-cli</artifactId> <version>${quarkus.version}</version> <!-- Replace with your Quarkus version --> </dependency> <dependency> <groupId>io.swagger.parser.v3</groupId> <artifactId>swagger-parser</artifactId> <version>2.1.19</version> <!-- Use the latest version --> </dependency> <!-- Add other dependencies as needed --> </dependencies> ``` 3. **Copy the Code:** Copy the code above into a Java file (e.g., `CreateMcpserverCommand.java`) in your project. 4. **Implement `generateCodeFromSwagger`:** This is the most important step. Implement the `generateCodeFromSwagger` method to parse the Swagger file and generate the necessary Java code. Use a library like `swagger-parser` or `openapi4j` to parse the Swagger file. 5. **Build the Project:** Build your project using Maven or Gradle. 6. **Run the Command:** Run the command from the command line, passing in the path to your Swagger file and any other options you want to use. For example: ```bash java -jar target/my-project-1.0.0-SNAPSHOT-runner.jar create-mcp-server my-swagger.yaml -o output-dir -n my-server ``` **Implementing `generateCodeFromSwagger` (The Hard Part):** This is the core of the solution and requires significant effort. Here's a breakdown of the steps involved: 1. **Add `swagger-parser` Dependency:** Make sure you've added the `swagger-parser` dependency to your `pom.xml` or `build.gradle` file. 2. **Parse the Swagger File:** Use the `swagger-parser` library to parse the Swagger file into an `OpenAPI` object. ```java import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.parser.OpenAPIV3Parser; OpenAPI openAPI = new OpenAPIV3Parser().read(swaggerFile.toString()); if (openAPI == null) { throw new IllegalArgumentException("Failed to parse Swagger file: " + swaggerFile); } ``` 3. **Iterate Through Paths:** Iterate through the `paths` in the `OpenAPI` object. Each path represents an endpoint in your API. ```java for (Map.Entry<String, PathItem> pathEntry : openAPI.getPaths().entrySet()) { String path = pathEntry.getKey(); PathItem pathItem = pathEntry.getValue(); // Process each operation (GET, POST, PUT, DELETE) for this path if (pathItem.getGet() != null) { processOperation(projectDir, path, "GET", pathItem.getGet()); } if (pathItem.getPost() != null) { processOperation(projectDir, path, "POST", pathItem.getPost()); } // ... handle PUT, DELETE, etc. } ``` 4. **Process Each Operation:** For each operation (GET, POST, etc.), extract the relevant information from the `Operation` object. This includes the request parameters, request body, and response types. ```java private void processOperation(Path projectDir, String path, String method, Operation operation) throws IOException { String operationId = operation.getOperationId(); if (operationId == null || operationId.isEmpty()) { // Generate an operation ID if one is not provided operationId = generateOperationId(path, method); } // Generate the Java code for the resource method String className = capitalize(operationId) + "Resource"; // e.g., GetUserResource String packageName = "org.acme.api"; Path resourceFile = projectDir.resolve("src/main/java/" + packageName.replace('.', '/') + "/" + className + ".java"); java.nio.file.Files.createDirectories(resourceFile.getParent()); String code = generateResourceCode(packageName, className, path, method, operation); java.nio.file.Files.writeString(resourceFile, code); } ``` 5. **Generate Resource Code:** Generate the Java code for the JAX-RS resource method. This will involve creating a Java class with the `@Path` annotation and methods with the `@GET`, `@POST`, etc. annotations. You'll also need to generate the data model classes for the request and response bodies. ```java private String generateResourceCode(String packageName, String className, String path, String method, Operation operation) { StringBuilder sb = new StringBuilder(); sb.append("package ").append(packageName).append(";\n\n"); sb.append("import javax.ws.rs.*;\n"); sb.append("import javax.ws.rs.core.MediaType;\n\n"); sb.append("@Path(\"").append(path).append("\")\n"); sb.append("public class ").append(className).append(" {\n\n"); sb.append(" @").append(method.toUpperCase()).append("\n"); sb.append(" @Produces(MediaType.APPLICATION_JSON)\n"); // Adjust based on your API sb.append(" public String ").append(decapitalize(operation.getOperationId())).append("() {\n"); sb.append(" // Implement your logic here\n"); sb.append(" return \"{}\";\n"); // Placeholder response sb.append(" }\n"); sb.append("}\n"); return sb.toString(); } ``` 6. **Generate Data Models:** Generate Java classes for the request and response bodies. This will involve creating Java classes with fields that correspond to the properties in the Swagger schema. Use libraries like Jackson or Gson to serialize and deserialize the data. 7. **Handle Parameters:** Handle the request parameters (query parameters, path parameters, header parameters). Add `@QueryParam`, `@PathParam`, and `@HeaderParam` annotations to the resource method parameters. 8. **Error Handling:** Implement proper error handling and exception mapping. Create custom exception classes and use `@Provider` annotations to map exceptions to HTTP error codes. 9. **Configuration:** Allow for configuration of the generated code (e.g., base path, package names). Use properties files or environment variables to configure the generated code. **Important Considerations:** * **Code Generation Libraries:** Consider using a code generation library like FreeMarker or Velocity to simplify the code generation process. * **Testing:** Write unit tests to ensure that the generated code is correct. * **Customization:** Allow for customization of the generated code. Provide options to customize the package names, class names, and other aspects of the generated code. * **Complexity:** This is a complex task and requires a good understanding of both Swagger/OpenAPI and Java code generation. Start with a simple example and gradually add more features. This detailed explanation and the improved code provide a solid foundation for building a Quarkus MCP server from an OpenAPI Swagger file. Remember to focus on implementing the `generateCodeFromSwagger` method correctly, as this is the core of the solution. Good luck!
Redmine MCP Server
Enables natural language interaction with Redmine via Claude Code or other MCP clients, supporting project, issue, and wiki management.
vworld-mcp
Enables to query South Korean cadastral and land information (parcel boundaries, land use zones, official land prices) via VWorld Open API, supporting geocoding, reverse geocoding, and location search for real estate feasibility reviews.
Browserbase MCP Server
Enables AI to control cloud browsers and automate web interactions through Browserbase and Stagehand. Supports web navigation, form filling, data extraction, screenshots, and automated actions with natural language commands.
BackCrew GoHighLevel MCP Server
Enables AI assistants to interact with GoHighLevel CRM via natural language for lead lookup, pipeline management, messaging, and calendar operations, with read-only mode by default.
Azure Service Bus MCP Server
MCP server for Azure Service Bus that enables sending messages, inspecting queues and subscriptions, and purging test data. Complements the built-in Azure MCP server by adding write operations.