Skip to main content
Glama
cristip73

MCP Server for Asana

by cristip73

asana_add_members_for_project

Add team members to an Asana project by specifying their user IDs and the target project ID to manage project collaboration.

Instructions

Add members to a project

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID to add members to
membersYesArray of user GIDs to add as members to the project
opt_fieldsNoComma-separated list of optional fields to include in the response

Implementation Reference

  • Core handler that executes the tool logic: adds members to an Asana project using SDK or direct API call with fallback.
    async addMembersForProject(projectId: string, members: any) {
      try {
        const membersArray = this.ensureArray(members);
        const body = {
          data: {
            members: membersArray
          }
        };
        const response = await this.projects.addMembersForProject(body, projectId);
        return response.data;
      } catch (error: any) {
        console.error(`Error adding members to project: ${error}`);
        
        // Adăugăm mai multe detalii despre eroare pentru debugging
        if (error.response && error.response.body) {
          console.error(`Response error details: ${JSON.stringify(error.response.body, null, 2)}`);
        }
        
        // Dacă metoda standard eșuează, încercăm metoda alternativă cu callApi direct
        try {
          const client = Asana.ApiClient.instance;
          const membersArray = this.ensureArray(members);
          const response = await client.callApi(
            `/projects/${projectId}/addMembers`,
            'POST',
            { project_gid: projectId },
            {},
            {},
            {},
            { data: { members: membersArray } },
            ['token'],
            ['application/json'],
            ['application/json'],
            'Blob'
          );
          return response.data;
        } catch (fallbackError) {
          console.error("Error in fallback method for adding members:", fallbackError);
          throw fallbackError;
        }
      }
    }
  • Tool dispatch handler in switch statement that extracts parameters and calls the Asana client method.
    case "asana_add_members_for_project": {
      const { project_id, members, ...opts } = args;
      const response = await asanaClient.addMembersForProject(project_id, members);
      return {
        content: [{ type: "text", text: JSON.stringify(response) }],
      };
    }
  • Tool schema definition including input schema with project_id, members array, and opt_fields.
    export const addMembersForProjectTool: Tool = {
      name: "asana_add_members_for_project",
      description: "Add members to a project",
      inputSchema: {
        type: "object",
        properties: {
          project_id: {
            type: "string",
            description: "The project ID to add members to"
          },
          members: {
            type: "array",
            items: {
              type: "string"
            },
            description: "Array of user GIDs to add as members to the project"
          },
          opt_fields: {
            type: "string",
            description: "Comma-separated list of optional fields to include in the response"
          }
        },
        required: ["project_id", "members"]
      }
    };
  • Tool registration: imported and added to the exported tools array used by MCP server.
    addMembersForProjectTool,
    addFollowersForProjectTool,
    getUsersForWorkspaceTool,
    getAttachmentsForObjectTool,
    uploadAttachmentForObjectTool,
    downloadAttachmentTool
  • Validation helper for tool parameters: checks project_id GID and required members array.
    case 'asana_add_members_for_project':
    case 'asana_add_followers_for_project':
      result = validateGid(params.project_id, 'project_id');
      if (!result.valid) errors.push(...result.errors);
      
      const arrayParam = toolName === 'asana_add_members_for_project' ? 'members' : 'followers';
      if (!params[arrayParam]) {
        errors.push(`${arrayParam} is required`);
      }
      break;

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/cristip73/mcp-server-asana'

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