1.0.17 • Published 11 months ago
@habby/server-youtrack v1.0.17
YouTrack MCP 服务
YouTrack API 集成服务,提供了一套完整的 TypeScript 接口用于与 YouTrack REST API 进行交互。现在支持作为 MCP (Model Context Protocol) 服务运行,可以通过 npx 直接运行。
功能特性
问题管理
- 获取问题列表
- 获取问题详情
- 创建新问题
- 更新问题状态
- 更新问题优先级
- 更新问题类型
评论管理
- 添加评论(支持纯文本、Markdown、HTML格式)
- 更新评论
- 删除评论
看板管理
- 获取看板列表
- 获取看板详情
- 将问题添加到看板
- Sprint 管理
时间跟踪
- 更新问题估算时间
- 更新问题已花费时间
环境要求
- Node.js >= 14.0.0
- TypeScript >= 4.0.0
安装
作为项目依赖安装
npm install @habby/server-youtrack通过 npx 直接运行
npx @habby/server-youtrack配置
在项目根目录创建 .env 文件,添加以下配置:
YOUTRACK_BASE_URL=https://your-instance.youtrack.cloud/youtrack
YOUTRACK_TOKEN=your-permanent-token注意:
1. YOUTRACK_BASE_URL 应该包含完整的 API 路径
2. YOUTRACK_TOKEN 需要具有足够的权限来执行相应的操作
MCP 服务使用
通过 npx 直接运行 MCP 服务
# 设置环境变量
export YOUTRACK_BASE_URL="https://habby.youtrack.cloud/youtrack/api"
export YOUTRACK_TOKEN="your-permanent-token"
# 运行 MCP 服务
npx @habby/youtrack-mcp使用 mcp.config.json 配置文件
创建 mcp.config.json 文件:
{
"services": {
"youtrack": {
"command": "npx",
"args": [
"-y",
"@habby/server-youtrack"
],
"env": {
"YOUTRACK_BASE_URL": "https://habby.youtrack.cloud/youtrack",
"YOUTRACK_TOKEN": "your-permanent-token"
}
}
}
}MCP 服务 API 端点
启动服务后,可以通过以下端点访问 MCP 服务:
POST /mcp/youtrack- MCP 服务主端点,接受 JSON 格式的请求体,包含action和params字段GET /mcp/health- 健康检查端点
示例请求:
{
"action": "getIssues",
"params": {
"query": "project: YourProject"
}
}支持的 action 类型:
getIssues- 获取问题列表getIssueById- 获取问题详情addIssueComment- 添加评论updateIssueComment- 更新评论deleteIssueComment- 删除评论getBoards- 获取看板列表getBoardById- 获取看板详情
使用示例
import { YouTrackService } from './services/YouTrackService';
import dotenv from 'dotenv';
// 加载环境变量
dotenv.config();
// 创建 YouTrack 服务实例
const youTrackService = new YouTrackService(
process.env.YOUTRACK_BASE_URL!,
process.env.YOUTRACK_TOKEN!
);
// 获取问题列表
async function getIssues() {
try {
const result = await youTrackService.getIssues({
$top: 10,
query: 'project: YourProject'
});
console.log('问题列表:', result.issues);
} catch (error) {
console.error('获取问题列表失败:', error);
}
}
// 添加评论
async function addComment(issueId: string) {
try {
const comment = await youTrackService.addIssueComment(
issueId,
'这是一条测试评论',
'plain' // 可选:'plain'、'markdown'、'html'
);
console.log('评论已添加:', comment);
} catch (error) {
console.error('添加评论失败:', error);
}
}API 文档
YouTrackService 类
构造函数
constructor(baseUrl: string, token: string)问题管理
// 获取问题列表
async getIssues(options?: {
$skip?: number;
$top?: number;
query?: string;
fields?: string;
}): Promise<{ total: number; issues: YouTrackIssue[] }>
// 获取问题详情
async getIssueById(issueId: string): Promise<YouTrackIssue>
// 创建新问题
async createIssue(issue: YouTrackIssue): Promise<YouTrackIssue>评论管理
// 添加评论
async addIssueComment(
issueId: string,
text: string,
textFormat: 'plain' | 'markdown' | 'html' = 'plain'
): Promise<YouTrackComment>
// 更新评论
async updateIssueComment(
issueId: string,
commentId: string,
text: string,
textFormat: 'plain' | 'markdown' | 'html' = 'plain'
): Promise<YouTrackComment>
// 删除评论
async deleteIssueComment(issueId: string, commentId: string): Promise<void>看板管理
// 获取看板列表
async getBoards(): Promise<YouTrackBoard[]>
// 获取看板详情
async getBoardById(boardId: string): Promise<YouTrackBoard>
// 将问题添加到看板
async addIssueToBoard(issueId: string, boardId: string): Promise<void>运行测试
npm test注意事项
API 调用限制
- 建议在测试中添加适当的延迟,避免触发 API 限流
- 使用
fields参数指定需要的字段,减少响应数据大小
错误处理
- 所有 API 调用都应该包含适当的错误处理
- 特别注意处理权限相关的错误(HTTP 403)
权限要求
- 不同的操作可能需要不同的权限级别
- 建议使用最小权限原则配置 token
许可证
MIT
贡献指南
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建 Pull Request
1.0.17
11 months ago
1.0.16
11 months ago
1.0.15
11 months ago
1.0.14
11 months ago
1.0.13
11 months ago
1.0.12
11 months ago
1.0.11
11 months ago
1.0.10
11 months ago
1.0.9
11 months ago
1.0.8
11 months ago
1.0.7
11 months ago
1.0.6
11 months ago
1.0.5
11 months ago
1.0.4
11 months ago
1.0.3
11 months ago
1.0.2
11 months ago
1.0.1
11 months ago
1.0.0
11 months ago