umtri-mcp 1.5.2 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,9 +12,14 @@ export function createApiClient({ baseUrl, getToken }) {
12
12
  return `Bearer ${token}`;
13
13
  }
14
14
 
15
+ // 서버가 "이 사용자가 MCP로 연결해 본 적 있음"을 기록하는 표시 — stdio·HTTP 공용.
16
+ async function headers() {
17
+ return { Authorization: await authHeader(), 'X-Umtri-Client': 'mcp' };
18
+ }
19
+
15
20
  async function get(path) {
16
21
  const res = await fetch(`${base}${path}`, {
17
- headers: { Authorization: await authHeader() },
22
+ headers: await headers(),
18
23
  });
19
24
  if (!res.ok) {
20
25
  const body = await res.text().catch(() => '');
@@ -26,7 +31,7 @@ export function createApiClient({ baseUrl, getToken }) {
26
31
  async function mutate(method, path, body) {
27
32
  const init = {
28
33
  method,
29
- headers: { Authorization: await authHeader() },
34
+ headers: await headers(),
30
35
  };
31
36
  if (body != null) {
32
37
  init.headers['Content-Type'] = 'application/json';
package/core/tools.js CHANGED
@@ -177,7 +177,7 @@ function compressProjects(projects, { descMode = 'excerpt' } = {}) {
177
177
  openBugs: p.openBugs,
178
178
  seasonCount: p.seasonCount,
179
179
  };
180
- // 팀 ground면 소속과 내 역할을 싣는다 — viewer면 쓰기 도구가 403으로 막힌다는 걸 미리 알 수 있게.
180
+ // 팀 ground면 소속과 내 역할을 싣는다 — viewer·reporter면 쓰기 도구가 403으로 막힌다는 걸 미리 알 수 있게.
181
181
  // personal이면 생략(대부분의 ground가 personal이라 매번 실으면 잡음이다).
182
182
  if (p.org && p.org.kind === 'team') {
183
183
  out.org = p.org.slug;
@@ -335,7 +335,7 @@ export function registerTools(server, { api }) {
335
335
  'list_projects',
336
336
  {
337
337
  title: 'List grounds (projects)',
338
- description: 'Returns all grounds the authenticated user can access, with latest activity timestamp. Use this first to discover slugs for other tools. By default returns a summary view — each ground carries slug, name, isActive, transplanting, nodeCount, openBugs, seasonCount, nowSeasonLabel, latestActivityAt, plus a 200-char description excerpt. A ground that belongs to a team also carries org (the team slug) and role (owner/editor/viewer) — a viewer can read but every write tool returns 403 there. A ground with wiki pages also carries wikiCount — prose the tree cannot hold (conventions, decisions, glossary); read it with list_wiki. Pass view="full" for all fields (seedMeta — the ground\'s human-written intent: goal, endDate, budget, audience — plus typeCounts, raw metadata, timestamps); the icon base64 in metadata is always stripped (UI-only).',
338
+ description: 'Returns all grounds the authenticated user can access, with latest activity timestamp. Use this first to discover slugs for other tools. By default returns a summary view — each ground carries slug, name, isActive, transplanting, nodeCount, openBugs, seasonCount, nowSeasonLabel, latestActivityAt, plus a 200-char description excerpt. A ground that belongs to a team also carries org (the team slug) and role (owner/editor/reporter/viewer) — a viewer can read but every write tool returns 403 there; a reporter can only create_bug and update_bug. A ground with wiki pages also carries wikiCount — prose the tree cannot hold (conventions, decisions, glossary); read it with list_wiki. Pass view="full" for all fields (seedMeta — the ground\'s human-written intent: goal, endDate, budget, audience — plus typeCounts, raw metadata, timestamps); the icon base64 in metadata is always stripped (UI-only).',
339
339
  inputSchema: z.object({
340
340
  view: z.enum(['summary', 'full']).optional().describe('summary (default) for a compact list; full for every field.'),
341
341
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "umtri-mcp",
3
- "version": "1.5.2",
3
+ "version": "1.5.3",
4
4
  "description": "MCP server for Umtri — give your AI coding agent a persistent map of your project's structure, dependencies, and bugs.",
5
5
  "mcpName": "io.umtri/umtri",
6
6
  "keywords": [