Discover Awesome MCP Servers

Extend your agent with 29,247 capabilities via MCP servers.

All29,247
ZenTao MCP Server

ZenTao MCP Server

Enables interaction with ZenTao project management system through RESTful APIs. Supports listing products, managing bugs, viewing statistics, and filtering personal bug assignments through natural language.

Home Assistant MCP Server

Home Assistant MCP Server

A comprehensive Model Context Protocol server providing 60 tools across 9 categories to interact with and manage Home Assistant smart home systems via the REST API.

Base Mini App Builder MCP Server

Base Mini App Builder MCP Server

Enables developers to build Base mini apps from start to finish with 10 specialized tools for generating manifests, starter code, deployment guides, design guidelines, and debugging assistance. Integrates official Base documentation to streamline the complete development workflow for Base ecosystem mini applications.

AskOnSlackMCP

AskOnSlackMCP

A Human-in-the-Loop MCP server that enables AI assistants to request information or clarification from humans via Slack. It uses real-time, thread-based conversations with socket mode integration to bridge the gap between AI systems and human experts.

Revit MCP Server

Revit MCP Server

Enables seamless communication between Claude AI and Autodesk Revit, allowing users to access and interact with Revit model information through natural language.

Arcate MCP Connect

Arcate MCP Connect

Gives AI agents direct access to your Arcate product discovery workspace to read signals, browse roadmaps, and ingest new customer feedback. It enables users to search existing data and link signals to initiatives through natural language commands.

Angular Toolkit MCP

Angular Toolkit MCP

A Model Context Protocol server that provides Angular project analysis and refactoring capabilities, enabling LLMs to analyze component usage patterns, dependency structures, and perform safe refactoring with breaking change detection.

MCP Server

MCP Server

A Django-based implementation of the Model Context Protocol (MCP) for managing political preferences and visions for the future.

Azure Database for PostgreSQL MCP Server (Preview)

Azure Database for PostgreSQL MCP Server (Preview)

Máy chủ MCP cho Azure Database for PostgreSQL

ToolRoute

ToolRoute

Intelligent routing layer for AI agents — recommends the best MCP server and LLM for any task, scored on 132+ real benchmark executions.

国金QMT-MCP

国金QMT-MCP

A modular quantitative trading assistant that integrates with XTQuant/QMT trading platform, enabling AI-assisted trading strategy generation, real-time trade execution, and performance backtesting.

Axion Planetary MCP

Axion Planetary MCP

Enables MCP clients to access Google Earth Engine's satellite imagery and geospatial analysis capabilities. Provides tools for vegetation analysis, crop classification, disaster monitoring, and interactive map creation using petabytes of satellite data.

Untappd MCP Server using Azure Functions

Untappd MCP Server using Azure Functions

Okay, here's an example of a Minimal, Complete, and Verifiable (MCP) Azure Function written in F# that demonstrates a simple HTTP trigger: ```fsharp namespace MyAzureFunction open Microsoft.AspNetCore.Mvc open Microsoft.Azure.WebJobs open Microsoft.Azure.WebJobs.Extensions.Http open Microsoft.AspNetCore.Http open Microsoft.Extensions.Logging module HttpExample = [<FunctionName("HttpExample")>] let Run ( [<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)>] req: HttpRequest, log: ILogger ) = task { log.LogInformation "F# HTTP trigger function processed a request." let name = match req.Query.["name"].ToString() with | null -> let reqBody = new System.IO.StreamReader(req.Body).ReadToEnd() let data = Newtonsoft.Json.JsonConvert.DeserializeObject<{| name: string |}>(reqBody) if data <> null then data.name else null | name -> name let responseMessage = match name with | null -> "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response." | name -> sprintf "Hello, %s. This HTTP triggered function executed successfully." name return OkObjectResult(responseMessage) :> IActionResult } ``` **Explanation:** 1. **Namespaces:** * `MyAzureFunction`: A namespace for the function. You can change this to something more descriptive for your project. * `Microsoft.AspNetCore.Mvc`: For returning HTTP results (e.g., `OkObjectResult`). * `Microsoft.Azure.WebJobs`: Core Azure Functions library. * `Microsoft.Azure.WebJobs.Extensions.Http`: For HTTP trigger functionality. * `Microsoft.AspNetCore.Http`: For working with HTTP requests. * `Microsoft.Extensions.Logging`: For logging. 2. **`HttpExample` Module:** * Modules in F# are used to group related functions and values. 3. **`[<FunctionName("HttpExample")>]`:** * This attribute is *crucial*. It tells Azure Functions the name of the function. This is the name you'll use when calling the function via HTTP. Change `"HttpExample"` to a more appropriate name if needed. 4. **`Run` Function:** * This is the main entry point for the Azure Function. Azure Functions will call this function when the HTTP trigger is activated. * **Parameters:** * `[<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)>] req: HttpRequest`: This is the HTTP trigger. * `AuthorizationLevel.Anonymous`: Means no authentication is required to call the function. You can change this to `Function`, `Admin`, or `System` for different levels of security. * `"get", "post"`: Specifies that the function will respond to both GET and POST requests. * `Route = null`: Means the function will be triggered by the base URL. You can specify a route (e.g., `Route = "myroute/{id}"`) to make the function respond to a specific URL pattern. * `log: ILogger`: An instance of a logger that you can use to write information, warnings, and errors to the Azure Functions logs. 5. **Function Body (Inside the `task { ... }` block):** * `log.LogInformation "F# HTTP trigger function processed a request."`: Logs a message to the Azure Functions logs. This is helpful for debugging. * **Getting the `name` parameter:** * The code first tries to get the `name` parameter from the query string (e.g., `?name=John`). * If the `name` parameter is not in the query string, it tries to read the request body as JSON and deserialize it into a record with a `name` field. This allows you to send the name in the body of a POST request. * **Creating the response message:** * If a `name` is provided (either in the query string or the request body), it creates a personalized greeting. * Otherwise, it creates a generic message. * `return OkObjectResult(responseMessage) :> IActionResult`: Creates an HTTP 200 OK response with the response message in the body. The `:> IActionResult` is an upcast, required because `OkObjectResult` is a more specific type than `IActionResult`. **How to Use This Code:** 1. **Create an Azure Functions Project:** * In Visual Studio, create a new project. Choose "Azure Functions" as the project type. * Select "HTTP trigger" as the template. * Choose F# as the language. * Select ".NET 6.0" or later as the runtime. * Choose "Anonymous" for the authorization level (you can change this later). 2. **Replace the Default Code:** * Replace the code in the generated `HttpExample.fs` file with the code above. 3. **Install Newtonsoft.Json:** * You'll need to add the `Newtonsoft.Json` NuGet package to your project to handle JSON deserialization. In Visual Studio, right-click on your project in the Solution Explorer, select "Manage NuGet Packages...", search for "Newtonsoft.Json", and install it. 4. **Run Locally:** * Press F5 to run the function locally. The Azure Functions runtime will start, and you'll see the URL of your function in the console output. 5. **Test the Function:** * Open a web browser or use a tool like `curl` or Postman to send HTTP requests to the function's URL. * **Example GET request:** `http://localhost:7071/api/HttpExample?name=Alice` (replace `7071` with the port number shown in the console). * **Example POST request (using `curl`):** ```bash curl -X POST -H "Content-Type: application/json" -d '{"name": "Bob"}' http://localhost:7071/api/HttpExample ``` 6. **Deploy to Azure:** * Right-click on your project in Visual Studio and select "Publish..." to deploy the function to Azure. You'll need an Azure subscription and an Azure Functions app to deploy to. **Key Improvements and Considerations:** * **Error Handling:** This example is very basic. In a real-world function, you'd want to add error handling (e.g., `try...with` blocks) to catch exceptions and return appropriate HTTP error codes (e.g., 400 Bad Request, 500 Internal Server Error). * **Input Validation:** Validate the input data to prevent security vulnerabilities and ensure that the function behaves correctly. * **Dependency Injection:** For more complex functions, consider using dependency injection to manage dependencies (e.g., database connections, other services). Azure Functions supports dependency injection. * **Asynchronous Operations:** Use asynchronous operations (e.g., `task { ... }`) for I/O-bound tasks (e.g., database calls, HTTP requests) to prevent blocking the thread and improve performance. * **Logging:** Use the `ILogger` interface to log information, warnings, and errors. This is essential for debugging and monitoring your function. Use structured logging where possible. * **Configuration:** Use the Azure Functions configuration system to store configuration settings (e.g., connection strings, API keys). This allows you to change the configuration without redeploying the function. * **Idempotency:** If your function performs operations that should only be executed once (e.g., processing a payment), ensure that it is idempotent. This means that if the function is called multiple times with the same input, it will only perform the operation once. * **Testing:** Write unit tests to verify that your function behaves correctly. You can use a testing framework like xUnit or NUnit. * **Authentication/Authorization:** If your function needs to be protected, configure authentication and authorization. Azure Functions supports various authentication providers, such as Azure Active Directory, Microsoft Account, and Google. * **Monitoring:** Use Azure Monitor to monitor the performance and health of your function. You can set up alerts to be notified of any issues. * **Function Bindings:** Explore other Azure Functions bindings (e.g., Blob Storage, Queue Storage, Cosmos DB) to integrate with other Azure services. Bindings simplify the process of reading and writing data to these services. * **Consider using `System.Text.Json`:** While `Newtonsoft.Json` is widely used, `System.Text.Json` is the recommended JSON library for .NET 6 and later due to its performance and security benefits. You'll need to adjust the deserialization code accordingly. This MCP example provides a solid foundation for building more complex Azure Functions in F#. Remember to adapt it to your specific needs and follow best practices for security, performance, and maintainability. **Vietnamese Translation:** Đây là một ví dụ về Azure Function MCP (Tối thiểu, Hoàn chỉnh và Có thể kiểm chứng) được viết bằng F#, minh họa một trình kích hoạt HTTP đơn giản: ```fsharp namespace MyAzureFunction open Microsoft.AspNetCore.Mvc open Microsoft.Azure.WebJobs open Microsoft.Azure.WebJobs.Extensions.Http open Microsoft.AspNetCore.Http open Microsoft.Extensions.Logging module HttpExample = [<FunctionName("HttpExample")>] let Run ( [<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)>] req: HttpRequest, log: ILogger ) = task { log.LogInformation "Hàm kích hoạt HTTP F# đã xử lý một yêu cầu." let name = match req.Query.["name"].ToString() with | null -> let reqBody = new System.IO.StreamReader(req.Body).ReadToEnd() let data = Newtonsoft.Json.JsonConvert.DeserializeObject<{| name: string |}>(reqBody) if data <> null then data.name else null | name -> name let responseMessage = match name with | null -> "Hàm kích hoạt HTTP này đã thực thi thành công. Truyền một tên trong chuỗi truy vấn hoặc trong phần thân yêu cầu để có phản hồi được cá nhân hóa." | name -> sprintf "Xin chào, %s. Hàm kích hoạt HTTP này đã thực thi thành công." name return OkObjectResult(responseMessage) :> IActionResult } ``` **Giải thích:** 1. **Không gian tên:** * `MyAzureFunction`: Một không gian tên cho hàm. Bạn có thể thay đổi điều này thành một cái gì đó mô tả hơn cho dự án của bạn. * `Microsoft.AspNetCore.Mvc`: Để trả về kết quả HTTP (ví dụ: `OkObjectResult`). * `Microsoft.Azure.WebJobs`: Thư viện Azure Functions cốt lõi. * `Microsoft.Azure.WebJobs.Extensions.Http`: Cho chức năng kích hoạt HTTP. * `Microsoft.AspNetCore.Http`: Để làm việc với các yêu cầu HTTP. * `Microsoft.Extensions.Logging`: Để ghi nhật ký. 2. **Module `HttpExample`:** * Các module trong F# được sử dụng để nhóm các hàm và giá trị liên quan. 3. **`[<FunctionName("HttpExample")>]`:** * Thuộc tính này *rất quan trọng*. Nó cho Azure Functions biết tên của hàm. Đây là tên bạn sẽ sử dụng khi gọi hàm qua HTTP. Thay đổi `"HttpExample"` thành một tên phù hợp hơn nếu cần. 4. **Hàm `Run`:** * Đây là điểm vào chính cho Azure Function. Azure Functions sẽ gọi hàm này khi trình kích hoạt HTTP được kích hoạt. * **Tham số:** * `[<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)>] req: HttpRequest`: Đây là trình kích hoạt HTTP. * `AuthorizationLevel.Anonymous`: Có nghĩa là không cần xác thực để gọi hàm. Bạn có thể thay đổi điều này thành `Function`, `Admin` hoặc `System` cho các cấp độ bảo mật khác nhau. * `"get", "post"`: Chỉ định rằng hàm sẽ phản hồi cả yêu cầu GET và POST. * `Route = null`: Có nghĩa là hàm sẽ được kích hoạt bởi URL cơ sở. Bạn có thể chỉ định một tuyến đường (ví dụ: `Route = "myroute/{id}"`) để làm cho hàm phản hồi một mẫu URL cụ thể. * `log: ILogger`: Một thể hiện của trình ghi nhật ký mà bạn có thể sử dụng để ghi thông tin, cảnh báo và lỗi vào nhật ký Azure Functions. 5. **Phần thân hàm (Bên trong khối `task { ... }`):** * `log.LogInformation "Hàm kích hoạt HTTP F# đã xử lý một yêu cầu."`: Ghi một thông báo vào nhật ký Azure Functions. Điều này hữu ích cho việc gỡ lỗi. * **Lấy tham số `name`:** * Đầu tiên, mã cố gắng lấy tham số `name` từ chuỗi truy vấn (ví dụ: `?name=John`). * Nếu tham số `name` không có trong chuỗi truy vấn, nó sẽ cố gắng đọc phần thân yêu cầu dưới dạng JSON và giải tuần tự nó thành một bản ghi có trường `name`. Điều này cho phép bạn gửi tên trong phần thân của yêu cầu POST. * **Tạo thông báo phản hồi:** * Nếu một `name` được cung cấp (trong chuỗi truy vấn hoặc phần thân yêu cầu), nó sẽ tạo ra một lời chào được cá nhân hóa. * Nếu không, nó sẽ tạo ra một thông báo chung. * `return OkObjectResult(responseMessage) :> IActionResult`: Tạo phản hồi HTTP 200 OK với thông báo phản hồi trong phần thân. `:> IActionResult` là một upcast, cần thiết vì `OkObjectResult` là một kiểu cụ thể hơn `IActionResult`. **Cách sử dụng mã này:** 1. **Tạo một dự án Azure Functions:** * Trong Visual Studio, tạo một dự án mới. Chọn "Azure Functions" làm loại dự án. * Chọn "HTTP trigger" làm mẫu. * Chọn F# làm ngôn ngữ. * Chọn ".NET 6.0" trở lên làm thời gian chạy. * Chọn "Anonymous" cho cấp độ ủy quyền (bạn có thể thay đổi điều này sau). 2. **Thay thế mã mặc định:** * Thay thế mã trong tệp `HttpExample.fs` đã tạo bằng mã trên. 3. **Cài đặt Newtonsoft.Json:** * Bạn cần thêm gói NuGet `Newtonsoft.Json` vào dự án của mình để xử lý việc giải tuần tự JSON. Trong Visual Studio, nhấp chuột phải vào dự án của bạn trong Solution Explorer, chọn "Manage NuGet Packages...", tìm kiếm "Newtonsoft.Json" và cài đặt nó. 4. **Chạy cục bộ:** * Nhấn F5 để chạy hàm cục bộ. Thời gian chạy Azure Functions sẽ bắt đầu và bạn sẽ thấy URL của hàm của mình trong đầu ra bảng điều khiển. 5. **Kiểm tra hàm:** * Mở trình duyệt web hoặc sử dụng một công cụ như `curl` hoặc Postman để gửi các yêu cầu HTTP đến URL của hàm. * **Ví dụ yêu cầu GET:** `http://localhost:7071/api/HttpExample?name=Alice` (thay thế `7071` bằng số cổng hiển thị trong bảng điều khiển). * **Ví dụ yêu cầu POST (sử dụng `curl`):** ```bash curl -X POST -H "Content-Type: application/json" -d '{"name": "Bob"}' http://localhost:7071/api/HttpExample ``` 6. **Triển khai lên Azure:** * Nhấp chuột phải vào dự án của bạn trong Visual Studio và chọn "Publish..." để triển khai hàm lên Azure. Bạn sẽ cần đăng ký Azure và một ứng dụng Azure Functions để triển khai. **Cải tiến và Cân nhắc chính:** * **Xử lý lỗi:** Ví dụ này rất cơ bản. Trong một hàm thực tế, bạn sẽ muốn thêm xử lý lỗi (ví dụ: các khối `try...with`) để bắt các ngoại lệ và trả về mã lỗi HTTP thích hợp (ví dụ: 400 Bad Request, 500 Internal Server Error). * **Xác thực đầu vào:** Xác thực dữ liệu đầu vào để ngăn chặn các lỗ hổng bảo mật và đảm bảo rằng hàm hoạt động chính xác. * **Tiêm phụ thuộc:** Đối với các hàm phức tạp hơn, hãy cân nhắc sử dụng tiêm phụ thuộc để quản lý các phụ thuộc (ví dụ: kết nối cơ sở dữ liệu, các dịch vụ khác). Azure Functions hỗ trợ tiêm phụ thuộc. * **Hoạt động không đồng bộ:** Sử dụng các hoạt động không đồng bộ (ví dụ: `task { ... }`) cho các tác vụ liên quan đến I/O (ví dụ: gọi cơ sở dữ liệu, yêu cầu HTTP) để ngăn chặn việc chặn luồng và cải thiện hiệu suất. * **Ghi nhật ký:** Sử dụng giao diện `ILogger` để ghi thông tin, cảnh báo và lỗi. Điều này rất cần thiết cho việc gỡ lỗi và giám sát hàm của bạn. Sử dụng ghi nhật ký có cấu trúc khi có thể. * **Cấu hình:** Sử dụng hệ thống cấu hình Azure Functions để lưu trữ các cài đặt cấu hình (ví dụ: chuỗi kết nối, khóa API). Điều này cho phép bạn thay đổi cấu hình mà không cần triển khai lại hàm. * **Idempotency:** Nếu hàm của bạn thực hiện các thao tác chỉ nên được thực hiện một lần (ví dụ: xử lý thanh toán), hãy đảm bảo rằng nó là idempotent. Điều này có nghĩa là nếu hàm được gọi nhiều lần với cùng một đầu vào, nó sẽ chỉ thực hiện thao tác một lần. * **Kiểm tra:** Viết các bài kiểm tra đơn vị để xác minh rằng hàm của bạn hoạt động chính xác. Bạn có thể sử dụng một khung kiểm tra như xUnit hoặc NUnit. * **Xác thực/Ủy quyền:** Nếu hàm của bạn cần được bảo vệ, hãy định cấu hình xác thực và ủy quyền. Azure Functions hỗ trợ nhiều nhà cung cấp xác thực khác nhau, chẳng hạn như Azure Active Directory, Tài khoản Microsoft và Google. * **Giám sát:** Sử dụng Azure Monitor để giám sát hiệu suất và tình trạng của hàm của bạn. Bạn có thể thiết lập cảnh báo để được thông báo về bất kỳ vấn đề nào. * **Liên kết hàm:** Khám phá các liên kết Azure Functions khác (ví dụ: Blob Storage, Queue Storage, Cosmos DB) để tích hợp với các dịch vụ Azure khác. Liên kết đơn giản hóa quá trình đọc và ghi dữ liệu vào các dịch vụ này. * **Cân nhắc sử dụng `System.Text.Json`:** Mặc dù `Newtonsoft.Json` được sử dụng rộng rãi, `System.Text.Json` là thư viện JSON được khuyến nghị cho .NET 6 trở lên do hiệu suất và lợi ích bảo mật của nó. Bạn sẽ cần điều chỉnh mã giải tuần tự cho phù hợp. Ví dụ MCP này cung cấp một nền tảng vững chắc để xây dựng các Azure Functions phức tạp hơn trong F#. Hãy nhớ điều chỉnh nó cho phù hợp với nhu cầu cụ thể của bạn và tuân theo các phương pháp hay nhất về bảo mật, hiệu suất và khả năng bảo trì.

Azure Assistant MCP

Azure Assistant MCP

Enables natural language exploration of Azure environments by generating and executing KQL queries against Azure Resource Graph. Supports multi-tenant configurations, subscription scoping, and provides direct access to Azure resource information through conversational interactions.

Book4Time MCP Server

Book4Time MCP Server

Enables interaction with the Book4Time API through an Azure Function-hosted server. It allows users to query product information and manage bookings using MCP-compatible clients like Claude Desktop.

SourceSync.ai MCP Server

SourceSync.ai MCP Server

Allows AI models to interact with SourceSync.ai's knowledge management platform to organize, ingest, retrieve, and search content in knowledge bases.

MCP Server Boilerplate

MCP Server Boilerplate

A starter template for building MCP (Model Context Protocol) servers that integrate with Claude, Cursor, or other MCP-compatible AI assistants. Provides a clean foundation with TypeScript support, example tool implementation, and installation scripts for quick customization.

SudoMock

SudoMock

Product mockup rendering API for e-commerce and print-on-demand. Upload Photoshop PSD templates, render photorealistic mockups by placing your designs onto smart object layers. 9 tools including AI-powered render (no PSD needed), template management, and account info. Supports remote HTTP (OAuth) and local stdio (npx) transports.

MCP Printer Server

MCP Printer Server

Enables AI assistants to print documents, manage print queues, and control printers on macOS/Linux systems via the CUPS printing system. Supports printing PDFs, text files, and other formats with options like duplex printing, landscape orientation, and multiple copies.

MCP WeChat Official Accounts Spider

MCP WeChat Official Accounts Spider

Enables AI agents to crawl, access, and analyze WeChat Official Account articles using Selenium and the Model Context Protocol. It provides specialized tools for dynamic content retrieval, image processing, and automated article analysis.

MCP Helm Chart

MCP Helm Chart

Helm Chart cho MCP Server

macOS Native OCR MCP Server

macOS Native OCR MCP Server

Provides offline, high-accuracy OCR capabilities for images and PDFs using macOS's built-in Vision framework. Supports multi-language text extraction with intelligent block aggregation for tables and paragraphs, outputting structured JSON data suitable for document reconstruction.

mcp-api-tester Tools & Interfaces

mcp-api-tester Tools & Interfaces

Máy chủ MCP cho LLM để kiểm tra API.

Rovodev MCP Tool

Rovodev MCP Tool

Integrates the Atlassian Rovo Dev CLI with the Model Context Protocol, allowing AI assistants to perform deep code analysis using Rovo Dev's large context capabilities. It enables features like repository-wide queries, file-specific analysis, and specialized coding modes through a standard MCP interface.

MCP Podcast Scraper

MCP Podcast Scraper

An MCP server that scrapes and transcribes podcast episodes from YouTube or RSS feeds using Deepgram's Nova-2 model. It allows users to track podcasts for new episodes, manage transcripts, and generate personalized summaries through Claude.

md-redline

md-redline

Inline review comments for markdown specs and design docs. Agents request human review mid-task via MCP and pause until you send feedback.

EdgeOne Geo MCP Server

EdgeOne Geo MCP Server

Enables large language models to retrieve user geolocation data using EdgeOne Pages Functions. It provides a dedicated tool to fetch location information in JSON format through the Model Context Protocol.

open-museum-mcp

open-museum-mcp

Federated, license-verified search across open-access museum collections — currently The Met, Cleveland, AIC, Wikimedia Commons, and Europeana, with more being added. Strict-default-deny rights gate accepts only CC0 / Public Domain Mark, returning reuse-safe artwork with citations in three styles.

Remote MCP Server on Cloudflare

Remote MCP Server on Cloudflare

A deployable Model Context Protocol server that runs on Cloudflare Workers without requiring authentication, allowing users to create custom AI tools and connect them to clients like Claude Desktop and Cloudflare AI Playground.

MCP TypeScript SDK

MCP TypeScript SDK

A toolkit for building Model Context Protocol servers and clients that provide standardized context for LLMs, allowing applications to expose resources, tools, and prompts through stdio or Streamable HTTP transports.