diff --git a/README.md b/README.md
index cfeb1e62..c9f266f9 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ Each MCP server is implemented with either the [Typescript MCP SDK](https://gith
## π Reference Servers
-These servers aim to demonstrate MCP features and the Typescript and Python SDK.
+These servers aim to demonstrate MCP features and the TypeScript and Python SDKs.
- **[AWS KB Retrieval](src/aws-kb-retrieval-server)** - Retrieval from AWS Knowledge Base using Bedrock Agent Runtime
- **[Brave Search](src/brave-search)** - Web and local search using Brave's Search API
@@ -38,14 +38,18 @@ These servers aim to demonstrate MCP features and the Typescript and Python SDK.
Official integrations are maintained by companies building production ready MCP servers for their platforms.
+-
**[Apify](https://github.com/apify/actors-mcp-server)** - [Actors MCP Server](https://apify.com/apify/actors-mcp-server): Use 3,000+ pre-built cloud tools to extract data from websites, e-commerce, social media, search engines, maps, and more
-
**[Axiom](https://github.com/axiomhq/mcp-server-axiom)** - Query and analyze your Axiom logs, traces, and all other event data in natural language
-
**[Browserbase](https://github.com/browserbase/mcp-server-browserbase)** - Automate browser interactions in the cloud (e.g. web navigation, data extraction, form filling, and more)
-
**[Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare)** - Deploy, configure & interrogate your resources on the Cloudflare developer platform (e.g. Workers/KV/R2/D1)
-
**[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
+-
**[eSignatures](https://github.com/esignaturescom/mcp-server-esignatures)** - Contract and template management for drafting, reviewing, and sending binding contracts.
+- [Eunomia](https://github.com/whataboutyou-ai/eunomia-MCP-server)** - Extension of the Eunomia framework that connects Eunomia instruments with MCP servers
-
**[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
-
**[Fireproof](https://github.com/fireproof-storage/mcp-database-server)** - Immutable ledger database with live synchronization
-- **[IBM wxflows](https://github.com/IBM/wxflows/tree/main/examples/mcp/javascript)** - Tool platform by IBM to build, test and deploy tools for any data source
-
**[Grafana](https://github.com/grafana/mcp-grafana)** - Search dashboards, investigate incidents and query datasources in your Grafana instance
+- **[IBM wxflows](https://github.com/IBM/wxflows/tree/main/examples/mcp/javascript)** - Tool platform by IBM to build, test and deploy tools for any data source
+-
**[Integration App](https://github.com/integration-app/mcp-server)** - Interact with any other SaaS applications on behalf of your customers.
-
**[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** β Work on your code with JetBrains IDEs
-
**[Kagi Search](https://github.com/kagisearch/kagimcp)** - Search the web using Kagi's search API
-
**[Meilisearch](https://github.com/meilisearch/meilisearch-mcp)** - Interact & query with Meilisearch (Full-text & semantic search API)
@@ -54,10 +58,14 @@ Official integrations are maintained by companies building production ready MCP
-
**[Needle](https://github.com/needle-ai/needle-mcp)** - Production-ready RAG out of the box to search and retrieve data from your own documents.
-
**[Neo4j](https://github.com/neo4j-contrib/mcp-neo4j/)** - Neo4j graph database server (schema + read/write-cypher) and separate graph database backed memory
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
+-
**[Oxylabs](https://github.com/oxylabs/oxylabs-mcp)** - Scrape websites with Oxylabs Web API, supporting dynamic rendering and parsing for structured data extraction.
-
**[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
- **[Raygun](https://github.com/MindscapeHQ/mcp-server-raygun)** - Interact with your crash reporting and real using monitoring data on your Raygun account
+-
**[Riza](https://github.com/riza-io/riza-mcp)** - Arbitrary code execution and tool-use platform for LLMs by [Riza](https://riza.io)
-
[Search1API](https://github.com/fatwang2/search1api-mcp) - One API for Search, Crawling, and Sitemaps
+-
**[Tavily](https://github.com/tavily-ai/tavily-mcp)** - Search engine for AI agents (search + extract) powered by [Tavily](https://tavily.com/)
-
**[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
+-
**[Verodat](https://github.com/ThinkEvolveSolve/verodat-mcp-server)** - Interact with Verodat AI Ready Data platform
### π Community Servers
@@ -72,41 +80,61 @@ A growing set of community-developed and maintained servers demonstrates various
- **[AlphaVantage](https://github.com/calvernaz/alphavantage)** - MCP server for stock market data API [AlphaVantage](https://www.alphavantage.co)
- **[Anki](https://github.com/scorzeth/anki-mcp-server)** - An MCP server for interacting with your [Anki](https://apps.ankiweb.net) decks and cards.
- **[Any Chat Completions](https://github.com/pyroprompts/any-chat-completions-mcp)** - Interact with any OpenAI SDK Compatible Chat Completions API like OpenAI, Perplexity, Groq, xAI and many more.
+- **[ArangoDB](https://github.com/ravenwits/mcp-server-arangodb)** - MCP Server that provides database interaction capabilities through [ArangoDB](https://arangodb.com/).
- **[Atlassian](https://github.com/sooperset/mcp-atlassian)** - Interact with Atlassian Cloud products (Confluence and Jira) including searching/reading Confluence spaces/pages, accessing Jira issues, and project metadata.
+- **[Base Free USDC Transfer](https://github.com/magnetai/mcp-free-usdc-transfer)** - Send USDC on [Base](https://base.org) for free using Claude AI! Built with [Coinbase CDP](https://docs.cdp.coinbase.com/mpc-wallet/docs/welcome).
- **[BigQuery](https://github.com/LucasHild/mcp-server-bigquery)** (by LucasHild) - This server enables LLMs to inspect database schemas and execute queries on BigQuery.
- **[BigQuery](https://github.com/ergut/mcp-bigquery-server)** (by ergut) - Server implementation for Google BigQuery integration that enables direct BigQuery database access and querying capabilities
+- **[Calendar](https://github.com/GongRzhe/Calendar-MCP-Server)** - Google Calendar integration server enabling AI assistants to manage calendar events through natural language interactions.
+- **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/).
- **[ChatMCP](https://github.com/AI-QL/chat-mcp)** β An Open Source Cross-platform GUI Desktop application compatible with Linux, macOS, and Windows, enabling seamless interaction with MCP servers across dynamically selectable LLMs, by **[AIQL](https://github.com/AI-QL)**
- **[ChatSum](https://github.com/mcpso/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
- **[Chroma](https://github.com/privetin/chroma)** - Vector database server for semantic document search and metadata filtering, built on Chroma
+- **[ClaudePost](https://github.com/ZilongXue/claude-post)** - ClaudePost enables seamless email management for Gmail, offering secure features like email search, reading, and sending.
- **[Cloudinary](https://github.com/felores/cloudinary-mcp-server)** - Cloudinary Model Context Protocol Server to upload media to Cloudinary and get back the media link and details.
-- **[cognee-mcp](https://github.com/topoteretes/cognee-mcp-server)** - GraphRAG memory server with customizable ingestion, data processing and search
+- **[code-sandbox-mcp](https://github.com/Automata-Labs-team/code-sandbox-mcp)** - An MCP server to create secure code sandbox environment for executing code within Docker containers.
+- **[cognee-mcp](https://github.com/topoteretes/cognee/tree/main/cognee-mcp)** - GraphRAG memory server with customizable ingestion, data processing and search
- **[coin_api_mcp](https://github.com/longmans/coin_api_mcp)** - Provides access to [coinmarketcap](https://coinmarketcap.com/) cryptocurrency data.
- **[Contentful-mcp](https://github.com/ivo-toby/contentful-mcp)** - Read, update, delete, publish content in your [Contentful](https://contentful.com) space(s) from this MCP Server.
- **[Data Exploration](https://github.com/reading-plus-ai/mcp-server-data-exploration)** - MCP server for autonomous data exploration on .csv-based datasets, providing intelligent insights with minimal effort. NOTE: Will execute arbitrary Python code on your machine, please use with caution!
- **[Dataset Viewer](https://github.com/privetin/dataset-viewer)** - Browse and analyze Hugging Face datasets with features like search, filtering, statistics, and data export
+- **[DeepSeek MCP Server](https://github.com/DMontgomery40/deepseek-mcp-server)** - Model Context Protocol server integrating DeepSeek's advanced language models, in addition to [other useful API endpoints](https://github.com/DMontgomery40/deepseek-mcp-server?tab=readme-ov-file#features)
+- **[Descope](https://github.com/descope-sample-apps/descope-mcp-server)** - An MCP server to integrate with [Descope](https://descope.com) to search audit logs, manage users, and more.
- **[DevRev](https://github.com/kpsunil97/devrev-mcp-server)** - An MCP server to integrate with DevRev APIs to search through your DevRev Knowledge Graph where objects can be imported from diff. sources listed [here](https://devrev.ai/docs/import#available-sources).
- **[Dify](https://github.com/YanxingLiu/dify-mcp-server)** - A simple implementation of an MCP server for dify workflows.
+- **[Discord](https://github.com/v-3/discordmcp)** - A MCP server to connect to Discord guilds through a bot and read and write messages in channels
- **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks.
- **[Drupal](https://github.com/Omedia/mcp-server-drupal)** - Server for interacting with [Drupal](https://www.drupal.org/project/mcp) using STDIO transport layer.
- **[Elasticsearch](https://github.com/cr7258/elasticsearch-mcp-server)** - MCP server implementation that provides Elasticsearch interaction.
+- **[ElevenLabs](https://github.com/mamertofabian/elevenlabs-mcp-server)** - A server that integrates with ElevenLabs text-to-speech API capable of generating full voiceovers with multiple voices.
+- **[Everything Search](https://github.com/mamertofabian/mcp-everything-search)** - Fast file searching capabilities across Windows (using [Everything SDK](https://www.voidtools.com/support/everything/sdk/)), macOS (using mdfind command), and Linux (using locate/plocate command).
- **[Fetch](https://github.com/zcaceres/fetch-mcp)** - A server that flexibly fetches HTML, JSON, Markdown, or plaintext.
- **[FireCrawl](https://github.com/vrknetha/mcp-server-firecrawl)** - Advanced web scraping with JavaScript rendering, PDF support, and smart rate limiting
- **[FlightRadar24](https://github.com/sunsetcoder/flightradar24-mcp-server)** - A Claude Desktop MCP server that helps you track flights in real-time using Flightradar24 data.
- **[Glean](https://github.com/longyi1207/glean-mcp-server)** - A server that uses Glean API to search and chat.
+- **[Gmail](https://github.com/GongRzhe/Gmail-MCP-Server)** - A Model Context Protocol (MCP) server for Gmail integration in Claude Desktop with auto authentication support.
+- **[Goal Story](https://github.com/hichana/goalstory-mcp)** - a Goal Tracker and Visualization Tool for personal and professional development.
+- **[Golang Filesystem Server](https://github.com/mark3labs/mcp-filesystem-server)** - Secure file operations with configurable access controls built with Go!
- **[Google Calendar](https://github.com/v-3/google-calendar)** - Integration with Google Calendar to check schedules, find time, and add/delete events
+- **[Google Calendar](https://github.com/nspady/google-calendar-mcp)** - Google Calendar MCP Server for managing Google calendar events. Also supports searching for events by attributes like title and location.
- **[Google Tasks](https://github.com/zcaceres/gtasks-mcp)** - Google Tasks API Model Context Protocol Server.
- **[Home Assistant](https://github.com/tevonsb/homeassistant-mcp)** - Interact with [Home Assistant](https://www.home-assistant.io/) including viewing and controlling lights, switches, sensors, and all other Home Assistant entities.
+- **[HubSpot](https://github.com/buryhuang/mcp-hubspot)** - HubSpot CRM integration for managing contacts and companies. Create and retrieve CRM data directly through Claude chat.
- **[HuggingFace Spaces](https://github.com/evalstate/mcp-hfspace)** - Server for using HuggingFace Spaces, supporting Open Source Image, Audio, Text Models and more. Claude Desktop mode for easy integration.
- **[Inoyu](https://github.com/sergehuber/inoyu-mcp-unomi-server)** - Interact with an Apache Unomi CDP customer data platform to retrieve and update customer profiles
+- **[iTerm MCP](https://github.com/ferrislucas/iterm-mcp)** - Integration with iTerm2 terminal emulator for macOS, enabling LLMs to execute and monitor terminal commands.
- **[JavaFX](https://github.com/mcpso/mcp-server-javafx)** - Make drawings using a JavaFX canvas
- **[JDBC](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc)** - Connect to any JDBC-compatible database and query, insert, update, delete, and more. Supports MySQL, PostgreSQL, Oracle, SQL Server, sqllite and [more](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc#supported-jdbc-variants).
+- **[JSON](https://github.com/GongRzhe/JSON-MCP-Server)** - JSON handling and processing server with advanced query capabilities using JSONPath syntax and support for array, string, numeric, and date operations.
- **[Keycloak MCP](https://github.com/ChristophEnglisch/keycloak-model-context-protocol)** - This MCP server enables natural language interaction with Keycloak for user and realm management including creating, deleting, and listing users and realms.
- **[Kubernetes](https://github.com/Flux159/mcp-server-kubernetes)** - Connect to Kubernetes cluster and manage pods, deployments, and services.
- **[Linear](https://github.com/jerhadf/linear-mcp-server)** - Allows LLM to interact with Linear's API for project management, including searching, creating, and updating issues.
- **[LlamaCloud](https://github.com/run-llama/mcp-server-llamacloud)** (by marcusschiesser) - Integrate the data stored in a managed index on [LlamaCloud](https://cloud.llamaindex.ai/)
- **[llm-context](https://github.com/cyberchitta/llm-context.py)** - Provides a repo-packing MCP tool with configurable profiles that specify file inclusion/exclusion patterns and optional prompts.
+- **[MCP Compass](https://github.com/liuyoshio/mcp-compass)** - Suggest the right MCP server for your needs
- **[MCP Installer](https://github.com/anaisbetts/mcp-installer)** - This server is a server that installs other MCP servers for you.
- **[mcp-k8s-go](https://github.com/strowk/mcp-k8s-go)** - Golang-based Kubernetes server for MCP to browse pods and their logs, events, namespaces and more. Built to be extensible.
+- **[mcp-proxy](https://github.com/sparfenyuk/mcp-proxy)** - Connect to MCP servers that run on SSE transport, or expose stdio servers as an SSE server.
- **[MSSQL](https://github.com/aekanun2020/mcp-server/)** - MSSQL database integration with configurable access controls and schema inspection
- **[Markdownify](https://github.com/zcaceres/mcp-markdownify-server)** - MCP to convert almost anything to Markdown (PPTX, HTML, PDF, Youtube Transcripts and more)
- **[Minima](https://github.com/dmayboroda/minima)** - MCP server for RAG on local files
@@ -114,40 +142,61 @@ A growing set of community-developed and maintained servers demonstrates various
- **[MySQL](https://github.com/benborla/mcp-server-mysql)** (by benborla) - MySQL database integration in NodeJS with configurable access controls and schema inspection
- **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** (by DesignComputer) - MySQL database integration in Python with configurable access controls and schema inspection
- **[NS Travel Information](https://github.com/r-huijts/ns-mcp-server)** - Access Dutch Railways (NS) real-time train travel information and disruptions through the official NS API.
+- **[Neo4j](https://github.com/da-okazaki/mcp-neo4j-server)** - A community built server that interacts with Neo4j Graph Database.
+- **[Neovim](https://github.com/bigcodegen/mcp-neovim-server)** - An MCP Server for your Neovim session.
- **[Notion](https://github.com/suekou/mcp-notion-server)** (by suekou) - Interact with Notion API.
- **[Notion](https://github.com/v-3/notion-server)** (by v-3) - Notion MCP integration. Search, Read, Update, and Create pages through Claude chat.
- **[oatpp-mcp](https://github.com/oatpp/oatpp-mcp)** - C++ MCP integration for Oat++. Use [Oat++](https://oatpp.io) to build MCP servers.
- **[Obsidian Markdown Notes](https://github.com/calclavia/mcp-obsidian)** - Read and search through your Obsidian vault or any directory containing Markdown notes
+- **[obsidian-mcp](https://github.com/StevenStavrakis/obsidian-mcp)** - (by Steven Stavrakis) An MCP server for Obsidian.md with tools for searching, reading, writing, and organizing notes.
- **[OpenAPI](https://github.com/snaggle-ai/openapi-mcp-server)** - Interact with [OpenAPI](https://www.openapis.org/) APIs.
- **[OpenCTI](https://github.com/Spathodea-Network/opencti-mcp)** - Interact with OpenCTI platform to retrieve threat intelligence data including reports, indicators, malware and threat actors.
- **[OpenRPC](https://github.com/shanejonas/openrpc-mpc-server)** - Interact with and discover JSON-RPC APIs via [OpenRPC](https://open-rpc.org).
-- **[Pandoc](https://github.com/vivekVells/mcp-pandoc)** - MCP server for seamless document format conversion using Pandoc, supporting Markdown, HTML, and plain text, with other formats like PDF, csv and docx in development.
+- **[Open Strategy Partners Marketing Tools](https://github.com/open-strategy-partners/osp_marketing_tools)** - Content editing codes, value map, and positioning tools for product marketing.
+- **[Pandoc](https://github.com/vivekVells/mcp-pandoc)** - MCP server for seamless document format conversion using Pandoc, supporting Markdown, HTML, PDF, DOCX (.docx), csv and more.
- **[Pinecone](https://github.com/sirmews/mcp-pinecone)** - MCP server for searching and uploading records to Pinecone. Allows for simple RAG features, leveraging Pinecone's Inference API.
- **[Placid.app](https://github.com/felores/placid-mcp-server)** - Generate image and video creatives using Placid.app templates
- **[Playwright](https://github.com/executeautomation/mcp-playwright)** - This MCP Server will help you run browser automation and webscraping using Playwright
- **[Postman](https://github.com/shannonlal/mcp-postman)** - MCP server for running Postman Collections locally via Newman. Allows for simple execution of Postman Server and returns the results of whether the collection passed all the tests.
-- **[RAG Web Browser](https://github.com/apify/mcp-server-rag-web-browser)** An MCP server for Apify's RAG Web Browser Actor to perform web searches, scrape URLs, and return content in Markdown.
+- **[RabbitMQ](https://github.com/kenliao94/mcp-server-rabbitmq)** - The MCP server that interacts with RabbitMQ to publish and consume messages.
+- **[RAG Web Browser](https://github.com/apify/mcp-server-rag-web-browser)** An MCP server for Apify's open-source RAG Web Browser [Actor](https://apify.com/apify/rag-web-browser) to perform web searches, scrape URLs, and return content in Markdown.
+- **[Reaper](https://github.com/dschuler36/reaper-mcp-server)** - Interact with your [Reaper](https://www.reaper.fm/) (Digital Audio Workstation) projects.
+- **[Redis](https://github.com/GongRzhe/REDIS-MCP-Server)** - Redis database operations and caching microservice server with support for key-value operations, expiration management, and pattern-based key listing.
- **[Rememberizer AI](https://github.com/skydeckai/mcp-server-rememberizer)** - An MCP server designed for interacting with the Rememberizer data source, facilitating enhanced knowledge retrieval.
+- **[Rijksmuseum](https://github.com/r-huijts/rijksmuseum-mcp)** - Interface with the Rijksmuseum API to search artworks, retrieve artwork details, access image tiles, and explore user collections.
- **[Salesforce MCP](https://github.com/smn2gnt/MCP-Salesforce)** - Interact with Salesforce Data and Metadata
- **[Scholarly](https://github.com/adityak74/mcp-scholarly)** - A MCP server to search for scholarly and academic articles.
+- **[SearXNG](https://github.com/ihor-sokoliuk/mcp-searxng)** - A Model Context Protocol Server for [SearXNG](https://docs.searxng.org)
- **[Snowflake](https://github.com/isaacwasserman/mcp-snowflake-server)** - This MCP server enables LLMs to interact with Snowflake databases, allowing for secure and controlled data operations.
- **[Spotify](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify.
- **[TMDB](https://github.com/Laksh-star/mcp-server-tmdb)** - This MCP server integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations.
- **[Tavily search](https://github.com/RamXX/mcp-tavily)** - An MCP server for Tavily's search & news API, with explicit site inclusions/exclusions
+- **[Ticketmaster](https://github.com/delorenj/mcp-server-ticketmaster)** - Search for events, venues, and attractions through the Ticketmaster Discovery API
- **[Todoist](https://github.com/abhiz123/todoist-mcp-server)** - Interact with Todoist to manage your tasks.
+- **[Travel Planner](https://github.com/GongRzhe/TRAVEL-PLANNER-MCP-Server)** - Travel planning and itinerary management server integrating with Google Maps API for location search, place details, and route calculations.
- **[Vega-Lite](https://github.com/isaacwasserman/mcp-vegalite-server)** - Generate visualizations from fetched data using the VegaLite format and renderer.
+- **[Video Editor](https://github.com/burningion/video-editing-mcp)** - A Model Context Protocol Server to add, edit, and search videos with [Video Jungle](https://www.video-jungle.com/).
- **[Windows CLI](https://github.com/SimonB97/win-cli-mcp-server)** - MCP server for secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, and Git Bash shells.
+- **[World Bank data API](https://github.com/anshumax/world_bank_mcp_server)** - A server that fetches data indicators available with the World Bank as part of their data API
- **[X (Twitter)](https://github.com/EnesCinr/twitter-mcp)** (by EnesCinr) - Interact with twitter API. Post tweets and search for tweets by query.
- **[X (Twitter)](https://github.com/vidhupv/x-mcp)** (by vidhupv) - Create, manage and publish X/Twitter posts directly through Claude chat.
- **[XMind](https://github.com/apeyroux/mcp-xmind)** - Read and search through your XMind directory containing XMind files.
+- **[YouTube](https://github.com/ZubeidHendricks/youtube-mcp-server)** - Comprehensive YouTube API integration for video management, Shorts creation, and analytics.
## π Frameworks
-These are high-level frameworks that make it easier to build MCP servers.
+These are high-level frameworks that make it easier to build MCP servers or clients.
-* [EasyMCP](https://github.com/zcaceres/easy-mcp/) (TypeScript)
-* [FastMCP](https://github.com/punkpeye/fastmcp) (TypeScript)
-* [Quarkus MCP Server SDK](https://github.com/quarkiverse/quarkus-mcp-server) (Java)
+### For servers
+
+* **[EasyMCP](https://github.com/zcaceres/easy-mcp/)** (TypeScript)
+* **[FastMCP](https://github.com/punkpeye/fastmcp)** (TypeScript)
+* **[Foxy Contexts](https://github.com/strowk/foxy-contexts)** β A library to build MCP servers in Golang by **[strowk](https://github.com/strowk)**
+* **[Quarkus MCP Server SDK](https://github.com/quarkiverse/quarkus-mcp-server)** (Java)
+
+### For clients
+
+* **[codemirror-mcp](https://github.com/marimo-team/codemirror-mcp)** - CodeMirror extension that implements the Model Context Protocol (MCP) for resource mentions and prompt commands
## π Resources
@@ -160,6 +209,7 @@ Additional resources on MCP.
- **[Awesome MCP Servers by wong2](https://github.com/wong2/awesome-mcp-servers)** (**[website](https://mcpservers.org)**) - A curated list of MCP servers by **[wong2](https://github.com/wong2)**
- **[Discord Server](https://glama.ai/mcp/discord)** βΒ A community discord server dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
- **[MCP Badges](https://github.com/mcpx-dev/mcp-badges)** β Quickly highlight your MCP project with clear, eye-catching badges, by **[Ironben](https://github.com/nanbingxyz)**
+- **[MCP Servers Hub](https://github.com/apappascs/mcp-servers-hub)** (**[website](https://mcp-servers-hub-website.pages.dev/)**) - A curated list of MCP servers by **[apappascs](https://github.com/apappascs)**
- **[MCP X Community](https://x.com/i/communities/1861891349609603310)** βΒ A X community for MCP by **[Xiaoyi](https://x.com/chxy)**
- **[mcp-cli](https://github.com/wong2/mcp-cli)** - A CLI inspector for the Model Context Protocol by **[wong2](https://github.com/wong2)**
- **[mcp-get](https://mcp-get.com)** - Command line tool for installing and managing MCP servers by **[Michael Latman](https://github.com/michaellatman)**
@@ -167,9 +217,11 @@ Additional resources on MCP.
- **[MCPHub](https://github.com/Jeamee/MCPHub-Desktop)** βΒ An Open Source MacOS & Windows GUI Desktop app for discovering, installing and managing MCP servers by **[Jeamee](https://github.com/jeamee)**
- **[mcp.run](https://mcp.run)** - A hosted registry and control plane to install & run secure + portable MCP Servers.
- **[Open-Sourced MCP Servers Directory](https://github.com/chatmcp/mcp-directory)** - A curated list of MCP servers by **[mcpso](https://mcp.so)**
+-
**[OpenTools](https://opentools.com)** - An open registry for finding, installing, and building with MCP servers by **[opentoolsteam](https://github.com/opentoolsteam)**
- **[PulseMCP](https://www.pulsemcp.com)** ([API](https://www.pulsemcp.com/api)) - Community hub & weekly newsletter for discovering MCP servers, clients, articles, and news by **[Tadas Antanavicius](https://github.com/tadasant)**, **[Mike Coughlin](https://github.com/macoughl)**, and **[Ravina Patel](https://github.com/ravinahp)**
- **[r/mcp](https://www.reddit.com/r/mcp)** βΒ A Reddit community dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
- **[Smithery](https://smithery.ai/)** - A registry of MCP servers to find the right tools for your LLM agents by **[Henry Mao](https://github.com/calclavia)**
+- **[Toolbase](https://gettoolbase.ai)** - Desktop application that manages tools and MCP servers with just a few clicks - no coding required by **[gching](https://github.com/gching)**
## π Getting Started
diff --git a/src/everything/package.json b/src/everything/package.json
index 0344f2f1..680dbb88 100644
--- a/src/everything/package.json
+++ b/src/everything/package.json
@@ -16,7 +16,9 @@
"scripts": {
"build": "tsc && shx chmod +x dist/*.js",
"prepare": "npm run build",
- "watch": "tsc --watch"
+ "watch": "tsc --watch",
+ "start": "node dist/index.js",
+ "start:sse": "node dist/sse.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "1.0.1",
diff --git a/src/gdrive/index.ts b/src/gdrive/index.ts
index 575c350c..1fa4dc89 100644
--- a/src/gdrive/index.ts
+++ b/src/gdrive/index.ts
@@ -12,6 +12,7 @@ import {
import fs from "fs";
import { google } from "googleapis";
import path from "path";
+import { fileURLToPath } from 'url';
const drive = google.drive("v3");
@@ -176,7 +177,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
});
const credentialsPath = process.env.GDRIVE_CREDENTIALS_PATH || path.join(
- path.dirname(new URL(import.meta.url).pathname),
+ path.dirname(fileURLToPath(import.meta.url)),
"../../../.gdrive-server-credentials.json",
);
@@ -184,7 +185,7 @@ async function authenticateAndSaveCredentials() {
console.log("Launching auth flowβ¦");
const auth = await authenticate({
keyfilePath: process.env.GDRIVE_OAUTH_PATH || path.join(
- path.dirname(new URL(import.meta.url).pathname),
+ path.dirname(fileURLToPath(import.meta.url)),
"../../../gcp-oauth.keys.json",
),
scopes: ["https://www.googleapis.com/auth/drive.readonly"],
diff --git a/src/git/README.md b/src/git/README.md
index f0855695..827d58fa 100644
--- a/src/git/README.md
+++ b/src/git/README.md
@@ -67,18 +67,23 @@ Please note that mcp-server-git is currently in early development. The functiona
- `branch_name` (string): Name of the new branch
- `start_point` (string, optional): Starting point for the new branch
- Returns: Confirmation of branch creation
-8. `git_checkout`
+10. `git_checkout`
- Switches branches
- Inputs:
- `repo_path` (string): Path to Git repository
- `branch_name` (string): Name of branch to checkout
- Returns: Confirmation of branch switch
-9. `git_show`
+11. `git_show`
- Shows the contents of a commit
- Inputs:
- `repo_path` (string): Path to Git repository
- `revision` (string): The revision (commit hash, branch name, tag) to show
- Returns: Contents of the specified commit
+12. `git_init`
+ - Initializes a Git repository
+ - Inputs:
+ - `repo_path` (string): Path to directory to initialize git repo
+ - Returns: Confirmation of repository initialization
## Installation
diff --git a/src/git/src/mcp_server_git/server.py b/src/git/src/mcp_server_git/server.py
index 9b204c6e..c6a346cf 100644
--- a/src/git/src/mcp_server_git/server.py
+++ b/src/git/src/mcp_server_git/server.py
@@ -56,6 +56,9 @@ class GitShow(BaseModel):
repo_path: str
revision: str
+class GitInit(BaseModel):
+ repo_path: str
+
class GitTools(str, Enum):
STATUS = "git_status"
DIFF_UNSTAGED = "git_diff_unstaged"
@@ -68,6 +71,7 @@ class GitTools(str, Enum):
CREATE_BRANCH = "git_create_branch"
CHECKOUT = "git_checkout"
SHOW = "git_show"
+ INIT = "git_init"
def git_status(repo: git.Repo) -> str:
return repo.git.status()
@@ -118,6 +122,13 @@ def git_checkout(repo: git.Repo, branch_name: str) -> str:
repo.git.checkout(branch_name)
return f"Switched to branch '{branch_name}'"
+def git_init(repo_path: str) -> str:
+ try:
+ repo = git.Repo.init(path=repo_path, mkdir=True)
+ return f"Initialized empty Git repository in {repo.git_dir}"
+ except Exception as e:
+ return f"Error initializing repository: {str(e)}"
+
def git_show(repo: git.Repo, revision: str) -> str:
commit = repo.commit(revision)
output = [
@@ -206,6 +217,11 @@ async def serve(repository: Path | None) -> None:
name=GitTools.SHOW,
description="Shows the contents of a commit",
inputSchema=GitShow.schema(),
+ ),
+ Tool(
+ name=GitTools.INIT,
+ description="Initialize a new Git repository",
+ inputSchema=GitInit.schema(),
)
]
@@ -241,6 +257,16 @@ async def serve(repository: Path | None) -> None:
@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
repo_path = Path(arguments["repo_path"])
+
+ # Handle git init separately since it doesn't require an existing repo
+ if name == GitTools.INIT:
+ result = git_init(str(repo_path))
+ return [TextContent(
+ type="text",
+ text=result
+ )]
+
+ # For all other commands, we need an existing repo
repo = git.Repo(repo_path)
match name:
diff --git a/src/github/common/utils.ts b/src/github/common/utils.ts
index 21c8aa71..e85691a0 100644
--- a/src/github/common/utils.ts
+++ b/src/github/common/utils.ts
@@ -1,10 +1,12 @@
+import { getUserAgent } from "universal-user-agent";
import { createGitHubError } from "./errors.js";
+import { VERSION } from "./version.js";
type RequestOptions = {
method?: string;
body?: unknown;
headers?: Record;
-};
+}
async function parseResponseBody(response: Response): Promise {
const contentType = response.headers.get("content-type");
@@ -24,6 +26,8 @@ export function buildUrl(baseUrl: string, params: Record = {
"Accept": "application/vnd.github.v3+json",
"Content-Type": "application/json",
+ "User-Agent": USER_AGENT,
...options.headers,
};
diff --git a/src/github/common/version.ts b/src/github/common/version.ts
new file mode 100644
index 00000000..00b8a691
--- /dev/null
+++ b/src/github/common/version.ts
@@ -0,0 +1 @@
+export const VERSION = "0.6.2";
\ No newline at end of file
diff --git a/src/github/index.ts b/src/github/index.ts
index 3d60e8fa..88b23689 100644
--- a/src/github/index.ts
+++ b/src/github/index.ts
@@ -25,11 +25,12 @@ import {
GitHubConflictError,
isGitHubError,
} from './common/errors.js';
+import { VERSION } from "./common/version.js";
const server = new Server(
{
name: "github-mcp-server",
- version: "0.1.0",
+ version: VERSION,
},
{
capabilities: {
diff --git a/src/github/package.json b/src/github/package.json
index 46d24ccd..29f5296b 100644
--- a/src/github/package.json
+++ b/src/github/package.json
@@ -23,6 +23,7 @@
"@types/node": "^22",
"@types/node-fetch": "^2.6.12",
"node-fetch": "^3.3.2",
+ "universal-user-agent": "^7.0.2",
"zod": "^3.22.4",
"zod-to-json-schema": "^3.23.5"
},
@@ -30,4 +31,4 @@
"shx": "^0.3.4",
"typescript": "^5.6.2"
}
-}
\ No newline at end of file
+}
diff --git a/src/gitlab/README.md b/src/gitlab/README.md
index e2b16fe1..4b3d6dc3 100644
--- a/src/gitlab/README.md
+++ b/src/gitlab/README.md
@@ -117,6 +117,8 @@ Add the following to your `claude_desktop_config.json`:
"command": "docker",
"args": [
"run",
+ "--rm",
+ "-i",
"-e",
"GITLAB_PERSONAL_ACCESS_TOKEN",
"-e",
@@ -167,4 +169,4 @@ docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .
## License
-This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
\ No newline at end of file
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
diff --git a/src/google-maps/README.md b/src/google-maps/README.md
index c0fd576e..b91a0657 100644
--- a/src/google-maps/README.md
+++ b/src/google-maps/README.md
@@ -106,7 +106,7 @@ Add the following to your `claude_desktop_config.json`:
Docker build:
```bash
-docker build -t vonwig/google-maps:mcp -f src/google-maps/Dockerfile .
+docker build -t mcp/google-maps -f src/google-maps/Dockerfile .
```
## License
diff --git a/src/memory/README.md b/src/memory/README.md
index e405a0d4..e5795cb5 100644
--- a/src/memory/README.md
+++ b/src/memory/README.md
@@ -137,7 +137,7 @@ Add this to your claude_desktop_config.json:
"mcpServers": {
"memory": {
"command": "docker",
- "args": ["run", "-i", "--rm", "mcp/memory"]
+ "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
}
}
}
@@ -158,6 +158,29 @@ Add this to your claude_desktop_config.json:
}
```
+#### NPX with custom setting
+
+The server can be configured using the following environment variables:
+
+```json
+{
+ "mcpServers": {
+ "memory": {
+ "command": "npx",
+ "args": [
+ "-y",
+ "@modelcontextprotocol/server-memory"
+ ],
+ "env": {
+ "MEMORY_FILE_PATH": "/path/to/custom/memory.json"
+ }
+ }
+ }
+}
+```
+
+- `MEMORY_FILE_PATH`: Path to the memory storage JSON file (default: `memory.json` in the server directory)
+
### System Prompt
The prompt for utilizing memory depends on the use case. Changing the prompt will help the model determine the frequency and types of memories created.
@@ -200,4 +223,4 @@ docker build -t mcp/memory -f src/memory/Dockerfile .
## License
-This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
\ No newline at end of file
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
diff --git a/src/memory/index.ts b/src/memory/index.ts
index 0117c920..62f7aeb6 100644
--- a/src/memory/index.ts
+++ b/src/memory/index.ts
@@ -10,10 +10,15 @@ import { promises as fs } from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
+// Define memory file path using environment variable with fallback
+const defaultMemoryPath = path.join(path.dirname(fileURLToPath(import.meta.url)), 'memory.json');
-// Define the path to the JSONL file, you can change this to your desired local path
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
-const MEMORY_FILE_PATH = path.join(__dirname, 'memory.json');
+// If MEMORY_FILE_PATH is just a filename, put it in the same directory as the script
+const MEMORY_FILE_PATH = process.env.MEMORY_FILE_PATH
+ ? path.isAbsolute(process.env.MEMORY_FILE_PATH)
+ ? process.env.MEMORY_FILE_PATH
+ : path.join(path.dirname(fileURLToPath(import.meta.url)), process.env.MEMORY_FILE_PATH)
+ : defaultMemoryPath;
// We are storing our memory using entities, relations, and observations in a graph structure
interface Entity {
diff --git a/src/memory/package.json b/src/memory/package.json
index 741244b1..b64cf3b6 100644
--- a/src/memory/package.json
+++ b/src/memory/package.json
@@ -1,6 +1,6 @@
{
"name": "@modelcontextprotocol/server-memory",
- "version": "0.6.2",
+ "version": "0.6.3",
"description": "MCP server for enabling memory for Claude through a knowledge graph",
"license": "MIT",
"author": "Anthropic, PBC (https://anthropic.com)",
diff --git a/src/redis/Dockerfile b/src/redis/Dockerfile
new file mode 100644
index 00000000..24a2bb87
--- /dev/null
+++ b/src/redis/Dockerfile
@@ -0,0 +1,23 @@
+FROM node:22.12-alpine as builder
+
+COPY src/redis /app
+
+WORKDIR /app
+
+RUN --mount=type=cache,target=/root/.npm npm install
+
+RUN npm run build
+
+FROM node:22-alpine AS release
+
+COPY --from=builder /app/build /app/build
+COPY --from=builder /app/package.json /app/package.json
+COPY --from=builder /app/package-lock.json /app/package-lock.json
+
+ENV NODE_ENV=production
+
+WORKDIR /app
+
+RUN npm ci --ignore-scripts --omit-dev
+
+ENTRYPOINT ["node", "build/index.js"]
\ No newline at end of file
diff --git a/src/redis/README.md b/src/redis/README.md
new file mode 100644
index 00000000..45123a58
--- /dev/null
+++ b/src/redis/README.md
@@ -0,0 +1,80 @@
+# Redis
+
+A Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
+
+## Components
+
+### Tools
+
+- **set**
+ - Set a Redis key-value pair with optional expiration
+ - Input:
+ - `key` (string): Redis key
+ - `value` (string): Value to store
+ - `expireSeconds` (number, optional): Expiration time in seconds
+
+- **get**
+ - Get value by key from Redis
+ - Input: `key` (string): Redis key to retrieve
+
+- **delete**
+ - Delete one or more keys from Redis
+ - Input: `key` (string | string[]): Key or array of keys to delete
+
+- **list**
+ - List Redis keys matching a pattern
+ - Input: `pattern` (string, optional): Pattern to match keys (default: *)
+
+## Usage with Claude Desktop
+
+To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your `claude_desktop_config.json`:
+
+### Docker
+
+* when running docker on macos, use host.docker.internal if the server is running on the host network (eg localhost)
+* Redis URL can be specified as an argument, defaults to "redis://localhost:6379"
+
+```json
+{
+ "mcpServers": {
+ "redis": {
+ "command": "docker",
+ "args": [
+ "run",
+ "-i",
+ "--rm",
+ "mcp/redis",
+ "redis://host.docker.internal:6379"]
+ }
+ }
+}
+```
+
+### NPX
+
+```json
+{
+ "mcpServers": {
+ "redis": {
+ "command": "npx",
+ "args": [
+ "-y",
+ "@modelcontextprotocol/server-redis",
+ "redis://localhost:6379"
+ ]
+ }
+ }
+}
+```
+
+## Building
+
+Docker:
+
+```sh
+docker build -t mcp/redis -f src/redis/Dockerfile .
+```
+
+## License
+
+This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
\ No newline at end of file
diff --git a/src/redis/package.json b/src/redis/package.json
new file mode 100644
index 00000000..fc7f6e64
--- /dev/null
+++ b/src/redis/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "redis",
+ "version": "1.0.0",
+ "main": "index.js",
+ "type": "module",
+ "bin": {
+ "redis": "./build/index.js"
+ },
+ "scripts": {
+ "build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
+ },
+ "files": [
+ "build"
+ ],
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "description": "",
+ "devDependencies": {
+ "@types/node": "^22.10.2",
+ "typescript": "^5.7.2"
+ },
+ "dependencies": {
+ "@modelcontextprotocol/sdk": "^0.4.0",
+ "@types/redis": "^4.0.10",
+ "redis": "^4.7.0"
+ }
+}
diff --git a/src/redis/src/index.ts b/src/redis/src/index.ts
new file mode 100644
index 00000000..2d88d981
--- /dev/null
+++ b/src/redis/src/index.ts
@@ -0,0 +1,236 @@
+import { Server } from "@modelcontextprotocol/sdk/server/index.js";
+import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
+import {
+ CallToolRequestSchema,
+ ListToolsRequestSchema,
+} from "@modelcontextprotocol/sdk/types.js";
+import { z } from "zod";
+import { createClient } from 'redis';
+
+// Get Redis URL from command line args or use default
+const REDIS_URL = process.argv[2] || "redis://localhost:6379";
+const redisClient = createClient({
+ url: REDIS_URL
+});
+
+// Define Zod schemas for validation
+const SetArgumentsSchema = z.object({
+ key: z.string(),
+ value: z.string(),
+ expireSeconds: z.number().optional(),
+});
+
+const GetArgumentsSchema = z.object({
+ key: z.string(),
+});
+
+const DeleteArgumentsSchema = z.object({
+ key: z.string().or(z.array(z.string())),
+});
+
+const ListArgumentsSchema = z.object({
+ pattern: z.string().default("*"),
+});
+
+// Create server instance
+const server = new Server(
+ {
+ name: "redis",
+ version: "1.0.0"
+ }
+);
+
+// List available tools
+server.setRequestHandler(ListToolsRequestSchema, async () => {
+ return {
+ tools: [
+ {
+ name: "set",
+ description: "Set a Redis key-value pair with optional expiration",
+ inputSchema: {
+ type: "object",
+ properties: {
+ key: {
+ type: "string",
+ description: "Redis key",
+ },
+ value: {
+ type: "string",
+ description: "Value to store",
+ },
+ expireSeconds: {
+ type: "number",
+ description: "Optional expiration time in seconds",
+ },
+ },
+ required: ["key", "value"],
+ },
+ },
+ {
+ name: "get",
+ description: "Get value by key from Redis",
+ inputSchema: {
+ type: "object",
+ properties: {
+ key: {
+ type: "string",
+ description: "Redis key to retrieve",
+ },
+ },
+ required: ["key"],
+ },
+ },
+ {
+ name: "delete",
+ description: "Delete one or more keys from Redis",
+ inputSchema: {
+ type: "object",
+ properties: {
+ key: {
+ oneOf: [
+ { type: "string" },
+ { type: "array", items: { type: "string" } }
+ ],
+ description: "Key or array of keys to delete",
+ },
+ },
+ required: ["key"],
+ },
+ },
+ {
+ name: "list",
+ description: "List Redis keys matching a pattern",
+ inputSchema: {
+ type: "object",
+ properties: {
+ pattern: {
+ type: "string",
+ description: "Pattern to match keys (default: *)",
+ },
+ },
+ },
+ },
+ ],
+ };
+});
+
+// Handle tool execution
+server.setRequestHandler(CallToolRequestSchema, async (request) => {
+ const { name, arguments: args } = request.params;
+
+ try {
+ if (name === "set") {
+ const { key, value, expireSeconds } = SetArgumentsSchema.parse(args);
+
+ if (expireSeconds) {
+ await redisClient.setEx(key, expireSeconds, value);
+ } else {
+ await redisClient.set(key, value);
+ }
+
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Successfully set key: ${key}`,
+ },
+ ],
+ };
+ } else if (name === "get") {
+ const { key } = GetArgumentsSchema.parse(args);
+ const value = await redisClient.get(key);
+
+ if (value === null) {
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Key not found: ${key}`,
+ },
+ ],
+ };
+ }
+
+ return {
+ content: [
+ {
+ type: "text",
+ text: `${value}`,
+ },
+ ],
+ };
+ } else if (name === "delete") {
+ const { key } = DeleteArgumentsSchema.parse(args);
+
+ if (Array.isArray(key)) {
+ await redisClient.del(key);
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Successfully deleted ${key.length} keys`,
+ },
+ ],
+ };
+ } else {
+ await redisClient.del(key);
+ return {
+ content: [
+ {
+ type: "text",
+ text: `Successfully deleted key: ${key}`,
+ },
+ ],
+ };
+ }
+ } else if (name === "list") {
+ const { pattern } = ListArgumentsSchema.parse(args);
+ const keys = await redisClient.keys(pattern);
+
+ return {
+ content: [
+ {
+ type: "text",
+ text: keys.length > 0
+ ? `Found keys:\n${keys.join('\n')}`
+ : "No keys found matching pattern",
+ },
+ ],
+ };
+ } else {
+ throw new Error(`Unknown tool: ${name}`);
+ }
+ } catch (error) {
+ if (error instanceof z.ZodError) {
+ throw new Error(
+ `Invalid arguments: ${error.errors
+ .map((e) => `${e.path.join(".")}: ${e.message}`)
+ .join(", ")}`
+ );
+ }
+ throw error;
+ }
+});
+
+// Start the server
+async function main() {
+ try {
+ // Connect to Redis
+ redisClient.on('error', (err: Error) => console.error('Redis Client Error', err));
+ await redisClient.connect();
+ console.error(`Connected to Redis successfully at ${REDIS_URL}`);
+
+ const transport = new StdioServerTransport();
+ await server.connect(transport);
+ console.error("Redis MCP Server running on stdio");
+ } catch (error) {
+ console.error("Error during startup:", error);
+ await redisClient.quit();
+ process.exit(1);
+ }
+}
+
+main().catch((error) => {
+ console.error("Fatal error in main():", error);
+ redisClient.quit().finally(() => process.exit(1));
+});
\ No newline at end of file
diff --git a/src/redis/tsconfig.json b/src/redis/tsconfig.json
new file mode 100644
index 00000000..efcd96e7
--- /dev/null
+++ b/src/redis/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "Node16",
+ "moduleResolution": "Node16",
+ "outDir": "./build",
+ "rootDir": "./src",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "include": ["src/**/*"],
+ "exclude": ["node_modules"]
+ }
+
\ No newline at end of file
diff --git a/src/sqlite/src/mcp_server_sqlite/server.py b/src/sqlite/src/mcp_server_sqlite/server.py
index 05cd117b..01452022 100644
--- a/src/sqlite/src/mcp_server_sqlite/server.py
+++ b/src/sqlite/src/mcp_server_sqlite/server.py
@@ -1,3 +1,5 @@
+import os
+import sys
import sqlite3
import logging
from contextlib import closing
@@ -9,6 +11,12 @@ import mcp.server.stdio
from pydantic import AnyUrl
from typing import Any
+# reconfigure UnicodeEncodeError prone default (i.e. windows-1252) to utf-8
+if sys.platform == "win32" and os.environ.get('PYTHONIOENCODING') is None:
+ sys.stdin.reconfigure(encoding="utf-8")
+ sys.stdout.reconfigure(encoding="utf-8")
+ sys.stderr.reconfigure(encoding="utf-8")
+
logger = logging.getLogger('mcp_sqlite_server')
logger.info("Starting MCP SQLite Server")