Skip to main content
Glama
rickey-cpu

tfs-mcp-server

by rickey-cpu

tfs-mcp-server

MCP server kết nối trực tiếp với TFS (Team Foundation Server) on-premise qua REST API, cho phép Claude đọc/ghi work item, backlog, sprint, và Pull Request mà không cần copy/paste thủ công.

Lưu ý về phiên bản: bạn nhắc "TFS 2027" — hiện tại chưa có phiên bản TFS nào tên như vậy (dòng TFS dừng ở 2018, sau đó đổi tên thành Azure DevOps Server 2019/2020/2022). Có thể ý bạn là TFS 2017 hoặc TFS 2018. Server này được viết để dùng với REST API chuẩn của TFS 2017/2018 (và tương thích ngược với Azure DevOps Server các bản sau nếu chỉnh TFS_API_VERSION). Nếu bạn cho biết đúng phiên bản, mình chỉnh lại api-version mặc định cho khớp.

Yêu cầu

  • Node.js 18 trở lên, chạy trên máy có thể truy cập mạng nội bộ tới server TFS

  • TFS đã bật Personal Access Token (PAT) — có từ TFS 2017 Update 1 trở lên. Vào TFS: góc trên phải → SecurityPersonal access tokens → tạo token mới với quyền:

    • Work Items: Read & write

    • Code: Read

    • Project and Team: Read

Nếu TFS của bạn chỉ hỗ trợ NTLM/Windows Authentication (chưa bật được PAT), báo lại — code hiện tại cần chỉnh lại phần xác thực trong src/tfsClient.ts bằng thư viện hỗ trợ NTLM (ví dụ axios-ntlm) thay vì Basic Auth với PAT.

Related MCP server: spike-mcp

Cài đặt

npm install
npm run build

Cấu hình

Copy .env.example thành .env và điền thông tin:

cp .env.example .env
TFS_BASE_URL=http://tfs.congty.local:8080/tfs
TFS_COLLECTION=DefaultCollection
TFS_DEFAULT_PROJECT=YourProject
TFS_PAT=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TFS_API_VERSION=4.1

Nếu không chắc TFS_API_VERSION, cứ thử 4.1 trước — nếu tool báo lỗi HTTP 400/404 khi gọi, hạ xuống 3.2 rồi 2.3 (đây là các phiên bản REST API tương ứng TFS 2017).

Đăng ký với Claude

Claude Code

Thêm vào file .mcp.json ở thư mục project (hoặc ~/.claude.json cho toàn cục):

{
  "mcpServers": {
    "tfs": {
      "command": "node",
      "args": ["/duong-dan-tuyet-doi-toi/tfs-mcp-server/dist/index.js"],
      "env": {
        "TFS_BASE_URL": "http://tfs.congty.local:8080/tfs",
        "TFS_COLLECTION": "DefaultCollection",
        "TFS_DEFAULT_PROJECT": "YourProject",
        "TFS_PAT": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "TFS_API_VERSION": "4.1"
      }
    }
  }
}

Claude Desktop

Mở claude_desktop_config.json (Settings → Developer → Edit Config), thêm mục tương tự vào mcpServers.

Sau khi thêm, khởi động lại Claude Code/Desktop — các tool tfs_* sẽ xuất hiện trong danh sách tool khả dụng.

Danh sách tool

Tool

Chức năng

tfs_query_wiql

Chạy truy vấn WIQL tùy chỉnh

tfs_get_work_items

Lấy chi tiết work item theo ID

tfs_get_backlog

Lấy danh sách work item trong một sprint/iteration

tfs_get_iterations

Lấy danh sách sprint theo cấp project, trả iterationPath dùng trực tiếp cho backlog

tfs_list_pull_requests

Liệt kê Pull Request theo trạng thái

tfs_get_pull_request

Chi tiết một Pull Request

tfs_get_pr_changes

Danh sách file thay đổi trong PR

tfs_create_work_item

Tạo work item mới: User Story, Task, Bug, Test Case...

tfs_add_work_item_comment

Thêm comment vào work item (thao tác ghi dữ liệu)

Các tool này khớp trực tiếp với input mà các skill trong bộ em-toolkit (sprint-retro, sprint-planning-summary, pr-review-checklist, bug-triage) cần — khi cả hai được cài cùng lúc, Claude có thể tự lấy dữ liệu từ TFS thay vì bạn phải copy/paste.

Tạo work item

Tool tfs_create_work_item dùng REST API JSON Patch của TFS/Azure DevOps. Ví dụ tạo User Story:

{
  "workItemType": "User Story",
  "title": "[SAMPLE] Báo cáo tổng kết vòng lặp có đủ metric",
  "description": "User story mẫu để kiểm tra báo cáo velocity, bug ratio và chất lượng kiểm thử.",
  "areaPath": "EngineeringManagerToolkit",
  "iterationPath": "EngineeringManagerToolkit\\Alpha",
  "assignedTo": "user@example.com",
  "tags": ["em-toolkit-sample", "reporting"],
  "fields": {
    "Microsoft.VSTS.Scheduling.StoryPoints": 8,
    "Microsoft.VSTS.Common.Priority": 1
  }
}

Ví dụ tạo Bug:

{
  "workItemType": "Bug",
  "title": "[SAMPLE] Báo cáo thiếu phân tích nguyên nhân bug",
  "iterationPath": "EngineeringManagerToolkit\\Alpha",
  "tags": ["em-toolkit-sample", "bug-ratio"],
  "fields": {
    "Microsoft.VSTS.Common.Severity": "2 - High",
    "Microsoft.VSTS.Common.Priority": 1
  }
}

Có thể truyền validateOnly: true để kiểm tra request nếu phiên bản TFS hỗ trợ, và truyền thêm field tùy biến qua object fields theo reference name.

Bảo mật

  • Không commit file .env — đã có PAT thật trong đó. Thêm .env vào .gitignore.

  • PAT nên đặt hạn dùng ngắn (30-90 ngày) và chỉ cấp đúng quyền cần thiết.

  • Server này chạy local trên máy bạn (qua stdio), không có thành phần nào gửi dữ liệu ra ngoài ngoại trừ chính TFS server bạn cấu hình.

Gỡ lỗi thường gặp

  • 401 Unauthorized: kiểm tra PAT còn hạn không, có đúng quyền không, và TFS đã bật tính năng PAT chưa.

  • 404 Not Found: kiểm tra TFS_COLLECTION, tên project, tên repository có đúng chính xác (phân biệt hoa/thường và khoảng trắng) không.

  • 400 Bad Request ở các tool liên quan work item: thường do TFS_API_VERSION không khớp phiên bản server — thử các giá trị 2.3 / 3.0 / 3.2 / 4.1.

Available Tools

8 tools
tfs_add_work_item_commentA

Them mot ghi chu (comment) vao truong History cua work item. Day la thao tac GHI DU LIEU len TFS, chi goi khi nguoi dung xac nhan ro rang muon them comment nay.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID work item
commentYesNoi dung comment can them

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses write operation and target field, but without annotations, description carries full burden. Missing details on permissions, idempotency, rate limits, or response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with action. No extraneous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple two-parameter tool, but lacks behavioral details like success/error handling or permissions. With no annotations, some gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with basic descriptions. Description adds context that comment goes into History field, but does not significantly enhance parameter understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (adding a comment), the target resource (work item's History field), and emphasizes it is a write operation, distinguishing it from sibling read tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to call ('only when user clearly confirms'), providing usage context. Lacks explicit when-not conditions, but sufficient given tool uniqueness among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_get_backlogA

Lay danh sach work item (User Story/Task/Bug) trong mot iteration/sprint cu the cua mot team, dung de tong hop sprint planning hoac sprint retro.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT
iterationPathYesDuong dan iteration day du, vi du 'MyProject\\Sprint 24'. Xem gia tri chinh xac qua tool tfs_get_iterations.
workItemTypesNoLoc theo loai work item, vi du ['User Story','Bug','Task']. Bo trong de lay tat ca.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It only states the action and use case, but does not disclose behavioral traits such as read-only nature, pagination, sorting, or any side effects. The 'get' prefix implies a read operation, but no explicit confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and purpose. Every word is meaningful with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list retrieval tool, the description is adequate but lacks information about the return format (e.g., fields, ordering). Given no output schema, this is a minor gap. The sibling tools and schema partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already described. The tool description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves work items (User Story/Task/Bug) for a specific iteration/sprint of a team, with explicit use cases for sprint planning and retro. This distinguishes it from sibling tools like tfs_get_work_items (likely by ID) and tfs_query_wiql (general query).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (sprint planning/retro) but does not explicitly exclude alternative tools or mention when not to use it. However, the intended usage is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_get_iterationsA

Lay danh sach iteration/sprint (ten, duong dan, ngay bat dau/ket thuc) cua mot team trong project. Dung de tim iterationPath chinh xac truoc khi goi tfs_get_backlog.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYesTen team trong TFS, vi du 'MyProject Team'
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool as a read operation (get list) but does not explicitly state it is read-only, nor does it disclose any other behavioral traits such as authorization needs, rate limits, or side effects. The description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences. The first sentence states the purpose, and the second provides usage guidance. No wasted words, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema, no nested objects), the description is fairly complete: it specifies the returned fields and the primary use case. It does not mention pagination or filtering, but for this tool, that is acceptable. It adequately informs the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters already described in the input schema (team and project). The description does not add any new meaning beyond what the schema provides, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'lay danh sach' (list) and resource 'iteration/sprint', and specifies the returned fields (name, path, dates). It also distinguishes itself from sibling tools by stating its use as a precursor to tfs_get_backlog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states that the tool is used to find the exact iterationPath before calling tfs_get_backlog, providing clear when-to-use guidance. It does not mention when not to use it or alternative tools, but the context is sufficient for basic usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_get_pr_changesA

Lay danh sach file thay doi (them/sua/xoa) trong iteration moi nhat cua mot Pull Request. Dung de xem PR thay doi nhung file nao truoc khi review chi tiet tung file.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT
repositoryIdYesTen hoac ID cua git repository trong TFS
pullRequestIdYesID cua Pull Request

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must convey behavioral traits. It mentions the tool retrieves the latest iteration, indicating a read operation, but does not disclose authorization needs, rate limits, or error conditions. Adds some transparency but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The purpose is stated upfront, and the usage hint follows efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, yet the description does not explain the return format (e.g., file paths, change types). The 'latest iteration' limitation could be ambiguous. For a tool with these gaps, the description should compensate with more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter having a description. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists changed files (add/edit/delete) in the latest iteration of a pull request, differentiating it from sibling tools like tfs_get_pull_request which likely returns PR metadata, and tfs_list_pull_requests which lists PRs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context (view files before detailed review) but does not explicitly state when not to use it or name alternatives. It implies this tool is for the latest iteration only, which is a constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_get_pull_requestA

Lay chi tiet mot Pull Request cu the: mo ta, nguoi tao, reviewer, trang thai. Dung truoc khi review noi dung PR.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT
repositoryIdYesTen hoac ID cua git repository trong TFS
pullRequestIdYesID cua Pull Request

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It accurately indicates what is returned (description, creator, reviewer, status) and implies read-only behavior. However, it lacks details on error conditions, permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, no redundancy. The main action is front-loaded, making it easy for an agent to quickly understand the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple fetch tool, the description combined with 100% schema coverage is fairly complete. It explains what the tool returns and when to use it. A slight deduction for not specifying the output format, but acceptable given typical MCP expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with descriptions. The tool description adds no additional parameter meaning beyond what the schema already provides, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (get) and resource (specific Pull Request), lists key fields (description, creator, reviewer, status), and distinguishes from sibling tools like tfs_get_pr_changes and tfs_list_pull_requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using this tool before reviewing PR content ('Dung truoc khi review noi dung PR'), providing clear context. It doesn't explicitly mention when not to use, but the sibling tools are implicitly differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_get_work_itemsA

Lay chi tiet cua mot hoac nhieu work item theo ID (title, state, assigned to, story point...). Dung sau khi da co danh sach ID tu tfs_query_wiql hoac tfs_get_backlog.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesDanh sach ID work item can lay chi tiet
fieldsNoDanh sach field can lay, vi du ['System.Title','System.State','System.AssignedTo','Microsoft.VSTS.Scheduling.StoryPoints']. Bo trong de lay field mac dinh.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry behavioral disclosure. It indicates a read operation retrieving details like title, state, assigned to, and story points. However, it lacks information on behavior such as error handling, result format, authentication, or rate limits, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long: the first defines the main purpose, the second gives usage context. It is front-loaded and contains no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no output schema), the description covers the core functionality and usage hint. It could be improved by mentioning the return structure, but the provided field examples compensate somewhat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds minimal value beyond the input schema. It exemplifies fields but does not provide new constraints or interpretations for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: fetching work item details by ID (title, state, assigned to, story point). It distinguishes from siblings by explicitly mentioning use after tfs_query_wiql or tfs_get_backlog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context: 'Use after having a list of IDs from tfs_query_wiql or tfs_get_backlog.' This gives clear when-to-use guidance and implied prerequisites, though it does not explicitly list when not to use or alternative tools for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_list_pull_requestsA

Lay danh sach Pull Request cua mot git repository trong TFS, loc theo trang thai (active/completed/abandoned). Dung khi can tong hop cac PR dang mo de review.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoTrang thai PR can locactive
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT
repositoryIdYesTen hoac ID cua git repository trong TFS

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits beyond the input schema. It fails to mention if results are paginated, what fields are returned, or any authorization needs. The description carries the full burden but adds little transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two-sentence description is concise and front-loaded. First sentence states the action, second sentence gives usage hint. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 3 parameters and no output schema, the description covers purpose and usage but lacks return value details (e.g., what fields are in each PR object). Contextually adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes all parameters. The description adds no additional meaning beyond the schema, e.g., no format constraints or usage nuances. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists pull requests for a TFS repository with status filtering. It implicitly distinguishes from siblings like tfs_get_pull_request (single PR) and tfs_get_pr_changes (PR changes), though no explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description includes a usage hint 'Use when need to summarize open PRs for review', giving context for when to use. Does not explicitly mention when not to use or alternatives, but the hint is helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tfs_query_wiqlA

Chay truy van WIQL (Work Item Query Language) tren TFS, tra ve danh sach ID work item khop dieu kien. Dung khi can loc work item theo dieu kien tuy chinh khong co san trong cac tool khac.

ParametersJSON Schema
NameRequiredDescriptionDefault
wiqlYesCau truy van WIQL, vi du: "SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType]='Bug' AND [System.State]<>'Closed'"
projectNoTen project TFS, bo trong neu dung TFS_DEFAULT_PROJECT

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only mentions output (list of IDs) but omits whether it is read-only, required permissions, or any side effects, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no unnecessary words. Every sentence adds value, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple query tool, the description covers the basic purpose and output. However, it lacks details on error handling, pagination, or limitations, which would be helpful given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter descriptions are provided, so the description adds little beyond the schema. It offers context about custom conditions but does not significantly enhance understanding of the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes WIQL queries and returns matching work item IDs. It distinguishes itself from sibling tools by highlighting custom conditions not available in other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using this tool for custom filtering not available in other tools, providing usage context. However, it does not explicitly state when to avoid using it or list specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedtfs_add_work_item_comment
    • First observedtfs_get_backlog
    • First observedtfs_get_iterations
    • First observedtfs_get_pr_changes
    • First observedtfs_get_pull_request
    • First observedtfs_get_work_items
    • First observedtfs_list_pull_requests
    • First observedtfs_query_wiql

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct aspect of TFS: work items, backlog, iterations, pull requests, WIQL queries. No overlapping functionality detected.

Naming Consistency5/5

All tools follow a consistent 'tfs_<verb>_<noun>' pattern with snake_case, e.g., tfs_add_work_item_comment, tfs_get_backlog. Predictable and clear.

Tool Count5/5

8 tools cover the main TFS operations without redundancy. The number feels appropriate for the domain.

Completeness3/5

The set supports querying and reading (backlog, iterations, work items, PRs) and adding comments, but lacks create/update/delete work item tools, which are notable gaps.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/rickey-cpu/tfs-mcp-server'

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