Skip to main content
Glama
yhc984

Talk to Figma MCP

by yhc984

join_channel

Connect to a Figma channel for real-time communication and collaboration on design projects.

Instructions

Join a specific channel to communicate with Figma

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
channelNoThe name of the channel to join

Implementation Reference

  • The handler function for the 'join_channel' MCP tool. It validates the channel input, calls the joinChannel helper, and returns success or error messages.
    async ({ channel }) => {
      try {
        if (!channel) {
          // If no channel provided, ask the user for input
          return {
            content: [
              {
                type: "text",
                text: "Please provide a channel name to join:"
              }
            ],
            followUp: {
              tool: "join_channel",
              description: "Join the specified channel"
            }
          };
        }
    
        await joinChannel(channel);
        return {
          content: [
            {
              type: "text",
              text: `Successfully joined channel: ${channel}`
            }
          ]
        };
      } catch (error) {
        return {
          content: [
            {
              type: "text",
              text: `Error joining channel: ${error instanceof Error ? error.message : String(error)}`
            }
          ]
        };
      }
    }
  • Zod schema defining the input parameter 'channel' for the join_channel tool.
    {
      channel: z.string().describe("The name of the channel to join").default("")
    },
  • Registration of the 'join_channel' tool using McpServer.tool method, including description, schema, and handler.
    server.tool(
      "join_channel",
      "Join a specific channel to communicate with Figma",
      {
        channel: z.string().describe("The name of the channel to join").default("")
      },
      async ({ channel }) => {
        try {
          if (!channel) {
            // If no channel provided, ask the user for input
            return {
              content: [
                {
                  type: "text",
                  text: "Please provide a channel name to join:"
                }
              ],
              followUp: {
                tool: "join_channel",
                description: "Join the specified channel"
              }
            };
          }
    
          await joinChannel(channel);
          return {
            content: [
              {
                type: "text",
                text: `Successfully joined channel: ${channel}`
              }
            ]
          };
        } catch (error) {
          return {
            content: [
              {
                type: "text",
                text: `Error joining channel: ${error instanceof Error ? error.message : String(error)}`
              }
            ]
          };
        }
      }
    );
  • Helper function that sends the 'join' command to Figma via WebSocket and updates the current channel state.
    async function joinChannel(channelName: string): Promise<void> {
      if (!ws || ws.readyState !== WebSocket.OPEN) {
        throw new Error('Not connected to Figma');
      }
    
      try {
        await sendCommandToFigma('join', { channel: channelName });
        currentChannel = channelName;
        console.info(`Joined channel: ${channelName}`);
      } catch (error) {
        console.error(`Failed to join channel: ${error instanceof Error ? error.message : String(error)}`);
        throw error;
      }
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yhc984/cursor-talk-to-figma-mcp-main'

If you have feedback or need assistance with the MCP directory API, please join our Discord server