Skip to content

feat: implement the custom MCP Server in tool#6205

Open
prd-hoang-doan wants to merge 1 commit intoFlowiseAI:mainfrom
prd-hoang-doan:feat/custom-mcp-server-tool
Open

feat: implement the custom MCP Server in tool#6205
prd-hoang-doan wants to merge 1 commit intoFlowiseAI:mainfrom
prd-hoang-doan:feat/custom-mcp-server-tool

Conversation

@prd-hoang-doan
Copy link
Copy Markdown
Contributor

Ticket

Flowise Roadmap

Changes

  • Implemented the MCPServersTable component for displaying MCP server data with status badges and tools count.
  • Created CustomMcpServerDialog for adding and editing custom MCP servers, including validation for server URL and handling authentication headers.
  • Integrated MCP server management into the Tools view with tabbed navigation for Custom Tools and Custom MCP Servers.
  • Added pagination and loading states for MCP servers.

Database

Field Type Nullable Default Description
id uuid No Auto-generated Primary key for the custom MCP server
name string No Display name of the MCP server
serverUrl string No Endpoint URL of the MCP server
iconSrc string Yes null Optional icon URL for UI display
color string Yes null Optional color used for UI presentation
authType string No NONE Authentication type (NONE, CUSTOM_HEADERS, OAUTH2 (future))
authConfig text Yes null Authentication configuration payload
tools text Yes null Serialized tool definitions returned by MCP server
status string No PENDING Connection status (PENDING, ERROR, AUTHORIZED)
createdDate timestamp No Auto-generated Record creation timestamp
updatedDate timestamp No Auto-generated Last update timestamp
workspaceId text No Workspace identifier associated with this server

Notes

  • authConfig is decrypted as a string in the database.
  • tools are stored as serialized JSON text.
{"tools":[{"name":"Github MCP Server","description":"GitHub MCP Server to search user's repositories.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"User Input/Question content"}},"required":["query"]}}]}

Testing

Platform Auth Type Success
Dify NONE
n8n CUSTOM_HEADERS

Demo:

Youtube: https://youtu.be/JO8IBriEzFA

- Implemented MCPServersTable for displaying MCP server data with status badges and tools count.
- Created CustomMcpServerDialog for adding and editing custom MCP servers with validation and authorization features.
- Integrated MCP server management into the Tools view with tabbed navigation for Custom Tools and Custom MCP Servers.
- Added pagination and loading states for MCP servers.
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces support for Custom MCP (Model Context Protocol) Servers, enabling the integration of external tools via SSE or HTTP endpoints. The implementation includes a new CustomMcpServerTool, backend services for server management and tool discovery, database migrations for multiple SQL dialects, and a UI update to the Tools page with a dedicated management tab. Key features include credential encryption for custom headers and security-focused URL masking. Review feedback suggests adding a safety check when closing the toolkit client to prevent secondary errors and refactoring the header merging logic to improve code readability.

Comment thread packages/server/src/services/custom-mcp-servers/index.ts
Comment thread packages/server/src/services/custom-mcp-servers/index.ts
@prd-hoang-doan
Copy link
Copy Markdown
Contributor Author

Hi @harshit-flowise, @jchui-wd
Could you take your time to review this pull request? Feel free to provide feedback on this.

@0xbrainkid
Copy link
Copy Markdown

The custom MCP server table with status badges and auth type handling is a solid foundation — especially the authType enum leaving room for OAuth2 in a future iteration.

One column worth adding to the MCP server schema: trust attestation. The current schema tracks connection status (PENDING/ERROR/AUTHORIZED) and auth configuration. But "AUTHORIZED" tells you the server authenticated successfully — it does not tell you whether the MCP server has been reliable in practice or whether the agent behind it is who it claims to be.

A lightweight addition:

Field          | Type    | Nullable | Default | Description
trustScore     | float   | Yes      | null    | Behavioral trust score (0-1) from attestation provider
attestationUrl | string  | Yes      | null    | Link to verifiable trust proof
lastVerified   | timestamp | Yes    | null    | When trust was last checked

This matters especially for custom (user-added) MCP servers, which have no prior vetting — unlike official Flowise integrations. A user adding a third-party MCP server endpoint should be able to see at a glance whether that server has a verified trust record before connecting it to their production flows.

The status badge UI already has the visual pattern: adding a trust level badge (verified/unverified/low/high) next to the connection status badge would give flow builders the signal they need without adding friction to the current UX.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants