Token导航 LogoToken导航

MCP Server · 开发工具

Mc Punk

MCPunk是一款无需嵌入即可通过对话探索和理解代码库的工具,提供智能搜索和查询功能,适用于代码审查和跨项目协作。

stdio官方级别未说明来源级核验工具 0
智能搜索代码分析PythonClaude代码审查Claude Desktop

快速开始

作者 / 组织
jurasofish
提供方
jurasofish
运行时
Python

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

56

仓库热度

收录来源

3 个

MCP World

选型结论

Mc Punk 属于开发工具类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

stdio

认证方式

无需认证

部署方式

仅本地运行

安装与配置

安装命令

uvx mcpunk\",

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

MCPunk🤖

通过LLM工具智能搜索您的代码,无需嵌入即可与您的代码库聊天。

MCPunk允许您通过对话探索和理解代码库。其工作原理如下:

  1. 将文件分解为逻辑块(函数、类、markdown部分)
  2. 提供LLM工具来搜索和查询这些块
  3. 让LLM找到它需要的特定代码来回答你的问题

没有嵌入,没有复杂的配置——只有清晰、可审计的搜索,你可以看到和指导。 它与Claude Desktop或其他任何设备配合使用都很好 主控程序 客户。

构建时考虑了以下因素

  • 上下文为王 -LLM可能很棒,但前提是提供适当的上下文。
  • 上下文是宝贵的 -LLM需要上下文,但他们不能处理太多。

滑稽!MCPunk是RAG,它固有地提供LLM上下文 提示,使LLM能够真正缩小相关内容的范围。

  • 循环中的人类 - 你 可以准确地看到LLM考虑了哪些数据

以及它是如何找到它的, 你 可以跳进聊天室,随时随地指导事情。

设置

_这些是Claude Desktop的说明,但MCPunk可以在任何使用MCP的地方使用。_

  1. 安装uv
  2. 把下面的片段放在你的 claude_desktop_config.json

(关于……的细节 claude_desktop_config.json 包括位置)

  1. 重新启动克劳德桌面 你应该在一个小程序之后看到可用的工具

延迟,如下面的截图

  1. 闲谈:“嘿,伙计,你能设置~/git/mcpunk项目并告诉我python文件是如何分块的吗?”

(_"command": "uvx", 可能不起作用,您可能需要使用例如。 "command": "/Users/michael/.local/bin/uvx",_)

{
  "mcpServers": {
    "MCPunk": {
      "command": "uvx",
      "args": ["mcpunk"]
    }
  }
}

!

使用示例

回答有关代码库的问题

  • \[用户\] 嘿,朋友,你能帮我设置~/git/mcpunk仓库吗

了解mcpunk用户将如何获得当前的git diff 检查了他们用mcpunk配置的repo中的分支

  • \[克劳德\] 呼叫 configure_project
  • \[克劳德\] 呼叫 list_all_files_in_project
  • \[克劳德\] 呼叫 find_files_by_chunk_content
  • \[克劳德\] …使用MCPunk总共进行了21次工具调用。
  • \[克劳德\] 现在我了解了git diff功能在mcpunk中的工作原理。

让我总结一下用户如何获取当前签出分支的git diff: 要获取使用mcpunk配置的repo中当前签出的分支的git diff: 1. 首先,用户需要使用configure_project工具配置mcpunk以与他们的项目一起工作 1. 查看最近检查了哪些分支(以确定要与哪些分支进行比较) 1. 然后,获取当前分支(HEAD)和参考分支之间的差异 这将显示当前分支(HEAD)和指定参考分支之间的差异。 ref参数应该是您要比较的基分支的名称(如“main”或“develop”)。

  • \[用户\] 干得好,伙计!

公关评论

  • \[用户\] 嘿,朋友,你能设置一下~/git/mcpunk仓库吗

看看当前的分支机构与 scratch/1.5

  • \[克劳德\] 设置~/git/mcpunk并调用 diff_with_ref 供参考 scratch/1.5
  • \[克劳德\] 我看到你做了一些更改,主要是添加了一个新的测试

文件 tests/test_git_analysis.py...

  • \[用户\] 这如何融入代码库的其余部分?
  • \[克劳德\] 进行5次工具调用,按块列出文件、列出块、,

获取块详细信息

  • \[克劳德\] 我明白了-代码解析git reflog输出以跟踪最近的情况

检查了分支机构。主函数get_recent_branches接受一个repo路径 并使用_branches_from_reflog返回最后N个已签出的分支 作为解析原始reflog输出的助手。

  • \[用户\] 如果你赶时间,不得不指示别人审查这项工作,

你会引导他们看什么?请概述独立的工作

  • \[克劳德\]

- 这 split("to ")[-1] 在牧场,弗洛姆看起来很脆弱 - 测试数据只显示简单的分支名称,那么空格/特殊字符呢? - example_reflog是否代表实际的git reflog输出? - 我们是否在测试实际的git行为?

  • \[用户\] 你是最棒的!

跨多个代码库工作

你可以让你的法学硕士设置多个项目,它可以自由查询 穿过他们。如果一个依赖于另一个,并且它们处于不同的存储库中,那就很方便了。 在这种情况下,LLM应该通过进口来认识到这一点。

什么是MCPunk和其他背景

MCPunk是一个MCP服务器,提供工具

  • 配置一个项目,它是一个文件目录。配置后,文件

将被拆分为逻辑块。MCPunk是为代码构建的,但实际上 它可以应用于任何文档,如果你愿意,甚至可以应用于图像。

  • 在项目中搜索包含特定文本的文件
  • 在包含特定文本的文件中搜索块
  • 查看特定块的完整内容

除此之外,它还提供了一些内置的分块器。最成熟的是 Python分块器。

MCPunk不必用于对话。它可以用作代码的一部分 例如,在CI管道中进行审查。这真的是一般的RAG。

sequenceDiagram
    participant User
    participant Claude as Claude Desktop
    participant MCPunk as MCPunk Server
    participant Files as File System

    Note over User,Files: Setup Phase
    User->>Claude: Ask question about codebase
    Claude->>MCPunk: configure_project(root_path, project_name)
    MCPunk->>Files: Scan files in root directory

    Note over MCPunk,Files: Chunking Process
    MCPunk->>MCPunk: For each file, apply appropriate chunker:
    MCPunk->>MCPunk: - PythonChunker: functions, classes, imports
    MCPunk->>MCPunk: - MarkdownChunker: sections by headings
    MCPunk->>MCPunk: - VueChunker: template/script/style sections
    MCPunk->>MCPunk: - WholeFileChunker: fallback
    MCPunk->>MCPunk: Split chunks >10K chars into parts

    MCPunk-->>Claude: Project configured with N files

    Note over User,Files: Navigation Phase
(LLM freely uses all these tools repeatedly to drill in)
    Claude->>MCPunk: list_all_files_in_project(project_name)
    MCPunk-->>Claude: File tree structure

    Claude->>MCPunk: find_files_by_chunk_content(project_name, "search term")
    MCPunk-->>Claude: Files containing matching chunks

    Claude->>MCPunk: find_matching_chunks_in_file(project_name, file_path, "search term")
    MCPunk-->>Claude: List of matching chunk IDs in file

    Claude->>MCPunk: chunk_details(chunk_id)
    MCPunk-->>Claude: Full content of specific chunk

    Claude->>User: Answer based on relevant code chunks

    Note over User,Files: Optional Git Analysis
    Claude->>MCPunk: list_most_recently_checked_out_branches(project_name)
    MCPunk->>Files: Parse git reflog
    MCPunk-->>Claude: List of recent branches

    Claude->>MCPunk: diff_with_ref(project_name, "main")
    MCPunk->>Files: Generate git diff
    MCPunk-->>Claude: Diff between HEAD and reference

漫游RAG速成课程

看

  • https://arcturus-labs.com/blog/2024/11/21/roaming-rag--make-_模型_-找到答案/
  • https://simonwillison.net/2024/Dec/6/roaming-rag/

漫游RAG的要点是

  1. 将内容(代码库、pdf文件等)分解为“块”。

每个块都是一个“小”逻辑项,就像一个函数 markdown文档或代码文件中的所有导入。

  1. 提供LLM工具来搜索块。MCPunk通过提供工具来实现这一点

搜索包含特定文本块的文件,并列出 特定块的完整内容。

与更传统的“矢量搜索”RAG相比:

  • LLM必须深入挖掘以找到块,并且自然会意识到它们的

更广泛的背景(比如它们所在的文件)

  • 块应该始终是连贯的。就像一个完整的功能。
  • 你可以准确地看到LLM在搜索什么,通常是

很明显,如果它搜索不好,你可以通过建议来帮助它 改进的搜索词。

  • 需要精确的搜索匹配。MCPunk不提供任何类型的模糊搜索。

块

块是文件的一个子部分。例如,

  • 一个python函数
  • 降价部分
  • 从Python文件导入的所有内容

块是通过以下方式从文件创建的 碎料机, MCPunk内置了一些。

在MCPunk中设置项目时,它会遍历所有文件并应用 LLM可以使用工具(1)查询文件 包含包含特定文本的块,(2)查询特定文本中的所有块 以及(3)获取块的全部内容。

这一基本基础使克劳德能够有效地驾驭相对较大的 从广泛搜索相关文件开始,缩小搜索范围 在相关领域。

内置分块器:

  • PythonChunker 将内容分为类、函数、文件级导入,

以及文件级语句(例如全局变量)。适用于以结尾的文件 .py

  • VueChunker 将块分为“模板”、“脚本”、“样式”块或其他任何块

最重要的 .... 项目存在。适用于以结尾的文件 .vue

  • MarkdownChunker 把东西分成标记部分(按标题)。

适用于以结尾的文件 .md

  • WholeFileChunker 回退块器,为整个文件创建一个块。

适用于任何文件。

任何长度超过10k个字符(可配置)的块都会自动拆分为 多个块,名称后缀为 part1, part2等等。这很有帮助 避免破坏上下文,同时仍然允许对块进行合理的导航。

自定义块

每种类型的文件(例如Python与C)都需要一个自定义分块器。 MCPunk附带了一些 内置. 如果没有特定的分块器与文件匹配,则默认分块器只会拍打 将整个文件合并为一个块。

目前建议的添加块的方法是分叉这个项目并添加它们, 并运行MCPunk 发展. 添加分块器

可以为模块实现某种插件系统 宣传他们有定制的分块器供MCPunk使用,比如pytest 插件系统,但目前没有计划实现这一点(除非 有人想这么做)。

局限性

  • 有时LLM在搜索方面很差。例如,搜索“依赖关系”,缺失

术语“依赖关系”。阻止事情的空间。

  • 有时LLM会试图找到一段特定的关键代码,但失败了

找到它,然后在不承认它的上下文意识有限的情况下继续。

  • “大型”项目没有经过很好的测试。一个包含约1000个Python文件的项目,其中包含

总计约25万LoC运行良好。设置项目需要大约5秒。作为代码库 尺寸增加,执行初始组块的时间也会增加,而且很可能 将需要更复杂的搜索。代码通常不是 在编写时考虑了大量的代码库——你会看到所有数据 存储在内存中,通过迭代所有数据进行搜索,各种 需要基本优化的东西。

  • 小项目最好将所有代码连接起来

融入上下文。MCPunk实际上只适用于不切实际的情况。

  • 在某些情况下,显然最好让法学硕士掌握整个

文件,而不是让它一次挑出一个块。MCPunk没有机制 为了这个。在实践中,我没有发现这是一个大问题。

配置

可以通过前缀为的环境变量配置各种内容 MCPUNK_. 有关可用选项,请参见 settings.py -这些已加载 从env变量通过 Pydantic设置.

例如,要配置 include_chars_in_response 选项:

{
  "mcpServers": {
    "MCPunk": {
      "command": "uvx",
      "args": ["mcpunk"],
      "env": {
        "MCPUNK_INCLUDE_CHARS_IN_RESPONSE": "false"
      }
    }
  }
}

路线图和发展状况

MCPunk被认为接近功能完成。 它没有广泛的用途,作为用户,你可能会遇到错误或 粗糙的边缘。欢迎Bug报告https://github.com/jurasofish/mcpunk/issues

路线图创意

  • 添加一组提示以帮助使用MCPunk。没有真正的“解释如何制作

“给外星人煎饼”类型的提示确实会让事情变得有点平淡。

  • 在提取python模块级语句时包含模块级注释。
  • 可能是为了搜索
  • 将整个“项目”概念更改为不需要文件实际存在——这

导致允许在项目内使用“虚拟”文件。 - 考虑将文件从具有路径更改为具有URI,这样可以像 file://... / http[s]:// / gitdiff:// /等等任意URI

  • git diffs的块化。目前,有一个工具可以获取整个差异

可能非常大。相反,该工具可以更改为 add_diff_to_project 它把文件放在 gitdiff:// URI或位于某个假路径下

  • 缓存项目,这样就不需要每次重新解析所有文件

重新启动MCP客户端。这可能很棘手,因为对分块器中的代码进行更改 将使缓存无效。可能不会被优先考虑,因为事实并非如此 对于我的用例来说很慢。

  • 用户可能能够提供自定义代码来执行分块

类似于 pytest插件

  • 像树保姆这样的东西可能会被用于更通用的分块器
  • 跟踪发送/接收的字符,最好是通过聊天。
  • 状态、日志等通过聊天

发展

看见 run_mcp_server.py.

如果你按照以下方式设置claude桌面,那么你可以重新启动它以查看最新 当您从本地版本的repo处理MCPunk时,会发生变化。

{
  "mcpServers": {
    "MCPunk": {
      "command": "/Users/michael/.local/bin/uvx",
      "args": [
        "--from",
        "/Users/michael/git/mcpunk",
        "--no-cache",
        "mcpunk"
      ]
    }
  }
}
测试、Linting、CI

请参阅 Makefile 以及github操作工作流。

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

代码分析Python本地部署智能搜索RAG代码审查跨项目协作

支持客户端

Claude DesktopClaude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Mc Punk

MCP World · 本页

0stdio有3 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Mc Punk 怎么安装?

公开资料给出的安装命令是 uvx mcpunk\",,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Mc Punk 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Mc Punk 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Mc Punk 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Mc Punk 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP