Token导航 LogoToken导航TokenDH.com
Semantic Code MCP logo
开发工具stdio官方级别未说明来源级核验

Semantic Code MCP

MCP Server

一个基于嵌入向量的语义代码搜索服务,支持Python、Rust和Markdown,通过AST分析和向量化实现高效的代码检索。

工具数

3

提示词数

0

GitHub Stars

2

资源数

0
代码搜索开发工具PythonClaude向量数据库Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

vrppaul

提供方

vrppaul

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx semantic-code-mcp

详细介绍

语义代码mcp

为Claude code提供语义代码搜索的MCP服务器。它不是迭代grep/glob,而是用嵌入对代码库进行索引,并按含义返回排名结果。

支持 python, ,以及 标记语言 --计划使用更多语言。

运作原理

Claude Code ──(MCP/STDIO)──▶ semantic-code-mcp server
                                    │
                    ┌───────────────┼───────────────┐
                    ▼               ▼               ▼
              AST Chunker      Embedder        LanceDB
             (tree-sitter)  (sentence-trans)  (vectors)
  1. 组块 --树状图将源文件解析为函数、类、方法、结构、特征、markdown部分等。
  2. 嵌入 --句子变换器对每个块进行编码(全MiniLM-L6-v2,384d)
  3. 存储 --存储在LanceDB中的向量(嵌入式,如SQLite)
  4. 搜索 --基于近因提升的混合语义+关键字搜索

索引是增量的(基于mtime),并使用 git ls-files 用于快速文件发现。嵌入模型在第一个查询时延迟加载。

安装

macOS/Windows

PyPI在这些平台上只提供CPU火炬,因此不需要额外的标志(安装约1.7GB)。

uvx semantic-code-mcp

Claude代码集成:

claude mcp add --scope user semantic-code -- uvx semantic-code-mcp

Linux

\[!重要\] 没有 --index 标志,PyPI安装CUDA捆绑火炬(~3.5GB)。除非你需要GPU加速(你不需要——嵌入式在CPU上运行),否则使用下面的命令获取仅CPU的构建(~1.7GB)。
uvx --index pytorch-cpu=https://download.pytorch.org/whl/cpu semantic-code-mcp

Claude代码集成:

claude mcp add --scope user semantic-code -- \
  uvx --index pytorch-cpu=https://download.pytorch.org/whl/cpu semantic-code-mcp

Claude Desktop / other MCP clients (JSON config)

{
  "mcpServers": {
    "semantic-code": {
      "command": "uvx",
      "args": ["--index", "pytorch-cpu=https://download.pytorch.org/whl/cpu", "semantic-code-mcp"]
    }
  }
}

在macOS/Windows上,您可以省略 --indexpytorch-cpu args。

更新中

uvx 缓存已安装的版本。要获取最新版本,请执行以下操作:

uvx --upgrade semantic-code-mcp

或者在MCP配置中插入特定版本:

claude mcp add --scope user semantic-code -- uvx semantic-code-mcp@0.2.0

MCP工具

search_code

按含义搜索代码,而不仅仅是文本匹配。首次搜索时自动索引。

参数类型默认值说明
querystr必填您要查找的内容的自然语言描述
project_pathstr必需项目根目录的绝对路径
limitint10最大结果数

返回排名结果 file_path, line_start, line_end, name, chunk_type, content,以及 score.

index_codebase

为语义搜索的代码库建立索引。仅处理新文件和更改的文件,除非 force=True.

参数类型默认值说明
project_pathstr必需项目根目录的绝对路径
forceboolFalse重新索引所有文件,无论是否更改

index_status

检查项目的索引状态。

参数类型默认值说明
project_pathstr必需项目根目录的绝对路径

退货 is_indexed, files_count,以及 chunks_count.

配置

所有设置都是环境变量 SEMANTIC_CODE_MCP_ 前缀(通过pydantic设置):

变量默认值描述
SEMANTIC_CODE_MCP_CACHE_DIR~/.cache/semantic-code-mcp索引的存储位置
SEMANTIC_CODE_MCP_LOCAL_INDEXfalse将索引存储在 .semantic-code/ 在每个项目中
SEMANTIC_CODE_MCP_EMBEDDING_MODELall-MiniLM-L6-v2句子转换模型
SEMANTIC_CODE_MCP_DEBUGfalse启用调试日志记录
SEMANTIC_CODE_MCP_PROFILEfalse启用pyinstrument分析

通过传递环境变量 env MCP配置中的字段:

{
  "mcpServers": {
    "semantic-code": {
      "command": "uvx",
      "args": ["semantic-code-mcp"],
      "env": {
        "SEMANTIC_CODE_MCP_DEBUG": "true",
        "SEMANTIC_CODE_MCP_LOCAL_INDEX": "true"
      }
    }
  }
}

或者使用Claude Code CLI:

claude mcp add --scope user semantic-code \
  -e SEMANTIC_CODE_MCP_DEBUG=true \
  -e SEMANTIC_CODE_MCP_LOCAL_INDEX=true \
  -- uvx semantic-code-mcp

技术栈

组件选择基本原理
MCP框架FastMCPPython装饰器,STDIO传输
嵌入语句转换器本地,无API成本,质量好
Vector StoreLanceDB嵌入式(如SQLite),无需服务器
分块树形图基于AST,尊重代码结构

发展

uv sync                            # Install dependencies
uv run python -m semantic_code_mcp # Run server
uv run pytest                      # Run tests
uv run ruff check src/             # Lint
uv run ruff format src/            # Format

预提交钩子强制执行linting、格式化和类型检查(ty),安全扫描(bandit),以及 约定式提交.

释放

版本是从git标签自动派生出来的(hatch-vcs)--中没有硬编码版本 pyproject.toml.

git tag v0.2.0
git push origin v0.2.0

CI构建包,发布到PyPI,并创建带有自动生成注释的GitHub Release。

添加新语言

分块器系统旨在使添加语言变得简单。每种语言都需要:

  1. 树保姆语法包 (例如。 tree-sitter-javascript)
  2. 分块子类 它遍历AST并提取有意义的块

步骤:

uv add tree-sitter-mylang

创建 src/semantic_code_mcp/chunkers/mylang.py:

from enum import StrEnum, auto

import tree_sitter_mylang as tsmylang
from tree_sitter import Language, Node

from semantic_code_mcp.chunkers.base import BaseTreeSitterChunker
from semantic_code_mcp.models import Chunk, ChunkType

class NodeType(StrEnum):
    function_definition = auto()
    # ... other node types

class MyLangChunker(BaseTreeSitterChunker):
    language = Language(tsmylang.language())
    extensions = (".ml",)

    def _extract_chunks(self, root: Node, file_path: str, lines: list[str]) -> list[Chunk]:
        chunks = []
        for node in root.children:
            match node.type:
                case NodeType.function_definition:
                    name = node.child_by_field_name("name").text.decode()
                    chunks.append(self._make_chunk(node, file_path, lines, ChunkType.function, name))
                # ... other node types
        return chunks

在中注册 src/semantic_code_mcp/container.py:

from semantic_code_mcp.chunkers.mylang import MyLangChunker

def get_chunkers(self) -> list[BaseTreeSitterChunker]:
    return [PythonChunker(), RustChunker(), MarkdownChunker(), MyLangChunker()]

CompositeChunker 自动按文件扩展名处理调度。使用 BaseTreeSitterChunker._make_chunk() 以实现一致的块结构。看 chunkers/python.pychunkers/rust.py 查看完整示例。

项目结构

  • src/semantic_code_mcp/chunkers/ --语言分块器(base.py, composite.py, python.py, rust.py, markdown.py)
  • src/semantic_code_mcp/services/ --IndexService(扫描/块/索引),SearchService(搜索+自动索引)
  • src/semantic_code_mcp/indexer.py --嵌入+存储管道
  • docs/decisions/ --架构决策记录
  • TODO.md --史诗与规划
  • CHANGELOG.md --已完成的工作(保持变更日志格式)
  • .claude/rules/ --AI代理的上下文特定编码规则

许可证

麻省理工学院

目录标签

目录标签

代码搜索开发工具PythonClaude向量数据库本地部署语义分析AST解析

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

来源信息

继续浏览同类 MCP