Windows进程管理工具

一个轻量级的MCP服务器,为AI代理提供Windows进程和端口管理工具,支持跨shell的进程列表、终止、信息查询和端口查找等功能。

  • by lexandro
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 lexandro/win-taskman-mcp

使用说明

赢得任务人mcp

一个轻量级的MCP(模型上下文协议)服务器,为AI代理提供Windows进程和端口管理工具。不再脆弱 tasklist | findstr 或 netstat -ano 管道——只是可靠工作的结构化跨shell工具。

为什么?

人工智能代理在开发过程中经常需要管理进程——杀死卡住的开发服务器,找出阻塞端口的原因,或列出正在运行的服务。通过Windows上的Bash执行此操作是脆弱的: tasklist 输出解析中断, netstat 需要管道穿过 findstr,PowerShell命令存在引用问题。此MCP服务器提供干净、结构化的工具,无论shell如何,这些工具都能正常工作。

需求

  • Windows 10或更高版本 (使用Windows 10以来可用的Win32 API)
  • 转到1.25+(仅从源代码构建)

快速开始

下载二进制文件

预构建的二进制文件可在 发布 页面。

从源代码构建

git clone https://github.com/lexandro/win-taskman-mcp.git
cd win-taskman-mcp
go build -trimpath -ldflags="-s -w" -o win-taskman-mcp.exe .

在克劳德代码中注册

这 register 子命令会自动将服务器添加到Claude Code的配置中,无需手动编辑JSON。

# Register for a project (creates .mcp.json in the project root)
./win-taskman-mcp.exe register project /path/to/your/project

# Or register globally for all projects (updates ~/.claude.json)
./win-taskman-mcp.exe register user

就是这样——Claude Code将自动发现并使用流程管理工具。

手动配置

您也可以直接编辑配置文件:

{
  "mcpServers": {
    "win-taskman-mcp": {
      "command": "C:\\path\\to\\win-taskman-mcp.exe"
    }
  }
}

MCP工具

list_processes

列出正在运行的Windows进程。可选择按名称过滤。

参数 类型 必填 说明
filter string no 进程名称上不区分大小写的子字符串匹配
{ "filter": "node" }

答复:

pid:1234 name:node.exe ppid:5678
pid:2345 name:node.exe ppid:5678

结果以100个条目为限。使用 filter 缩小范围。

kill_process

通过PID终止Windows进程。随着 tree: true 整个进程树都死了——在Windows上, TerminateProcess 不会杀死儿童,因此开发服务器的孤儿工人将继续持有该端口。

参数 类型 必填 说明
pid number yes 要终止的进程ID
tree boolean no 同时杀死所有子进程
{ "pid": 1234, "tree": true }

答复:

Killed process tree of 1234 (3 processes)
pid:1234 name:cmd.exe
pid:5678 name:node.exe
pid:9012 name:esbuild.exe

get_process_info

获取一个进程的详细信息:名称、父PID、线程、内存使用情况、可执行路径和命令行。命令行告诉具有相同名称的多个进程(例如 node.exe).用途 ProcessCommandLineInformation (Windows 8.1+)--无需读取进程内存。

参数 类型 必填 说明
pid number yes 要检查的进程ID
{ "pid": 1234 }

答复:

pid:1234 name:node.exe ppid:880 threads:14 working_set_mb:120.3 private_mb:98.1
path:C:\Program Files\nodejs\node.exe
cmdline:"C:\Program Files\nodejs\node.exe" server.js --port 3000

无法读取的字段(受保护的系统进程)显示 (unavailable).

find_process_by_port

查找哪个进程正在使用TCP或UDP端口。扫描IPv4和IPv6表——仅绑定的开发服务器 [::] (在Windows上与Node.js/Bun常见)也可以找到。返回PID、进程名称、协议和连接状态。

参数 类型 必填 说明
port number yes 要查找的TCP或UDP端口号
{ "port": 3000 }

答复:

pid:1234 name:node.exe port:3000 proto:TCP state:LISTEN local:0.0.0.0 remote:0.0.0.0:0
pid:1234 name:node.exe port:3000 proto:TCP state:LISTEN local:::

UDP行没有状态或远程地址(无连接):

pid:5678 name:dnsmasq.exe port:5353 proto:UDP local:0.0.0.0

kill_process_by_port

使用TCP或UDP端口(IPv4和IPv6)终止进程。单步:找到进程并杀死它 tree: true 每个端口所有者的子进程也会死亡。

参数 类型 必填 说明
port number yes TCP或UDP端口号--使用此端口终止进程
tree boolean no 同时杀死每个端口所有者的所有子进程
{ "port": 3000, "tree": true }

答复:

Killed pid:1234 name:node.exe (was on port 3000)
Killed pid:5678 name:esbuild.exe (tree child)

代币效率

所有输出都旨在最大限度地减少上下文窗口的使用:

  • 紧凑键:值格式 — pid:1234 name:node.exe 而不是冗长的表格
  • 无装饰铬 --无方框图、横幅或冗余标题
  • 有限的结果 --最多100个进程,报告截断
  • 文本错误 — Error: access denied 不是堆栈跟踪
  • 工具注释 — list_processes, get_process_info,以及 find_process_by_port 声明 readOnlyHint,因此像Claude Code这样的MCP客户端可以在没有权限提示的情况下运行它们;kill工具声明 destructiveHint

建筑

  • main.go --入口点,CLI子命令调度
  • server/ --MCP服务器设置、工具注册(stdio传输)
  • tools/ --MCP工具处理程序(进程列表/终止/信息、端口查找/终止)
  • taskman/ -Windows任务管理核心(Win32 API调用通过 golang.org/x/sys/windows)
  • register/ — register Claude Code配置自动注册的子命令

沟通

  • 仅限标准MCP传输(无HTTP,无开放端口)
  • 记录到stderr,从不记录到stdout
  • 所有输出AI优化:紧凑按键:值格式,无装饰铬

发展

# Build
go build -trimpath -ldflags="-s -w" -o win-taskman-mcp.exe .

# Test
go test ./...

# Vet
go vet ./...

许可证

麻省理工学院