mirror of
https://github.com/modelcontextprotocol/servers.git
synced 2026-04-21 21:35:15 +02:00
Merge branch 'main' into foxy-contexts
This commit is contained in:
4
.github/workflows/typescript.yml
vendored
4
.github/workflows/typescript.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 22
|
||||||
cache: npm
|
cache: npm
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
@@ -64,7 +64,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 22
|
||||||
cache: npm
|
cache: npm
|
||||||
registry-url: "https://registry.npmjs.org"
|
registry-url: "https://registry.npmjs.org"
|
||||||
|
|
||||||
|
|||||||
28
README.md
28
README.md
@@ -44,12 +44,16 @@ Official integrations are maintained by companies building production ready MCP
|
|||||||
- <img height="12" width="12" src="https://e2b.dev/favicon.ico" alt="E2B Logo" /> **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
|
- <img height="12" width="12" src="https://e2b.dev/favicon.ico" alt="E2B Logo" /> **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
|
||||||
- <img height="12" width="12" src="https://exa.ai/images/favicon-32x32.png" alt="Exa Logo" /> **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
|
- <img height="12" width="12" src="https://exa.ai/images/favicon-32x32.png" alt="Exa Logo" /> **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
|
||||||
- <img height="12" width="12" src="https://cdn.simpleicons.org/jetbrains" /> **[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** – Work on your code with JetBrains IDEs
|
- <img height="12" width="12" src="https://cdn.simpleicons.org/jetbrains" /> **[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** – Work on your code with JetBrains IDEs
|
||||||
|
- **[Needle](https://github.com/JANHMS/needle-mcp)** - Production-ready RAG out of the box to search and retrieve data from your own documents.
|
||||||
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
|
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
|
||||||
- <img height="12" width="12" src="https://neo4j.com/favicon.ico" alt="Neo4j Logo" /> **[Neo4j](https://github.com/neo4j-contrib/mcp-neo4j/)** - Neo4j graph database server (schema + read/write-cypher) and separate graph database backed memory
|
- <img height="12" width="12" src="https://neo4j.com/favicon.ico" alt="Neo4j Logo" /> **[Neo4j](https://github.com/neo4j-contrib/mcp-neo4j/)** - Neo4j graph database server (schema + read/write-cypher) and separate graph database backed memory
|
||||||
- <img height="12" width="12" src="https://www.tinybird.co/favicon.ico" alt="Tinybird Logo" /> **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
|
- <img height="12" width="12" src="https://www.tinybird.co/favicon.ico" alt="Tinybird Logo" /> **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
|
||||||
- <img height="12" width="12" src="https://pics.fatwang2.com/56912e614b35093426c515860f9f2234.svg" /> [Search1API](https://github.com/fatwang2/search1api-mcp) - One API for Search, Crawling, and Sitemaps
|
- <img height="12" width="12" src="https://pics.fatwang2.com/56912e614b35093426c515860f9f2234.svg" /> [Search1API](https://github.com/fatwang2/search1api-mcp) - One API for Search, Crawling, and Sitemaps
|
||||||
- <img height="12" width="12" src="https://qdrant.tech/img/brand-resources-logos/logomark.svg" /> **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
|
- <img height="12" width="12" src="https://qdrant.tech/img/brand-resources-logos/logomark.svg" /> **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
|
||||||
- <img height="12" width="12" src="https://metoro.io/static/images/logos/Metoro.svg" /> **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro
|
- <img height="12" width="12" src="https://metoro.io/static/images/logos/Metoro.svg" /> **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro
|
||||||
|
- <img height="12" width ="12" src="https://www.meilisearch.com/favicon.ico" alt="Meilisearch Logo" /> **[Meilisearch](https://github.com/meilisearch/meilisearch-mcp)** - Interact & query with Meilisearch (Full-text & semantic search API)
|
||||||
|
- <img height="12" width ="12" src="https://www.motherduck.com/favicon.ico" alt="MotherDuck Logo" /> **[MotherDuck](https://github.com/motherduckdb/mcp-server-motherduck)** - Query and analyze data with MotherDuck and local DuckDB
|
||||||
|
- <img height="12" width ="12" src="https://kagi.com/favicon.ico" alt="Kagi Logo" /> **[Kagi Search](https://github.com/kagisearch/kagimcp)** - Search the web using Kagi's search API
|
||||||
|
|
||||||
### 🌎 Community Servers
|
### 🌎 Community Servers
|
||||||
|
|
||||||
@@ -85,7 +89,8 @@ A growing set of community-developed and maintained servers demonstrates various
|
|||||||
- **[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.
|
- **[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.
|
||||||
- **[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.
|
- **[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.
|
||||||
- **[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.
|
- **[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.
|
||||||
- **[ChatSum](https://github.com/chatmcp/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
|
- **[ChatSum](https://github.com/mcpso/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
|
||||||
|
- **[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!
|
||||||
- **[Rememberizer AI](https://github.com/skydeckai/mcp-server-rememberizer)** - An MCP server designed for interacting with the Rememberizer data source, facilitating enhanced knowledge retrieval.
|
- **[Rememberizer AI](https://github.com/skydeckai/mcp-server-rememberizer)** - An MCP server designed for interacting with the Rememberizer data source, facilitating enhanced knowledge retrieval.
|
||||||
- **[FlightRadar24](https://github.com/sunsetcoder/flightradar24-mcp-server)** - A Claude Desktop MCP server that helps you track flights in real-time using Flightradar24 data.
|
- **[FlightRadar24](https://github.com/sunsetcoder/flightradar24-mcp-server)** - A Claude Desktop MCP server that helps you track flights in real-time using Flightradar24 data.
|
||||||
- **[X (Twitter)](https://github.com/vidhupv/x-mcp)** (by vidhupv) - Create, manage and publish X/Twitter posts directly through Claude chat.
|
- **[X (Twitter)](https://github.com/vidhupv/x-mcp)** (by vidhupv) - Create, manage and publish X/Twitter posts directly through Claude chat.
|
||||||
@@ -93,6 +98,7 @@ A growing set of community-developed and maintained servers demonstrates various
|
|||||||
- **[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.
|
- **[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.
|
||||||
- **[XMind](https://github.com/apeyroux/mcp-xmind)** - Read and search through your XMind directory containing XMind files.
|
- **[XMind](https://github.com/apeyroux/mcp-xmind)** - Read and search through your XMind directory containing XMind files.
|
||||||
- **[oatpp-mcp](https://github.com/oatpp/oatpp-mcp)** - C++ MCP integration for Oat++. Use [Oat++](https://oatpp.io) to build MCP servers.
|
- **[oatpp-mcp](https://github.com/oatpp/oatpp-mcp)** - C++ MCP integration for Oat++. Use [Oat++](https://oatpp.io) to build MCP servers.
|
||||||
|
- **[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.
|
- **[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.
|
||||||
- **[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.
|
- **[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.
|
||||||
- **[cognee-mcp](https://github.com/topoteretes/cognee-mcp-server)** - GraphRAG memory server with customizable ingestion, data processing and search
|
- **[cognee-mcp](https://github.com/topoteretes/cognee-mcp-server)** - GraphRAG memory server with customizable ingestion, data processing and search
|
||||||
@@ -103,7 +109,24 @@ A growing set of community-developed and maintained servers demonstrates various
|
|||||||
- **[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.
|
- **[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.
|
||||||
- **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB.
|
- **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB.
|
||||||
- **[Airtable](https://github.com/felores/airtable-mcp)** - Airtable Model Context Protocol Server.
|
- **[Airtable](https://github.com/felores/airtable-mcp)** - Airtable Model Context Protocol Server.
|
||||||
|
- **[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.
|
||||||
|
- **[Google Tasks](https://github.com/zcaceres/gtasks-mcp)** - Google Tasks API Model Context Protocol Server.
|
||||||
- **[Fetch](https://github.com/zcaceres/fetch-mcp)** - A server that flexibly fetches HTML, JSON, Markdown, or plaintext
|
- **[Fetch](https://github.com/zcaceres/fetch-mcp)** - A server that flexibly fetches HTML, JSON, Markdown, or plaintext
|
||||||
|
- **[Glean](https://github.com/longyi1207/glean-mcp-server)** - A server that uses Glean API to search and chat.
|
||||||
|
- **[AWS S3](https://github.com/aws-samples/sample-mcp-server-s3)** - A sample MCP server for AWS S3 that flexibly fetches objects from S3 such as PDF documents
|
||||||
|
- **[Elasticsearch](https://github.com/cr7258/elasticsearch-mcp-server)** - MCP server implementation that provides Elasticsearch interaction.
|
||||||
|
- **[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.
|
||||||
|
- **[Anki](https://github.com/scorzeth/anki-mcp-server)** - An MCP server for interacting with your [Anki](https://apps.ankiweb.net) decks and cards.
|
||||||
|
- **[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.
|
||||||
|
- **[Scholarly](https://github.com/adityak74/mcp-scholarly)** - A MCP server to search for scholarly and academic articles.
|
||||||
|
- **[Chroma](https://github.com/privetin/chroma)** - Vector database server for semantic document search and metadata filtering, built on Chroma
|
||||||
|
|
||||||
|
## 📚 Frameworks
|
||||||
|
|
||||||
|
These are high-level frameworks that make it easier to build MCP servers.
|
||||||
|
|
||||||
|
* [FastMCP](https://github.com/punkpeye/fastmcp) (TypeScript)
|
||||||
|
* [EasyMCP](https://github.com/zcaceres/easy-mcp/) (TypeScript)
|
||||||
|
|
||||||
## 📚 Resources
|
## 📚 Resources
|
||||||
|
|
||||||
@@ -112,9 +135,11 @@ Additional resources on MCP.
|
|||||||
- **[Awesome MCP Servers by punkpeye](https://github.com/punkpeye/awesome-mcp-servers)** (**[website](https://glama.ai/mcp/servers)**) - A curated list of MCP servers by **[Frank Fiegel](https://github.com/punkpeye)**
|
- **[Awesome MCP Servers by punkpeye](https://github.com/punkpeye/awesome-mcp-servers)** (**[website](https://glama.ai/mcp/servers)**) - A curated list of MCP servers by **[Frank Fiegel](https://github.com/punkpeye)**
|
||||||
- **[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)**
|
- **[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)**
|
||||||
- **[Awesome MCP Servers by appcypher](https://github.com/appcypher/awesome-mcp-servers)** - A curated list of MCP servers by **[Stephen Akinyemi](https://github.com/appcypher)**
|
- **[Awesome MCP Servers by appcypher](https://github.com/appcypher/awesome-mcp-servers)** - A curated list of MCP servers by **[Stephen Akinyemi](https://github.com/appcypher)**
|
||||||
|
- **[Awesome Crypto MCP Servers by badkk](https://github.com/badkk/awesome-crypto-mcp-servers)** - A curated list of MCP servers by **[Luke Fan](https://github.com/badkk)**
|
||||||
- **[Open-Sourced MCP Servers Directory](https://github.com/chatmcp/mcp-directory)** - A curated list of MCP servers by **[mcpso](https://mcp.so)**
|
- **[Open-Sourced MCP Servers Directory](https://github.com/chatmcp/mcp-directory)** - A curated list of MCP servers by **[mcpso](https://mcp.so)**
|
||||||
- **[Discord Server](https://glama.ai/mcp/discord)** – A community discord server dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
|
- **[Discord Server](https://glama.ai/mcp/discord)** – A community discord server 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)**
|
- **[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)**
|
||||||
|
- **[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)**
|
||||||
- **[mcp-get](https://mcp-get.com)** - Command line tool for installing and managing MCP servers by **[Michael Latman](https://github.com/michaellatman)**
|
- **[mcp-get](https://mcp-get.com)** - Command line tool for installing and managing MCP servers by **[Michael Latman](https://github.com/michaellatman)**
|
||||||
- **[mcp-cli](https://github.com/wong2/mcp-cli)** - A CLI inspector for the Model Context Protocol by **[wong2](https://github.com/wong2)**
|
- **[mcp-cli](https://github.com/wong2/mcp-cli)** - A CLI inspector for the Model Context Protocol by **[wong2](https://github.com/wong2)**
|
||||||
- **[r/mcp](https://www.reddit.com/r/mcp)** – A Reddit community dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
|
- **[r/mcp](https://www.reddit.com/r/mcp)** – A Reddit community dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
|
||||||
@@ -122,6 +147,7 @@ Additional resources on MCP.
|
|||||||
- **[mcp-manager](https://github.com/zueai/mcp-manager)** - Simple Web UI to install and manage MCP servers for Claude Desktop by **[Zue](https://github.com/zueai)**
|
- **[mcp-manager](https://github.com/zueai/mcp-manager)** - Simple Web UI to install and manage MCP servers for Claude Desktop by **[Zue](https://github.com/zueai)**
|
||||||
- **[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)**
|
- **[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)**
|
||||||
- **[Foxy Contexts](https://github.com/strowk/foxy-contexts)** – A library to build MCP servers in Golang by **[strowk](https://github.com/strowk)**
|
- **[Foxy Contexts](https://github.com/strowk/foxy-contexts)** – A library to build MCP servers in Golang by **[strowk](https://github.com/strowk)**
|
||||||
|
- **[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)**
|
||||||
|
|
||||||
## 🚀 Getting Started
|
## 🚀 Getting Started
|
||||||
|
|
||||||
|
|||||||
118
package-lock.json
generated
118
package-lock.json
generated
@@ -1573,11 +1573,12 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "22.9.0",
|
"version": "22.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz",
|
||||||
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
|
"integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.19.8"
|
"undici-types": "~6.20.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node-fetch": {
|
"node_modules/@types/node-fetch": {
|
||||||
@@ -4774,9 +4775,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "6.19.8",
|
"version": "6.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
|
||||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
|
||||||
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/universalify": {
|
"node_modules/universalify": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
@@ -5015,20 +5017,11 @@
|
|||||||
"mcp-server-aws-kb-retrieval": "dist/index.js"
|
"mcp-server-aws-kb-retrieval": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/aws-kb-retrieval-server/node_modules/@types/node": {
|
|
||||||
"version": "20.17.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
|
|
||||||
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/brave-search": {
|
"src/brave-search": {
|
||||||
"name": "@modelcontextprotocol/server-brave-search",
|
"name": "@modelcontextprotocol/server-brave-search",
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
@@ -5040,7 +5033,7 @@
|
|||||||
"mcp-server-brave-search": "dist/index.js"
|
"mcp-server-brave-search": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
@@ -5055,16 +5048,6 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/brave-search/node_modules/@types/node": {
|
|
||||||
"version": "20.17.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz",
|
|
||||||
"integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/duckduckgo": {
|
"src/duckduckgo": {
|
||||||
"name": "@modelcontextprotocol/server-duckduckgo",
|
"name": "@modelcontextprotocol/server-duckduckgo",
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
@@ -5080,7 +5063,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jsdom": "^21.1.6",
|
"@types/jsdom": "^21.1.6",
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
@@ -5099,20 +5082,11 @@
|
|||||||
"mcp-server-everart": "dist/index.js"
|
"mcp-server-everart": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/everart/node_modules/@types/node": {
|
|
||||||
"version": "20.17.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
|
|
||||||
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/everart/node_modules/data-uri-to-buffer": {
|
"src/everart/node_modules/data-uri-to-buffer": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
||||||
@@ -5201,7 +5175,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/diff": "^5.0.9",
|
"@types/diff": "^5.0.9",
|
||||||
"@types/minimatch": "^5.1.2",
|
"@types/minimatch": "^5.1.2",
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
@@ -5216,16 +5190,6 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/filesystem/node_modules/@types/node": {
|
|
||||||
"version": "20.17.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz",
|
|
||||||
"integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/filesystem/node_modules/brace-expansion": {
|
"src/filesystem/node_modules/brace-expansion": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||||
@@ -5298,7 +5262,7 @@
|
|||||||
"mcp-server-gdrive": "dist/index.js"
|
"mcp-server-gdrive": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
@@ -5313,22 +5277,13 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/gdrive/node_modules/@types/node": {
|
|
||||||
"version": "22.9.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
|
|
||||||
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/github": {
|
"src/github": {
|
||||||
"name": "@modelcontextprotocol/server-github",
|
"name": "@modelcontextprotocol/server-github",
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "1.0.1",
|
"@modelcontextprotocol/sdk": "1.0.1",
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"@types/node-fetch": "^2.6.12",
|
"@types/node-fetch": "^2.6.12",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
"zod": "^3.22.4",
|
"zod": "^3.22.4",
|
||||||
@@ -5352,14 +5307,6 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/github/node_modules/@types/node": {
|
|
||||||
"version": "20.17.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
|
|
||||||
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/github/node_modules/data-uri-to-buffer": {
|
"src/github/node_modules/data-uri-to-buffer": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
||||||
@@ -5501,7 +5448,7 @@
|
|||||||
"mcp-server-memory": "dist/index.js"
|
"mcp-server-memory": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
@@ -5516,15 +5463,6 @@
|
|||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/memory/node_modules/@types/node": {
|
|
||||||
"version": "22.9.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
|
|
||||||
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/postgres": {
|
"src/postgres": {
|
||||||
"name": "@modelcontextprotocol/server-postgres",
|
"name": "@modelcontextprotocol/server-postgres",
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
@@ -5591,21 +5529,12 @@
|
|||||||
"mcp-server-sequential-thinking": "dist/index.js"
|
"mcp-server-sequential-thinking": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"@types/yargs": "^17.0.32",
|
"@types/yargs": "^17.0.32",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"src/sequentialthinking/node_modules/@types/node": {
|
|
||||||
"version": "20.17.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
|
|
||||||
"integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"src/slack": {
|
"src/slack": {
|
||||||
"name": "@modelcontextprotocol/server-slack",
|
"name": "@modelcontextprotocol/server-slack",
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
@@ -5617,7 +5546,7 @@
|
|||||||
"mcp-server-slack": "dist/index.js"
|
"mcp-server-slack": "dist/index.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
@@ -5631,15 +5560,6 @@
|
|||||||
"raw-body": "^3.0.0",
|
"raw-body": "^3.0.0",
|
||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"src/slack/node_modules/@types/node": {
|
|
||||||
"version": "22.9.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
|
|
||||||
"integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"undici-types": "~6.19.8"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/aws-kb-retrieval-server/Dockerfile
Normal file
22
src/aws-kb-retrieval-server/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/aws-kb-retrieval-server /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
@@ -27,6 +27,24 @@ An MCP server implementation for retrieving information from the AWS Knowledge B
|
|||||||
|
|
||||||
Add this to your `claude_desktop_config.json`:
|
Add this to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"aws-kb-retrieval": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [ "run", "-i", "--rm", "-e", "AWS_ACCESS_KEY_ID", "-e", "AWS_SECRET_ACCESS_KEY", "-e", "AWS_REGION", "mcp/aws-kb-retrieval-server" ],
|
||||||
|
"env": {
|
||||||
|
"AWS_ACCESS_KEY_ID": "YOUR_ACCESS_KEY_HERE",
|
||||||
|
"AWS_SECRET_ACCESS_KEY": "YOUR_SECRET_ACCESS_KEY_HERE",
|
||||||
|
"AWS_REGION": "YOUR_AWS_REGION_HERE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -46,6 +64,14 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Docker:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t mcp/aws-kb-retrieval -f src/aws-kb-retrieval-server/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
"@aws-sdk/client-bedrock-agent-runtime": "^3.0.0"
|
"@aws-sdk/client-bedrock-agent-runtime": "^3.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
23
src/brave-search/Dockerfile
Normal file
23
src/brave-search/Dockerfile
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
|
||||||
|
COPY src/brave-search /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
@@ -36,6 +36,31 @@ An MCP server implementation that integrates the Brave Search API, providing bot
|
|||||||
### Usage with Claude Desktop
|
### Usage with Claude Desktop
|
||||||
Add this to your `claude_desktop_config.json`:
|
Add this to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"brave-search": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"-e",
|
||||||
|
"BRAVE_API_KEY",
|
||||||
|
"mcp/brave-search"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -53,6 +78,15 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/brave-search:latest -f src/brave-search/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"@modelcontextprotocol/sdk": "1.0.1"
|
"@modelcontextprotocol/sdk": "1.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.10.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
|
|||||||
24
src/everart/Dockerfile
Normal file
24
src/everart/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/everart /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
|
|
||||||
|
CMD ["node", "dist/index.js"]
|
||||||
@@ -10,6 +10,24 @@ export EVERART_API_KEY=your_key_here
|
|||||||
|
|
||||||
## Config
|
## Config
|
||||||
Add to Claude Desktop config:
|
Add to Claude Desktop config:
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"everart": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "-e", "EVERART_API_KEY", "mcp/everart"],
|
||||||
|
"env": {
|
||||||
|
"EVERART_API_KEY": "your_key_here"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -71,3 +89,9 @@ Generation details:
|
|||||||
|
|
||||||
You can also click the URL above to view the image again.
|
You can also click the URL above to view the image again.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Building w/ Docker
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t mcp/everart -f src/everart/Dockerfile .
|
||||||
|
```
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
"open": "^9.1.0"
|
"open": "^9.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/everything/Dockerfile
Normal file
22
src/everything/Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/everything /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
CMD ["node", "dist/index.js"]
|
||||||
@@ -411,7 +411,7 @@ export const createServer = () => {
|
|||||||
maxTokens,
|
maxTokens,
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: `LLM sampling result: ${result}` }],
|
content: [{ type: "text", text: `LLM sampling result: ${result.content.text}` }],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
36
src/fetch/Dockerfile
Normal file
36
src/fetch/Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Use a Python image with uv pre-installed
|
||||||
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
||||||
|
|
||||||
|
# Install the project into `/app`
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Enable bytecode compilation
|
||||||
|
ENV UV_COMPILE_BYTECODE=1
|
||||||
|
|
||||||
|
# Copy from the cache instead of linking since it's a mounted volume
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
# Install the project's dependencies using the lockfile and settings
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
|
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||||
|
|
||||||
|
# Then, add the rest of the project source code and install it
|
||||||
|
# Installing separately from its dependencies allows optimal layer caching
|
||||||
|
ADD . /app
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
uv sync --frozen --no-dev --no-editable
|
||||||
|
|
||||||
|
FROM python:3.12-slim-bookworm
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=uv /root/.local /root/.local
|
||||||
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
||||||
|
|
||||||
|
# Place executables in the environment at the front of the path
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# when running the container, add --db-path and a bind mount to the host's db file
|
||||||
|
ENTRYPOINT ["mcp-server-fetch"]
|
||||||
@@ -61,6 +61,19 @@ Add to your Claude settings:
|
|||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Using docker</summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
"mcpServers": {
|
||||||
|
"fetch": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "mcp/fetch"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Using pip installation</summary>
|
<summary>Using pip installation</summary>
|
||||||
|
|
||||||
|
|||||||
@@ -233,9 +233,21 @@ Although originally you did not have internet access, and were advised to refuse
|
|||||||
content, prefix = await fetch_url(
|
content, prefix = await fetch_url(
|
||||||
url, user_agent_autonomous, force_raw=args.raw
|
url, user_agent_autonomous, force_raw=args.raw
|
||||||
)
|
)
|
||||||
if len(content) > args.max_length:
|
original_length = len(content)
|
||||||
content = content[args.start_index : args.start_index + args.max_length]
|
if args.start_index >= original_length:
|
||||||
content += f"\n\n<error>Content truncated. Call the fetch tool with a start_index of {args.start_index + args.max_length} to get more content.</error>"
|
content = "<error>No more content available.</error>"
|
||||||
|
else:
|
||||||
|
truncated_content = content[args.start_index : args.start_index + args.max_length]
|
||||||
|
if not truncated_content:
|
||||||
|
content = "<error>No more content available.</error>"
|
||||||
|
else:
|
||||||
|
content = truncated_content
|
||||||
|
actual_content_length = len(truncated_content)
|
||||||
|
remaining_content = original_length - (args.start_index + actual_content_length)
|
||||||
|
# Only add the prompt to continue fetching if there is still remaining content
|
||||||
|
if actual_content_length == args.max_length and remaining_content > 0:
|
||||||
|
next_start = args.start_index + actual_content_length
|
||||||
|
content += f"\n\n<error>Content truncated. Call the fetch tool with a start_index of {next_start} to get more content.</error>"
|
||||||
return [TextContent(type="text", text=f"{prefix}Contents of {url}:\n{content}")]
|
return [TextContent(type="text", text=f"{prefix}Contents of {url}:\n{content}")]
|
||||||
|
|
||||||
@server.get_prompt()
|
@server.get_prompt()
|
||||||
|
|||||||
25
src/filesystem/Dockerfile
Normal file
25
src/filesystem/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY src/filesystem /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "/app/dist/index.js"]
|
||||||
@@ -105,6 +105,34 @@ Node.js server implementing Model Context Protocol (MCP) for filesystem operatio
|
|||||||
|
|
||||||
## Usage with Claude Desktop
|
## Usage with Claude Desktop
|
||||||
Add this to your `claude_desktop_config.json`:
|
Add this to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
Note: you can provide sandboxed directories to the server by mounting them to `/projects`. Adding the `ro` flag will make the directory readonly by the server.
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
Note: all directories must be mounted to `/projects` by default.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"filesystem": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
|
||||||
|
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
|
||||||
|
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
|
||||||
|
"mcp/filesystem",
|
||||||
|
"/projects",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -121,6 +149,14 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/filesystem -f src/filesystem/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/diff": "^5.0.9",
|
"@types/diff": "^5.0.9",
|
||||||
"@types/minimatch": "^5.1.2",
|
"@types/minimatch": "^5.1.2",
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
29
src/gdrive/Dockerfile
Normal file
29
src/gdrive/Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/gdrive /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
COPY src/gdrive/replace_open.sh /replace_open.sh
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
RUN sh /replace_open.sh
|
||||||
|
|
||||||
|
RUN rm /replace_open.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
@@ -49,6 +49,33 @@ To authenticate and save credentials:
|
|||||||
|
|
||||||
To integrate this server with the desktop app, add the following to your app's server configuration:
|
To integrate this server with the desktop app, add the following to your app's server configuration:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
Authentication:
|
||||||
|
|
||||||
|
Assuming you have completed setting up the OAuth application on Google Cloud, you can now auth the server with the following command, replacing `/path/to/gcp-oauth.keys.json` with the path to your OAuth keys file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -i --rm --mount type=bind,source=/path/to/gcp-oauth.keys.json,target=/gcp-oauth.keys.json -v mcp-gdrive:/gdrive-server -e GDRIVE_OAUTH_PATH=/gcp-oauth.keys.json -e "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json" -p 3000:3000 mcp/gdrive auth
|
||||||
|
```
|
||||||
|
|
||||||
|
The command will print the URL to open in your browser. Open this URL in your browser and complete the authentication process. The credentials will be saved in the `mcp-gdrive` volume.
|
||||||
|
|
||||||
|
Once authenticated, you can use the server in your app's server configuration:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"gdrive": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "-v", "mcp-gdrive:/gdrive-server", "-e", "GDRIVE_CREDENTIALS_PATH=/gdrive-server/credentials.json", "mcp/gdrive"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
|
|||||||
@@ -152,13 +152,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|||||||
const userQuery = request.params.arguments?.query as string;
|
const userQuery = request.params.arguments?.query as string;
|
||||||
const escapedQuery = userQuery.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
const escapedQuery = userQuery.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
||||||
const formattedQuery = `fullText contains '${escapedQuery}'`;
|
const formattedQuery = `fullText contains '${escapedQuery}'`;
|
||||||
|
|
||||||
const res = await drive.files.list({
|
const res = await drive.files.list({
|
||||||
q: formattedQuery,
|
q: formattedQuery,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
fields: "files(id, name, mimeType, modifiedTime, size)",
|
fields: "files(id, name, mimeType, modifiedTime, size)",
|
||||||
});
|
});
|
||||||
|
|
||||||
const fileList = res.data.files
|
const fileList = res.data.files
|
||||||
?.map((file: any) => `${file.name} (${file.mimeType})`)
|
?.map((file: any) => `${file.name} (${file.mimeType})`)
|
||||||
.join("\n");
|
.join("\n");
|
||||||
@@ -175,7 +175,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|||||||
throw new Error("Tool not found");
|
throw new Error("Tool not found");
|
||||||
});
|
});
|
||||||
|
|
||||||
const credentialsPath = path.join(
|
const credentialsPath = process.env.GDRIVE_CREDENTIALS_PATH || path.join(
|
||||||
path.dirname(new URL(import.meta.url).pathname),
|
path.dirname(new URL(import.meta.url).pathname),
|
||||||
"../../../.gdrive-server-credentials.json",
|
"../../../.gdrive-server-credentials.json",
|
||||||
);
|
);
|
||||||
@@ -183,7 +183,7 @@ const credentialsPath = path.join(
|
|||||||
async function authenticateAndSaveCredentials() {
|
async function authenticateAndSaveCredentials() {
|
||||||
console.log("Launching auth flow…");
|
console.log("Launching auth flow…");
|
||||||
const auth = await authenticate({
|
const auth = await authenticate({
|
||||||
keyfilePath: path.join(
|
keyfilePath: process.env.GDRIVE_OAUTH_PATH || path.join(
|
||||||
path.dirname(new URL(import.meta.url).pathname),
|
path.dirname(new URL(import.meta.url).pathname),
|
||||||
"../../../gcp-oauth.keys.json",
|
"../../../gcp-oauth.keys.json",
|
||||||
),
|
),
|
||||||
@@ -206,7 +206,7 @@ async function loadCredentialsAndRunServer() {
|
|||||||
auth.setCredentials(credentials);
|
auth.setCredentials(credentials);
|
||||||
google.options({ auth });
|
google.options({ auth });
|
||||||
|
|
||||||
console.log("Credentials loaded. Starting server.");
|
console.error("Credentials loaded. Starting server.");
|
||||||
const transport = new StdioServerTransport();
|
const transport = new StdioServerTransport();
|
||||||
await server.connect(transport);
|
await server.connect(transport);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
"googleapis": "^144.0.0"
|
"googleapis": "^144.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
|
|||||||
5
src/gdrive/replace_open.sh
Normal file
5
src/gdrive/replace_open.sh
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Basic script to replace opn(authorizeUrl, { wait: false }).then(cp => cp.unref()); with process.stdout.write(`Open this URL in your browser: ${authorizeUrl}`);
|
||||||
|
|
||||||
|
sed -i 's/opn(authorizeUrl, { wait: false }).then(cp => cp.unref());/process.stderr.write(`Open this URL in your browser: ${authorizeUrl}\n`);/' node_modules/@google-cloud/local-auth/build/src/index.js
|
||||||
38
src/git/Dockerfile
Normal file
38
src/git/Dockerfile
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Use a Python image with uv pre-installed
|
||||||
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
||||||
|
|
||||||
|
# Install the project into `/app`
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Enable bytecode compilation
|
||||||
|
ENV UV_COMPILE_BYTECODE=1
|
||||||
|
|
||||||
|
# Copy from the cache instead of linking since it's a mounted volume
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
# Install the project's dependencies using the lockfile and settings
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
|
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||||
|
|
||||||
|
# Then, add the rest of the project source code and install it
|
||||||
|
# Installing separately from its dependencies allows optimal layer caching
|
||||||
|
ADD . /app
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
uv sync --frozen --no-dev --no-editable
|
||||||
|
|
||||||
|
FROM python:3.12-slim-bookworm
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=uv /root/.local /root/.local
|
||||||
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
||||||
|
|
||||||
|
# Place executables in the environment at the front of the path
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# when running the container, add --db-path and a bind mount to the host's db file
|
||||||
|
ENTRYPOINT ["mcp-server-git"]
|
||||||
@@ -120,6 +120,21 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Using docker</summary>
|
||||||
|
|
||||||
|
* Note: replace '/Users/username' with the a path that you want to be accessible by this tool
|
||||||
|
|
||||||
|
```json
|
||||||
|
"mcpServers": {
|
||||||
|
"git": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Using pip installation</summary>
|
<summary>Using pip installation</summary>
|
||||||
|
|
||||||
@@ -193,18 +208,52 @@ If you are doing local development, there are two ways to test your changes:
|
|||||||
|
|
||||||
2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
|
2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"git": {
|
{
|
||||||
"command": "uv",
|
"mcpServers": {
|
||||||
"args": [
|
"git": {
|
||||||
"--directory",
|
"command": "docker",
|
||||||
"/<path to mcp-servers>/mcp-servers/src/git",
|
"args": [
|
||||||
"run",
|
"run",
|
||||||
"mcp-server-git"
|
"--rm",
|
||||||
]
|
"-i",
|
||||||
|
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
|
||||||
|
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
|
||||||
|
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
|
||||||
|
"mcp/git"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### UVX
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"git": {
|
||||||
|
"command": "uv",
|
||||||
|
"args": [
|
||||||
|
"--directory",
|
||||||
|
"/<path to mcp-servers>/mcp-servers/src/git",
|
||||||
|
"run",
|
||||||
|
"mcp-server-git"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd src/git
|
||||||
|
docker build -t mcp/git .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
23
src/github/Dockerfile
Normal file
23
src/github/Dockerfile
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
|
||||||
|
COPY src/github /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
FROM node:22.12-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -225,14 +225,19 @@ For detailed search syntax, see [GitHub's searching documentation](https://docs.
|
|||||||
### Usage with Claude Desktop
|
### Usage with Claude Desktop
|
||||||
To use this with Claude Desktop, add the following to your `claude_desktop_config.json`:
|
To use this with Claude Desktop, add the following to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"github": {
|
"github": {
|
||||||
"command": "npx",
|
"command": "docker",
|
||||||
"args": [
|
"args": [
|
||||||
"-y",
|
"run",
|
||||||
"@modelcontextprotocol/server-github"
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"-e",
|
||||||
|
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
||||||
|
"mcp/github"
|
||||||
],
|
],
|
||||||
"env": {
|
"env": {
|
||||||
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
|
||||||
@@ -242,6 +247,33 @@ To use this with Claude Desktop, add the following to your `claude_desktop_confi
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"github": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"-y",
|
||||||
|
"@modelcontextprotocol/server-github"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/github -f src/github/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modelcontextprotocol/sdk": "1.0.1",
|
"@modelcontextprotocol/sdk": "1.0.1",
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"@types/node-fetch": "^2.6.12",
|
"@types/node-fetch": "^2.6.12",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
"zod": "^3.22.4",
|
"zod": "^3.22.4",
|
||||||
|
|||||||
24
src/gitlab/Dockerfile
Normal file
24
src/gitlab/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/gitlab /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22.12-alpine AS release
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
COPY --from=builder /app/package.json /app/package.json
|
||||||
|
COPY --from=builder /app/package-lock.json /app/package-lock.json
|
||||||
|
|
||||||
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
RUN npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
@@ -109,19 +109,57 @@ MCP Server for the GitLab API, enabling project management, file operations, and
|
|||||||
### Usage with Claude Desktop
|
### Usage with Claude Desktop
|
||||||
Add the following to your `claude_desktop_config.json`:
|
Add the following to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"gitlab": {
|
"mcpServers": {
|
||||||
"command": "npx",
|
"gitlab": {
|
||||||
"args": ["-y", "@modelcontextprotocol/server-gitlab"],
|
"command": "docker",
|
||||||
"env": {
|
"args": [
|
||||||
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
|
"run",
|
||||||
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
|
"-e",
|
||||||
|
"GITLAB_PERSONAL_ACCESS_TOKEN",
|
||||||
|
"-e",
|
||||||
|
"GITLAB_API_URL",
|
||||||
|
"mcp/gitlab"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
|
||||||
|
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"gitlab": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"-y",
|
||||||
|
"@modelcontextprotocol/server-gitlab"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
|
||||||
|
"GITLAB_API_URL": "https://gitlab.com/api/v4" // Optional, for self-hosted instances
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
- `GITLAB_PERSONAL_ACCESS_TOKEN`: Your GitLab personal access token (required)
|
- `GITLAB_PERSONAL_ACCESS_TOKEN`: Your GitLab personal access token (required)
|
||||||
|
|||||||
25
src/google-maps/Dockerfile
Normal file
25
src/google-maps/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
|
||||||
|
COPY src/google-maps /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -59,6 +59,31 @@ Get a Google Maps API key by following the instructions [here](https://developer
|
|||||||
|
|
||||||
Add the following to your `claude_desktop_config.json`:
|
Add the following to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"google-maps": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"-e",
|
||||||
|
"GOOGLE_MAPS_API_KEY",
|
||||||
|
"mcp/google-maps"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"GOOGLE_MAPS_API_KEY": "<YOUR_API_KEY>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -76,6 +101,14 @@ Add the following to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t vonwig/google-maps:mcp -f src/google-maps/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
24
src/memory/Dockerfile
Normal file
24
src/memory/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/memory /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -127,7 +127,23 @@ Example:
|
|||||||
# Usage with Claude Desktop
|
# Usage with Claude Desktop
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
|
|
||||||
Add this to your claude_desktop_config.json:
|
Add this to your claude_desktop_config.json:
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"memory": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "mcp/memory"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### NPX
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -174,6 +190,14 @@ Follow these steps for each interaction:
|
|||||||
b) Store facts about them as observations
|
b) Store facts about them as observations
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Docker:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t mcp/memory -f src/memory/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
"@modelcontextprotocol/sdk": "1.0.1"
|
"@modelcontextprotocol/sdk": "1.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
|
|||||||
24
src/postgres/Dockerfile
Normal file
24
src/postgres/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/postgres /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -24,6 +24,29 @@ The server provides schema information for each table in the database:
|
|||||||
|
|
||||||
To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your `claude_desktop_config.json`:
|
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)
|
||||||
|
* username/password can be added to the postgresql url with `postgresql://user:password@host:port/db-name`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"postgres": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"mcp/postgres",
|
||||||
|
"postgresql://host.docker.internal:5432/mydb"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -41,6 +64,14 @@ To use this server with the Claude Desktop app, add the following configuration
|
|||||||
|
|
||||||
Replace `/mydb` with your database name.
|
Replace `/mydb` with your database name.
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Docker:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build -t mcp/postgres -f src/postgres/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
26
src/puppeteer/Dockerfile
Normal file
26
src/puppeteer/Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
FROM node:22-bookworm-slim
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
# for arm64 support we need to install chromium provided by debian
|
||||||
|
# npm ERR! The chromium binary is not available for arm64.
|
||||||
|
# https://github.com/puppeteer/puppeteer/issues/7740
|
||||||
|
|
||||||
|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
|
||||||
|
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y wget gnupg && \
|
||||||
|
apt-get install -y fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
|
||||||
|
libgtk2.0-0 libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libgbm1 libasound2 && \
|
||||||
|
apt-get install -y chromium && \
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
COPY src/puppeteer /project
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /project
|
||||||
|
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
ENTRYPOINT ["node", "dist/index.js"]
|
||||||
@@ -65,6 +65,23 @@ The server provides access to two types of resources:
|
|||||||
## Configuration to use Puppeteer Server
|
## Configuration to use Puppeteer Server
|
||||||
Here's the Claude Desktop configuration to use the Puppeter server:
|
Here's the Claude Desktop configuration to use the Puppeter server:
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
**NOTE** The docker implementation will use headless chromium, where as the NPX version will open a browser window.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"puppeteer": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "--init", "-e", "DOCKER_CONTAINER=true", "mcp/puppeteer"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### NPX
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -76,6 +93,14 @@ Here's the Claude Desktop configuration to use the Puppeter server:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/puppeteer -f src/puppeteer/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -108,7 +108,9 @@ const screenshots = new Map<string, string>();
|
|||||||
|
|
||||||
async function ensureBrowser() {
|
async function ensureBrowser() {
|
||||||
if (!browser) {
|
if (!browser) {
|
||||||
browser = await puppeteer.launch({ headless: false });
|
const npx_args = { headless: false }
|
||||||
|
const docker_args = { headless: true, args: ["--no-sandbox", "--single-process", "--no-zygote"] }
|
||||||
|
browser = await puppeteer.launch(process.env.DOCKER_CONTAINER ? docker_args : npx_args);
|
||||||
const pages = await browser.pages();
|
const pages = await browser.pages();
|
||||||
page = pages[0];
|
page = pages[0];
|
||||||
|
|
||||||
@@ -399,3 +401,8 @@ async function runServer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
runServer().catch(console.error);
|
runServer().catch(console.error);
|
||||||
|
|
||||||
|
process.stdin.on("close", () => {
|
||||||
|
console.error("Puppeteer MCP Server closed");
|
||||||
|
server.close();
|
||||||
|
});
|
||||||
|
|||||||
37
src/sentry/Dockerfile
Normal file
37
src/sentry/Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Use a Python image with uv pre-installed
|
||||||
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
||||||
|
|
||||||
|
# Install the project into `/app`
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Enable bytecode compilation
|
||||||
|
ENV UV_COMPILE_BYTECODE=1
|
||||||
|
|
||||||
|
# Copy from the cache instead of linking since it's a mounted volume
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
# Install the project's dependencies using the lockfile and settings
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
|
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||||
|
|
||||||
|
# Then, add the rest of the project source code and install it
|
||||||
|
# Installing separately from its dependencies allows optimal layer caching
|
||||||
|
ADD . /app
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
uv sync --frozen --no-dev --no-editable
|
||||||
|
|
||||||
|
FROM python:3.12-slim-bookworm
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=uv /root/.local /root/.local
|
||||||
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
||||||
|
|
||||||
|
# Place executables in the environment at the front of the path
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# when running the container, add --db-path and a bind mount to the host's db file
|
||||||
|
ENTRYPOINT ["mcp-server-sentry"]
|
||||||
|
|
||||||
@@ -69,6 +69,22 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Using docker</summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
"mcpServers": {
|
||||||
|
"sentry": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "mcp/sentry", "--auth-token", "YOUR_SENTRY_TOKEN"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
<summary>Using pip installation</summary>
|
<summary>Using pip installation</summary>
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
|||||||
24
src/sequentialthinking/Dockerfile
Normal file
24
src/sequentialthinking/Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
COPY src/sequentialthinking /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -44,6 +44,8 @@ The Sequential Thinking tool is designed for:
|
|||||||
|
|
||||||
Add this to your `claude_desktop_config.json`:
|
Add this to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### npx
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -58,6 +60,32 @@ Add this to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"sequentialthinking": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"--rm",
|
||||||
|
"-i",
|
||||||
|
"mcp/sequentialthinking"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Docker:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/sequentialthinking -f src/sequentialthinking/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
"yargs": "^17.7.2"
|
"yargs": "^17.7.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.11.0",
|
"@types/node": "^22",
|
||||||
"@types/yargs": "^17.0.32",
|
"@types/yargs": "^17.0.32",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.3.3"
|
"typescript": "^5.3.3"
|
||||||
|
|||||||
25
src/slack/Dockerfile
Normal file
25
src/slack/Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
FROM node:22.12-alpine as builder
|
||||||
|
|
||||||
|
# Must be entire project because `prepare` script is run during `npm install` and requires all files.
|
||||||
|
COPY src/slack /app
|
||||||
|
COPY tsconfig.json /tsconfig.json
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm npm install
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.npm-production npm ci --ignore-scripts --omit-dev
|
||||||
|
|
||||||
|
FROM node:22-alpine AS release
|
||||||
|
|
||||||
|
COPY --from=builder /app/dist /app/dist
|
||||||
|
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", "dist/index.js"]
|
||||||
@@ -89,6 +89,8 @@ MCP Server for the Slack API, enabling Claude to interact with Slack workspaces.
|
|||||||
|
|
||||||
Add the following to your `claude_desktop_config.json`:
|
Add the following to your `claude_desktop_config.json`:
|
||||||
|
|
||||||
|
#### npx
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -107,6 +109,32 @@ Add the following to your `claude_desktop_config.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"slack": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"-i",
|
||||||
|
"--rm",
|
||||||
|
"-e",
|
||||||
|
"SLACK_BOT_TOKEN",
|
||||||
|
"-e",
|
||||||
|
"SLACK_TEAM_ID",
|
||||||
|
"mcp/slack"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
|
||||||
|
"SLACK_TEAM_ID": "T01234567"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
If you encounter permission errors, verify that:
|
If you encounter permission errors, verify that:
|
||||||
@@ -115,6 +143,14 @@ If you encounter permission errors, verify that:
|
|||||||
3. The tokens and workspace ID are correctly copied to your configuration
|
3. The tokens and workspace ID are correctly copied to your configuration
|
||||||
4. The app has been added to the channels it needs to access
|
4. The app has been added to the channels it needs to access
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/slack -f src/slack/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"@modelcontextprotocol/sdk": "1.0.1"
|
"@modelcontextprotocol/sdk": "1.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
}
|
}
|
||||||
|
|||||||
37
src/sqlite/Dockerfile
Normal file
37
src/sqlite/Dockerfile
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Use a Python image with uv pre-installed
|
||||||
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
||||||
|
|
||||||
|
# Install the project into `/app`
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Enable bytecode compilation
|
||||||
|
ENV UV_COMPILE_BYTECODE=1
|
||||||
|
|
||||||
|
# Copy from the cache instead of linking since it's a mounted volume
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
# Install the project's dependencies using the lockfile and settings
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
|
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||||
|
|
||||||
|
# Then, add the rest of the project source code and install it
|
||||||
|
# Installing separately from its dependencies allows optimal layer caching
|
||||||
|
ADD . /app
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
uv sync --frozen --no-dev --no-editable
|
||||||
|
|
||||||
|
FROM python:3.12-slim-bookworm
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=uv /root/.local /root/.local
|
||||||
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
||||||
|
|
||||||
|
# Place executables in the environment at the front of the path
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# when running the container, add --db-path and a bind mount to the host's db file
|
||||||
|
ENTRYPOINT ["mcp-server-sqlite"]
|
||||||
|
|
||||||
@@ -63,6 +63,8 @@ The server offers six core tools:
|
|||||||
|
|
||||||
## Usage with Claude Desktop
|
## Usage with Claude Desktop
|
||||||
|
|
||||||
|
### uv
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Add the server to your claude_desktop_config.json
|
# Add the server to your claude_desktop_config.json
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
@@ -80,6 +82,35 @@ The server offers six core tools:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
```json
|
||||||
|
# Add the server to your claude_desktop_config.json
|
||||||
|
"mcpServers": {
|
||||||
|
"sqlite": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"--rm",
|
||||||
|
"-i",
|
||||||
|
"-v",
|
||||||
|
"mcp-test:/mcp",
|
||||||
|
"mcp/sqlite",
|
||||||
|
"--db-path",
|
||||||
|
"/mcp/test.db"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Docker:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker build -t mcp/sqlite .
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## 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.
|
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.
|
||||||
|
|||||||
36
src/time/Dockerfile
Normal file
36
src/time/Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Use a Python image with uv pre-installed
|
||||||
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS uv
|
||||||
|
|
||||||
|
# Install the project into `/app`
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Enable bytecode compilation
|
||||||
|
ENV UV_COMPILE_BYTECODE=1
|
||||||
|
|
||||||
|
# Copy from the cache instead of linking since it's a mounted volume
|
||||||
|
ENV UV_LINK_MODE=copy
|
||||||
|
|
||||||
|
# Install the project's dependencies using the lockfile and settings
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
|
uv sync --frozen --no-install-project --no-dev --no-editable
|
||||||
|
|
||||||
|
# Then, add the rest of the project source code and install it
|
||||||
|
# Installing separately from its dependencies allows optimal layer caching
|
||||||
|
ADD . /app
|
||||||
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
|
uv sync --frozen --no-dev --no-editable
|
||||||
|
|
||||||
|
FROM python:3.12-slim-bookworm
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=uv /root/.local /root/.local
|
||||||
|
COPY --from=uv --chown=app:app /app/.venv /app/.venv
|
||||||
|
|
||||||
|
# Place executables in the environment at the front of the path
|
||||||
|
ENV PATH="/app/.venv/bin:$PATH"
|
||||||
|
|
||||||
|
# when running the container, add --db-path and a bind mount to the host's db file
|
||||||
|
ENTRYPOINT ["mcp-server-time"]
|
||||||
@@ -54,6 +54,19 @@ Add to your Claude settings:
|
|||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Using docker</summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
"mcpServers": {
|
||||||
|
"time": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "mcp/time"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Using pip installation</summary>
|
<summary>Using pip installation</summary>
|
||||||
|
|
||||||
@@ -179,6 +192,15 @@ npx @modelcontextprotocol/inspector uv run mcp-server-time
|
|||||||
3. "When it's 4 PM in New York, what time is it in London?"
|
3. "When it's 4 PM in New York, what time is it in London?"
|
||||||
4. "Convert 9:30 AM Tokyo time to New York time"
|
4. "Convert 9:30 AM Tokyo time to New York time"
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Docker build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd src/time
|
||||||
|
docker build -t mcp/time .
|
||||||
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
We encourage contributions to help expand and improve mcp-server-time. Whether you want to add new time-related tools, enhance existing functionality, or improve documentation, your input is valuable.
|
We encourage contributions to help expand and improve mcp-server-time. Whether you want to add new time-related tools, enhance existing functionality, or improve documentation, your input is valuable.
|
||||||
|
|||||||
Reference in New Issue
Block a user