项目简介
Dolphin MCP知识库服务器('dolphin-mcp')是一个基于Model Context Protocol (MCP) 构建的后端服务,旨在将Dolphin语义代码搜索功能集成到支持MCP协议的LLM客户端(如Continue.dev、Claude Desktop等)。它作为一个桥梁,将Dolphin API提供的强大代码和文档搜索能力,以标准化的工具形式暴露给大型语言模型,从而增强LLM在代码理解、生成和辅助开发方面的表现。
主要功能点
- 语义代码与文档搜索 ('search_knowledge'):允许LLM根据语义查询代码和文档,返回排名靠前的代码或文本片段,并附带引用信息。支持通过仓库、路径前缀、排除路径和模式进行高级过滤。
- 代码片段获取 ('fetch_chunk'):根据唯一的代码块ID(chunk_id),精确获取并返回带有代码引用信息的代码片段。
- 文件行范围获取 ('fetch_lines'):根据仓库名称、文件路径和起始/结束行号,从本地磁盘获取指定范围的文件内容,并以代码块形式返回。
- 矢量存储信息查询 ('get_vector_store_info'):提供关于底层矢量存储(Dolphin API)的元数据,包括命名空间、维度、限制和近似的代码块数量。
- 在编辑器中打开 ('open_in_editor'):根据仓库名称、文件路径和可选的行/列信息,生成一个URI,供客户端在VS Code等编辑器中直接打开文件并定位到指定位置。
安装步骤
- 安装Bun运行时:Dolphin MCP服务器使用Bun作为运行时。请访问 Bun官方网站 按照指引进行安装。
- 运行Dolphin API后端:Dolphin MCP服务器需要一个正在运行的Dolphin API实例。请确保您的Dolphin API后端已在配置的URL(默认为'http://127.0.0.1:7777')上运行。
- 启动Dolphin MCP服务器:
- 快速启动 (推荐):无需额外安装,直接使用'bunx'命令即可运行:
bunx dolphin-mcp - 全局安装 (可选):如果您希望全局安装并像普通命令一样运行,可以执行:
然后通过 'dolphin-mcp' 命令启动。bun install -g dolphin-mcp
- 快速启动 (推荐):无需额外安装,直接使用'bunx'命令即可运行:
服务器配置(适用于MCP客户端)
要让MCP客户端(如Continue.dev或Claude Desktop)连接到Dolphin MCP服务器,您需要在客户端的配置文件中添加以下JSON格式的配置。这些配置告诉客户端如何启动和连接Dolphin MCP服务器。
示例配置(适用于Continue.dev)
在您的'config.yaml'文件中添加:
mcpServers: - name: Dolphin-KB # MCP服务器的名称,客户端界面会显示此名称 command: bunx # 启动MCP服务器的命令 args: # 传递给命令的参数 - dolphin-mcp # 启动Dolphin MCP服务器的脚本 env: # 环境变量,用于配置Dolphin MCP服务器 DOLPHIN_API_URL: "http://127.0.0.1:7777" # (必填) Dolphin API的URL,确保Dolphin API已在此地址运行 MAX_CONCURRENT_SNIPPET_FETCH: "8" # (可选) 并行获取代码片段的最大并发数,用于性能优化 SNIPPET_FETCH_TIMEOUT_MS: "2000" # (可选) 每个代码片段请求的超时时间(毫秒) SNIPPET_FETCH_RETRY_ATTEMPTS: "1" # (可选) 失败请求的重试次数
示例配置(适用于Claude Desktop)
在您的'claude_desktop_config.json'文件中添加:
{ "mcpServers": { "dolphin-kb": { # MCP服务器的唯一标识符 "command": "bunx", # 启动MCP服务器的命令 "args": ["dolphin-mcp"], # 传递给命令的参数 "env": { # 环境变量,用于配置Dolphin MCP服务器 "DOLPHIN_API_URL": "http://127.0.0.1:7777", # (必填) Dolphin API的URL,确保Dolphin API已在此地址运行 "MAX_CONCURRENT_SNIPPET_FETCH": "8", # (可选) 并行获取代码片段的最大并发数,用于性能优化 "SNIPPET_FETCH_TIMEOUT_MS": "2000", # (可选) 每个代码片段请求的超时时间(毫秒) "SNIPPET_FETCH_RETRY_ATTEMPTS": "1" # (可选) 失败请求的重试次数 } } } }
基本使用方法
一旦Dolphin MCP服务器配置并由MCP客户端成功启动,LLM即可通过调用Dolphin MCP服务器暴露的工具来获取上下文信息:
- 语义代码搜索:LLM可以向'search_knowledge'工具发送查询,例如:“查找身份验证逻辑相关的函数”。服务器将返回匹配的代码片段及其引用。
- 获取特定代码:如果LLM需要查看某个特定代码块的详细内容(例如,通过搜索结果中的'chunk_id'),它可以通过调用'fetch_chunk'工具来实现。
- 获取文件指定行:LLM可以通过'fetch_lines'工具获取某个文件指定行范围的代码内容。
- 在本地编辑器中打开:LLM可以使用'open_in_editor'工具生成一个URI,指示客户端在本地VS Code编辑器中打开并定位到特定代码位置。
这些工具使LLM能够以高度结构化和语境化的方式访问和利用您的代码库信息,从而提升其在编程任务中的效率和准确性。
信息
分类
开发者工具