We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kwanok/dooray-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
from mcp.server.fastmcp import FastMCP
from dooray_mcp.controllers import milestone as milestone_controller
def register_milestone_tools(mcp: FastMCP) -> None:
@mcp.tool(
name="dooray_list_milestones",
description="List milestones in a Dooray project",
)
async def dooray_list_milestones(
project_id: str,
page: int = 0,
size: int = 20,
status: str | None = None,
) -> str:
result = await milestone_controller.list_milestones(
project_id=project_id, page=page, size=size, status=status
)
return result.content
@mcp.tool(
name="dooray_get_milestone",
description="Get detailed information about a specific milestone",
)
async def dooray_get_milestone(
project_id: str,
milestone_id: str,
) -> str:
result = await milestone_controller.get_milestone(
project_id=project_id, milestone_id=milestone_id
)
return result.content
@mcp.tool(
name="dooray_create_milestone",
description="Create a new milestone in a project",
)
async def dooray_create_milestone(
project_id: str,
name: str,
start_at: str | None = None,
end_at: str | None = None,
) -> str:
result = await milestone_controller.create_milestone(
project_id=project_id, name=name, start_at=start_at, end_at=end_at
)
return result.content
@mcp.tool(
name="dooray_update_milestone",
description="Update an existing milestone",
)
async def dooray_update_milestone(
project_id: str,
milestone_id: str,
name: str | None = None,
status: str | None = None,
start_at: str | None = None,
end_at: str | None = None,
) -> str:
result = await milestone_controller.update_milestone(
project_id=project_id,
milestone_id=milestone_id,
name=name,
status=status,
start_at=start_at,
end_at=end_at,
)
return result.content
@mcp.tool(
name="dooray_delete_milestone",
description="Delete a milestone from a project",
)
async def dooray_delete_milestone(
project_id: str,
milestone_id: str,
) -> str:
result = await milestone_controller.delete_milestone(
project_id=project_id, milestone_id=milestone_id
)
return result.content