Skip to content

Commit fa391ba

Browse files
authored
Merge branch 'main' into main
2 parents bbc605b + 5a48c0b commit fa391ba

7 files changed

Lines changed: 362 additions & 13 deletions

File tree

README.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ Official integrations are maintained by companies building production ready MCP
226226
- <img height="12" width="12" src="https://memgraph.com/favicon.png" alt="Memgraph Logo" /> **[Memgraph](https://github.com/memgraph/mcp-memgraph)** - Query your data in [Memgraph](https://memgraph.com/) graph database.
227227
- <img height="12" width="12" src="https://memgraph.com/favicon.png" alt="Memgraph Logo" /> **[Memgraph](https://github.com/memgraph/ai-toolkit/tree/main/integrations/mcp-memgraph)** - Query your data in [Memgraph](https://memgraph.com/) graph database.
228228
- <img height="12" width="12" src="https://www.mercadopago.com/favicon.ico" alt="MercadoPago Logo" /> **[Mercado Pago](https://mcp.mercadopago.com/)** - Mercado Pago's official MCP server.
229-
- <img height="12" width="12" src="https://metoro.io/static/images/logos/Metoro.svg" alt="Metoro Logo" /> **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro
229+
- <img height="12" width="12" src="https://metoro.io/static/images/logos/MetoroLogo.png" alt="Metoro Logo" /> **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro
230230
- <img height="12" width="12" src="https://claritystatic.azureedge.net/images/logo.ico" alt="Microsoft Clarity Logo"/> **[Microsoft Clarity](https://github.com/microsoft/clarity-mcp-server)** - Official MCP Server to get your behavioral analytics data and insights from [Clarity](https://clarity.microsoft.com)
231231
- <img height="12" width="12" src="https://conn-afd-prod-endpoint-bmc9bqahasf3grgk.b01.azurefd.net/releases/v1.0.1735/1.0.1735.4099/commondataserviceforapps/icon.png" alt="Microsoft Dataverse Logo" /> **[Microsoft Dataverse](https://go.microsoft.com/fwlink/?linkid=2320176)** - Chat over your business data using NL - Discover tables, run queries, retrieve data, insert or update records, and execute custom prompts grounded in business knowledge and context.
232232
- <img height="12" width="12" src="https://www.microsoft.com/favicon.ico" alt="microsoft.com favicon" /> **[Microsoft Learn Docs](https://github.com/microsoftdocs/mcp)** - An MCP server that provides structured access to Microsoft’s official documentation. Retrieves accurate, authoritative, and context-aware technical content for code generation, question answering, and workflow grounding.
@@ -342,7 +342,7 @@ Official integrations are maintained by companies building production ready MCP
342342
- <img height="12" width="12" src="https://verodat.io/assets/favicon-16x16.png" alt="Verodat Logo" /> **[Verodat](https://github.com/Verodat/verodat-mcp-server)** - Interact with Verodat AI Ready Data platform
343343
- <img height="12" width="12" src="https://www.veyrax.com/favicon.ico" alt="VeyraX Logo" /> **[VeyraX](https://github.com/VeyraX/veyrax-mcp)** - Single tool to control all 100+ API integrations, and UI components
344344
- <img height="12" width="12" src="https://avatars.githubusercontent.com/u/174736222?s=200&v=4" alt="VictoriaMetrics Logo" /> **[VictoriaMetrics](https://github.com/VictoriaMetrics-Community/mcp-victoriametrics)** - Comprehensive integration with [VictoriaMetrics APIs](https://docs.victoriametrics.com/victoriametrics/url-examples/) and [documentation](https://docs.victoriametrics.com/) for monitoring, observability, and debugging tasks related to your VictoriaMetrics instances.
345-
- <img src="https://framerusercontent.com/images/ijlYG00LOcMD6zR1XLMxHbAwZkM.png" alt="VideoDB Director" height="14"> **[VideoDB Director](https://github.com/video-db/agent-toolkit/tree/main/modelcontextprotocol)** - Create AI-powered video workflows including automatic editing, content moderation, voice cloning, highlight generation, and searchable video moments—all accessible via simple APIs and intuitive chat-based interfaces.
345+
- <img height="12" width="12" src="https://framerusercontent.com/images/ijlYG00LOcMD6zR1XLMxHbAwZkM.png" alt="VideoDB Director" /> **[VideoDB Director](https://github.com/video-db/agent-toolkit/tree/main/modelcontextprotocol)** - Create AI-powered video workflows including automatic editing, content moderation, voice cloning, highlight generation, and searchable video moments—all accessible via simple APIs and intuitive chat-based interfaces.
346346
- <img height="12" width="12" src="https://landing.ai/wp-content/uploads/2024/04/cropped-favicon-192x192.png" alt="LandingAI VisionAgent" /> **[VisionAgent MCP](https://github.com/landing-ai/vision-agent-mcp)** - A simple MCP server that enables your LLM to better reason over images, video and documents.
347347
- <img height="12" width="12" src="https://raw.githubusercontent.com/mckinsey/vizro/main/vizro-core/docs/assets/images/favicon.png" alt="Vizro Logo" /> **[Vizro](https://github.com/mckinsey/vizro/tree/main/vizro-mcp)** - Tools and templates to create validated and maintainable data charts and dashboards
348348
- <img height="12" width="12" src="https://wavespeed.ai/logo.webp" alt="WaveSpeed Logo" /> **[WaveSpeed](https://github.com/WaveSpeedAI/mcp-server)** - WaveSpeed MCP server providing AI agents with image and video generation capabilities.
@@ -526,7 +526,6 @@ A growing set of community-developed and maintained servers demonstrates various
526526
- **[Feyod](https://github.com/jeroenvdmeer/feyod-mcp)** - A server that answers questions about football matches, and specialised in the football club Feyenoord.
527527
- **[Fibaro HC3](https://github.com/coding-sailor/mcp-server-hc3)** - MCP server for Fibaro Home Center 3 smart home systems.
528528
- **[Figma](https://github.com/GLips/Figma-Context-MCP)** - Give your coding agent direct access to Figma file data, helping it one-shot design implementation.
529-
- **[Fingertip](https://github.com/fingertip-com/fingertip-mcp)** - MCP server for Fingertip.com to search and create new sites.
530529
- **[Firebase](https://github.com/gannonh/firebase-mcp)** - Server to interact with Firebase services including Firebase Authentication, Firestore, and Firebase Storage.
531530
- **[FireCrawl](https://github.com/vrknetha/mcp-server-firecrawl)** - Advanced web scraping with JavaScript rendering, PDF support, and smart rate limiting
532531
- **[FitBit MCP Server](https://github.com/NitayRabi/fitbit-mcp)** - An MCP server that connects to FitBit API using a token obtained from OAuth flow.
@@ -599,7 +598,6 @@ A growing set of community-developed and maintained servers demonstrates various
599598
- **[iTerm MCP](https://github.com/ferrislucas/iterm-mcp)** - Integration with iTerm2 terminal emulator for macOS, enabling LLMs to execute and monitor terminal commands.
600599
- **[iTerm MCP Server](https://github.com/rishabkoul/iTerm-MCP-Server)** - A Model Context Protocol (MCP) server implementation for iTerm2 terminal integration. Able to manage multiple iTerm Sessions.
601600
- **[Java Decompiler](https://github.com/idachev/mcp-javadc)** - Decompile Java bytecode into readable source code from .class files, package names, or JAR archives using CFR decompiler
602-
- **[JavaFX](https://github.com/mcpso/mcp-server-javafx)** - Make drawings using a JavaFX canvas
603601
- **[JavaFX](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jfx)** - Make drawings using a JavaFX canvas
604602
- **[JDBC](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc)** - Connect to any JDBC-compatible database and query, insert, update, delete, and more. Supports MySQL, PostgreSQL, Oracle, SQL Server, sqllite and [more](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc#supported-jdbc-variants).
605603
- **[JMeter](https://github.com/QAInsights/jmeter-mcp-server)** - Run load testing using Apache JMeter via MCP-compliant tools.
@@ -799,7 +797,6 @@ A growing set of community-developed and maintained servers demonstrates various
799797
- **[Riot Games](https://github.com/jifrozen0110/mcp-riot)** - MCP server for League of Legends – fetch player info, ranks, champion stats, and match history via Riot API.
800798
- **[Rquest](https://github.com/xxxbrian/mcp-rquest)** - An MCP server providing realistic browser-like HTTP request capabilities with accurate TLS/JA3/JA4 fingerprints for bypassing anti-bot measures.
801799
- **[Rust MCP Filesystem](https://github.com/rust-mcp-stack/rust-mcp-filesystem)** - Fast, asynchronous MCP server for efficient handling of various filesystem operations built with the power of Rust.
802-
- **[Salesforce MCP](https://github.com/salesforce-mcp/salesforce-mcp)** - Salesforce MCP server. Supports cloud version Salesforce-mcp.com and allows both data & metadata functions.
803800
- **[Salesforce MCP](https://github.com/smn2gnt/MCP-Salesforce)** - Interact with Salesforce Data and Metadata
804801
- **[Salesforce MCP (AiondaDotCom)](https://github.com/AiondaDotCom/mcp-salesforce)** - Universal Salesforce integration with OAuth authentication, smart learning system, comprehensive backup capabilities, and full CRUD operations for any Salesforce org including custom objects and fields.
805802
- **[Salesforce MCP Server](https://github.com/tsmztech/mcp-server-salesforce)** - Comprehensive Salesforce integration with tools for querying records, executing Apex, managing fields/objects, and handling debug logs
@@ -874,7 +871,6 @@ A growing set of community-developed and maintained servers demonstrates various
874871
- **[Trello MCP Server](https://github.com/lioarce01/trello-mcp-server)** - An MCP server that interact with user Trello boards, modifying them with prompting.
875872
- **[Tripadvisor](https://github.com/pab1it0/tripadvisor-mcp)** - A MCP server that enables LLMs to interact with Tripadvisor API, supporting location data, reviews, and photos through standardized MCP interfaces
876873
- **[TrueNAS Core MCP](https://github.com/vespo92/TrueNasCoreMCP)** - An MCP server for interacting with TrueNAS Core.
877-
- **[Tsuki-Mcp-Filesystem-Server](https://github.com/yuutotsuki/tsuki_mcp_filesystem_server)** - A simple, fast, and fully MCP-compliant server for listing local filesystem files. Built with Python + FastAPI. Designed for OpenAI's Agent SDK via `resources/list`.
878874
- **[Tyk API Management](https://github.com/TykTechnologies/tyk-dashboard-mcp)** - Chat with all of your organization's managed APIs and perform other API lifecycle operations, managing tokens, users, analytics, and more.
879875
- **[Typesense](https://github.com/suhail-ak-s/mcp-typesense-server)** - A Model Context Protocol (MCP) server implementation that provides AI models with access to Typesense search capabilities. This server enables LLMs to discover, search, and analyze data stored in Typesense collections.
880876
- **[uniswap-poolspy-mcp](https://github.com/kukapay/uniswap-poolspy-mcp)** - An MCP server that tracks newly created liquidity pools on Uniswap across nine blockchain networks.

src/everything/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is
7272
- Embedded resource with `type: "resource"`
7373
- Text instruction for using the resource URI
7474

75+
9. `startElicitation`
76+
- Initiates an elicitation (interaction) within the MCP client.
77+
- Inputs:
78+
- `color` (string): Favorite color
79+
- `number` (number, 1-100): Favorite number
80+
- `pets` (enum): Favorite pet
81+
- Returns: Confirmation of the elicitation demo with selection summary.
82+
7583
### Resources
7684

7785
The server provides 100 test resources in two formats:

src/everything/everything.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ const GetResourceReferenceSchema = z.object({
8686
.describe("ID of the resource to reference (1-100)"),
8787
});
8888

89+
const ElicitationSchema = z.object({});
90+
8991
const GetResourceLinksSchema = z.object({
9092
count: z
9193
.number()
@@ -104,6 +106,7 @@ enum ToolName {
104106
GET_TINY_IMAGE = "getTinyImage",
105107
ANNOTATED_MESSAGE = "annotatedMessage",
106108
GET_RESOURCE_REFERENCE = "getResourceReference",
109+
ELICITATION = "startElicitation",
107110
GET_RESOURCE_LINKS = "getResourceLinks",
108111
}
109112

@@ -126,6 +129,7 @@ export const createServer = () => {
126129
tools: {},
127130
logging: {},
128131
completions: {},
132+
elicitation: {},
129133
},
130134
instructions
131135
}
@@ -216,6 +220,21 @@ export const createServer = () => {
216220
return await server.request(request, CreateMessageResultSchema);
217221
};
218222

223+
const requestElicitation = async (
224+
message: string,
225+
requestedSchema: any
226+
) => {
227+
const request = {
228+
method: 'elicitation/create',
229+
params: {
230+
message,
231+
requestedSchema
232+
}
233+
};
234+
235+
return await server.request(request, z.any());
236+
};
237+
219238
const ALL_RESOURCES: Resource[] = Array.from({ length: 100 }, (_, i) => {
220239
const uri = `test://static/resource/${i + 1}`;
221240
if (i % 2 === 0) {
@@ -469,6 +488,11 @@ export const createServer = () => {
469488
"Returns a resource reference that can be used by MCP clients",
470489
inputSchema: zodToJsonSchema(GetResourceReferenceSchema) as ToolInput,
471490
},
491+
{
492+
name: ToolName.ELICITATION,
493+
description: "Demonstrates the Elicitation feature by asking the user to provide information about their favorite color, number, and pets.",
494+
inputSchema: zodToJsonSchema(ElicitationSchema) as ToolInput,
495+
},
472496
{
473497
name: ToolName.GET_RESOURCE_LINKS,
474498
description:
@@ -664,6 +688,61 @@ export const createServer = () => {
664688
return { content };
665689
}
666690

691+
if (name === ToolName.ELICITATION) {
692+
ElicitationSchema.parse(args);
693+
694+
const elicitationResult = await requestElicitation(
695+
'What are your favorite things?',
696+
{
697+
type: 'object',
698+
properties: {
699+
color: { type: 'string', description: 'Favorite color' },
700+
number: { type: 'integer', description: 'Favorite number', minimum: 1, maximum: 100 },
701+
pets: {
702+
type: 'string',
703+
enum: ['cats', 'dogs', 'birds', 'fish', 'reptiles'],
704+
description: 'Favorite pets'
705+
},
706+
}
707+
}
708+
);
709+
710+
// Handle different response actions
711+
const content = [];
712+
713+
if (elicitationResult.action === 'accept' && elicitationResult.content) {
714+
content.push({
715+
type: "text",
716+
text: `✅ User provided their favorite things!`,
717+
});
718+
719+
// Only access elicitationResult.content when action is accept
720+
const { color, number, pets } = elicitationResult.content;
721+
content.push({
722+
type: "text",
723+
text: `Their favorites are:\n- Color: ${color || 'not specified'}\n- Number: ${number || 'not specified'}\n- Pets: ${pets || 'not specified'}`,
724+
});
725+
} else if (elicitationResult.action === 'decline') {
726+
content.push({
727+
type: "text",
728+
text: `❌ User declined to provide their favorite things.`,
729+
});
730+
} else if (elicitationResult.action === 'cancel') {
731+
content.push({
732+
type: "text",
733+
text: `⚠️ User cancelled the elicitation dialog.`,
734+
});
735+
}
736+
737+
// Include raw result for debugging
738+
content.push({
739+
type: "text",
740+
text: `\nRaw result: ${JSON.stringify(elicitationResult, null, 2)}`,
741+
});
742+
743+
return { content };
744+
}
745+
667746
if (name === ToolName.GET_RESOURCE_LINKS) {
668747
const { count } = GetResourceLinksSchema.parse(args);
669748
const content = [];

src/filesystem/README.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,58 @@ Node.js server implementing Model Context Protocol (MCP) for filesystem operatio
99
- Move files/directories
1010
- Search files
1111
- Get file metadata
12+
- Dynamic directory access control via [Roots](https://modelcontextprotocol.io/docs/concepts/roots)
13+
14+
## Directory Access Control
15+
16+
The server uses a flexible directory access control system. Directories can be specified via command-line arguments or dynamically via [Roots](https://modelcontextprotocol.io/docs/concepts/roots).
17+
18+
### Method 1: Command-line Arguments
19+
Specify Allowed directories when starting the server:
20+
```bash
21+
mcp-server-filesystem /path/to/dir1 /path/to/dir2
22+
```
23+
24+
### Method 2: MCP Roots (Recommended)
25+
MCP clients that support [Roots](https://modelcontextprotocol.io/docs/concepts/roots) can dynamically update the Allowed directories.
26+
27+
Roots notified by Client to Server, completely replace any server-side Allowed directories when provided.
28+
29+
**Important**: If server starts without command-line arguments AND client doesn't support roots protocol (or provides empty roots), the server will throw an error during initialization.
30+
31+
This is the recommended method, as this enables runtime directory updates via `roots/list_changed` notifications without server restart, providing a more flexible and modern integration experience.
32+
33+
### How It Works
34+
35+
The server's directory access control follows this flow:
36+
37+
1. **Server Startup**
38+
- Server starts with directories from command-line arguments (if provided)
39+
- If no arguments provided, server starts with empty allowed directories
40+
41+
2. **Client Connection & Initialization**
42+
- Client connects and sends `initialize` request with capabilities
43+
- Server checks if client supports roots protocol (`capabilities.roots`)
44+
45+
3. **Roots Protocol Handling** (if client supports roots)
46+
- **On initialization**: Server requests roots from client via `roots/list`
47+
- Client responds with its configured roots
48+
- Server replaces ALL allowed directories with client's roots
49+
- **On runtime updates**: Client can send `notifications/roots/list_changed`
50+
- Server requests updated roots and replaces allowed directories again
51+
52+
4. **Fallback Behavior** (if client doesn't support roots)
53+
- Server continues using command-line directories only
54+
- No dynamic updates possible
55+
56+
5. **Access Control**
57+
- All filesystem operations are restricted to allowed directories
58+
- Use `list_allowed_directories` tool to see current directories
59+
- Server requires at least ONE allowed directory to operate
60+
61+
**Note**: The server will only allow operations within directories specified either via `args` or via Roots.
62+
1263

13-
**Note**: The server will only allow operations within directories specified via `args`.
1464

1565
## API
1666

0 commit comments

Comments
 (0)