import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { getWeeklyTimeTracking } from "./jira";
console.log('Creating server...');
const server = new McpServer({
name: "Jira Assistant",
version: "1.0.0",
});
function getJiraConfig() {
const user = process.env.JIRA_USER;
const password = process.env.JIRA_PASSWORD;
const url = process.env.JIRA_URL;
if (!user || !password || !url) {
throw new Error(
"Missing required environment variables: JIRA_USER, JIRA_PASSWORD, JIRA_URL"
);
}
return { user, password, url };
}
server.tool(
"Get weekly time tracking",
{},
async () => {
try {
const config = getJiraConfig();
const result = await getWeeklyTimeTracking(config);
const summary = `Затреканное время за неделю (${result.weekStart} - ${result.weekEnd}):\n` +
`Всего: ${result.totalTimeSpent} (${result.totalTimeSpentSeconds} секунд)\n\n` +
`Детали по задачам:\n${result.worklogs.map(w =>
`- ${w.issueKey}: ${Math.floor(w.timeSpentSeconds / 3600)}h ${Math.floor((w.timeSpentSeconds % 3600) / 60)}m (${new Date(w.started).toLocaleDateString('ru-RU')})${w.comment ? ` - ${w.comment}` : ''}`
).join('\n')}`;
return {
content: [{ type: "text", text: summary }]
};
} catch (error) {
return {
content: [{
type: "text",
text: `Ошибка при получении данных из Jira: ${error instanceof Error ? error.message : String(error)}`
}]
};
}
}
);
const transport = new StdioServerTransport();
console.log('Running...');
(async () => await server.connect(transport))();
console.log('...');