一个基于服务器的强大工具系统,旨在通过访问最新的文档和资源来扩展Claude的代码生成能力。
Claude MCP 是一个模块化服务器,托管工具以增强Claude与现代框架和库的工作能力。通过提供Claude访问最新文档和API的能力,确保生成的代码始终遵循最佳实践并利用最新特性。
该系统可以部署在两种主要模式下:
您可以添加自定义工具或使用社区贡献的工具。
MCP系统设计用于托管多种专用工具。当前实现:
发现、获取并处理框架和库的最新文档:
支持的框架包括:
# 克隆仓库
git clone https://github.com/yourusername/claude-mcp.git
cd claude-mcp
# 安装依赖
bun install
# 开发模式(带热重载)
bun dev
# 生产模式
bun start
默认情况下,服务器运行在 http://localhost:3000。
对于个人使用,只需在本地运行服务器,默认不应用身份验证或速率限制:
# 在开发模式下启动服务器
bun dev
对于团队内的共享服务器,可能需要基本的身份验证:
# 创建包含基本设置的.env文件
echo "NODE_ENV=production\nAPI_KEY=your-secret-key" > .env
# 启动服务器
bun start
对于面向公众的服务,启用所有安全功能:
# 使用所有安全功能进行配置
echo "NODE_ENV=production\nAPI_KEY=strong-random-key\nRATE_LIMIT_ENABLED=true" > .env
# 启动服务器
b
bun start
您还可以使用Docker运行MCP服务器:
# 使用Docker构建并运行
docker build -t claude-mcp .
docker run -p 3000:3000 -v ./docs:/app/docs claude-mcp
# 或使用Docker Compose
docker compose up
您可以同时运行一个本地实例用于个人工具,并连接到共享实例:
# 在端口3000上运行您的个人实例
bun dev
# 在您的.zshrc/.bashrc中设置两个来源:
export CLAUDE_CODE_PERSONAL_MCP="http://localhost:3000"
export CLAUDE_CODE_TEAM_MCP="https://team-mcp.example.com"
这样,您可以开发和使用自己的工具,同时也可以访问团队共享的文档和工具。
MCP可以作为插件安装到Claude Code CLI工具中,提供对所有MCP工具的访问:
# 为Claude Code安装MCP插件
curl -X POST http://localhost:3000/claude-code/install
# 源激活脚本(或添加到您的.bashrc/.zshrc)
source ~/.claude-code/plugins/claude-mcp/activate.sh
# 使用文档工具
claude fetch-docs langchain # 获取并使用LangChain文档
claude list-versions fastapi # 列出可用的FastAPI版本
# 列出所有可用工具
claude tools list # 查看所有可用工具
claude tools info docs-fetcher # 获取特定工具的信息
# 直接使用任何工具
claude tool:docs-fetcher frameworks # 列出支持的框架
当您使用claude fetch-docs获取框架的文档时,Claude Code将自动拥有这些文档的访问权限。随着您向MCP服务器添加更多工具,它们将自动通过Claude Code CLI可用。
Claude还可以通过HTTP请求与MCP服务器交互。以下是常见的集成模式:
// Claude可以生成此代码以检查框架的最新版本
const response = await fetch('http://localhost:3000/api/tools/docs-fetcher/latest-version', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ framework: 'langchain' })
});
const data = await response.json();
console.log(`最新版本: ${data.latestVersion}`);
// 将新框架添加到注册表
const addResponse = await fetch('http://localhost:3000/api/tools/docs-fetcher/framework', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name: 'new-framework',
type: 'npm',
packageName: 'new-framework',
docsUrl: 'https://new-framework.dev/docs'
})
});
// 获取框架的文档
const response = await fetch('http://localhost:3000/api/tools/docs-fetcher/fetch', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
framework: 'fastapi',
storageFormat: 'markdown',
processContent: true,
maxPages: 20 // 限制页面数量(测试更快)
})
});
const data = await response.json();
console.log(`文档保存到: ${data.processedDocsLocation}`);
// Claude可以检查文档是否已经可用
const response = await fetch('http://localhost:3000/api/tools/docs-fetcher/status/langchain');
const data = await response.json();
if (data.available && data.upToDate) {
console.log(`使用缓存的文档,版本 ${data.latestVersion}`);
} else {
console.log(`需要获取最新文档(版本 ${data.latestVersion})`);
}
GET / - 服务器状态和可用工具列表GET /api/tools/docs-fetcher/frameworks - 列出所有支持的框架
type: 按类型过滤(all, npm, python, github, custom)POST /api/tools/docs-fetcher/framework - 将新框架添加到注册表
{
"name": "new-framework",
"type": "npm",
"packageName": "new-framework",
"docsUrl": "https://new-framework.dev/docs",
"apiDocsUrl": "https://api.new-framework.dev"
}
DELETE /api/tools/docs-fetcher/framework/:name - 从注册表中移除框架
POST /api/tools/docs-fetcher/latest-version - 获取框架的最新版本
{ "framework": "langchain" }
POST /api/tools/docs-fetcher/fetch - 获取并处理文档
{
"framework": "fastapi",
"storageFormat": "json|markdown",
"processContent": true|false,
"maxPages": 20
}
GET /api/tools/docs-fetcher/status/:framework - 检查文档状态
POST /api/tools/docs-fetcher/search - 搜索文档
{
"query": "state management",
"framework": "react",
"limit": 10
}
文档工具包含一个强大的搜索系统,允许Claude快速找到相关信息:
# 搜索文档中的特定术语
curl -X POST http://localhost:3000/api/tools/docs-fetcher/search \
-H "Content-Type: application/json" \
-d '{"query": "state management", "framework": "react", "mode": "hybrid"}'
搜索系统支持三种模式,并具有自动回退功能:
semantic: 使用神经嵌入根据意义查找内容(适用于概念查询)keyword: 传统的文本搜索,精确匹配术语(适用于API名称)hybrid: 结合两种方法以获得全面的结果(默认)如果语义搜索不可用,系统会自动回退到关键词搜索。
额外的搜索选项:
{
"query": "如何在React组件中处理状态",
"framework": "react",
"version": "18.0.0",
"mode": "hybrid",
"hybridAlpha": 0.7,
"limit": 20
}
系统包括重建和优化搜索索引的工具:
# 重建搜索索引
curl -X POST http://localhost:3000/api/tools/docs-fetcher/search/rebuild
# 检查搜索统计信息
curl http://localhost:3000/api/tools/docs-fetcher/search/stats
搜索结果包括相关的摘录和上下文,Claude可以在生成代码时使用这些信息,使文档更加易于访问和有用。
# 获取一个小样本用于测试(5页)
curl -X POST http://localhost:3000/api/tools/docs-fetcher/fetch \
-H "Content-Type: application/json" \
-d '{"framework": "react", "processContent": true, "maxPages": 5}'
# 获取综合文档(可能需要几分钟)
curl -X POST http://localhost:3000/api/tools/docs-fetcher/fetch \
-H "Content-Type: application/json" \
-d '{"framework": "fastapi", "processContent": true, "maxPages": 100}'
curl -X POST http://localhost:3000/api/tools/docs-fetcher/latest-version \
-H "Content-Type: application/json" \
-d '{"framework": "fastapi"}'
在安装Claude Code插件之后:
# 获取最新文档(小样本用于测试)
claude fetch-docs langchain --maxpages 5
# 通过CLI交互式地添加新框架
bun docadd add
# 或直接获取新框架的文档
bun docadd fetch fastapi --max-pages 20
# 列出可用框架
claude tool:docs-fetcher frameworks
# 搜索文档
claude tool:docs-fetcher search --query "agents" --framework langchain
系统遵循模块化架构:
/
├── src/
│ ├── index.ts # 主服务器入口点
│ ├── lib/
│ │ └── tool-registry.ts # 工具管理
│ ├── types/
│ │ └── tool.ts # 类型定义
│ └── tools/
│ └── docs-fetcher/ # 文档获取器工具
│ ├── index.ts # 路由和端点
│ ├── service.ts # 核心功能
│ ├── registry.ts # 框架注册表
│ ├── scrapers.ts # 网站抓取器
│ └── processors.ts # 内容处理器
├── docs/ # 存储的文档
├── package.json
└── tsconfig.json
使用交互式CLI工具添加新框架:
# 运行文档管理工具
bun docadd add
# 按照交互式提示添加框架详情
CLI将引导您完成以下提示:
您还可以使用这些附加命令:
# 获取现有框架的文档
bun docadd fetch fastapi --max-pages 20
# 列出所有已注册的框架
bun docadd list
# 列出特定类型的框架
bun docadd list --type npm
# 从注册表中移除框架
bun docadd remove vue
所有注册表更改都会自动保存到磁盘,并在服务器重启之间持久存在。
复制工具模板目录:
cp -r src/tools/tool-template src/tools/your-tool-name
使用模板实现您的工具:
import { z } from 'zod';
import { zValidator } from '@hono/zod-validator';
import { createToolTemplate } from '../../lib/tool-registry';
// 定义验证模式
const exampleSchema = z.object({
parameter: z.string().min(1)
});
// 使用模板创建您的工具
const yourTool = createToolTemplate({
name: 'your-tool-name',
description: '您的工具做什么',
version: '0.1.0',
setupRoutes: (router) => {
// 添加您的端点
router.post(
'/example',
zValidator('json', exampleSchema),
async (c) => {
const { parameter } = c.req.valid('json');
// 您的实现在这里
return c.json({ success: true, result: '完成!' });
}
);
return router;
}
});
export default yourTool;
在src/lib/tool-registry.ts中注册工具:
import yourTool from '../tools/your-tool-name';
const tools: Record<string, Tool> = {
'docs-fetcher': docsFetcher,
'your-tool-name': yourTool,
// ...
};
您的工具将自动通过Claude Code CLI可用:
claude tool:your-tool-name example
文档获取器包含高级配置选项以控制抓取行为:
# 设置抓取请求之间的延迟(毫秒)
SCRAPER_REQUEST_DELAY=2000
# 设置最大并发抓取操作数
SCRAPER_MAX_CONCURRENT=1
# 控制puppeteer浏览器超时
PUPPETEER_TIMEOUT=60000
# 启用/禁用调试用的无头模式
PUPPETEER_HEADLESS=true
# GitHub API令牌以提高速率限制
GITHUB_TOKEN=your_github_token
# 内容语言偏好(默认仅限英语)
CONTENT_LANGUAGE=en
# 最低内容质量阈值(0-1)
CONTENT_QUALITY_THRESHOLD=0.7
这些设置有助于确保高质量文档的同时尊重网站速率限制,并防止在获取文档时被阻止。
默认情况下,系统专注于英语文档以获得更好的质量结果:
<html lang="es">)的内容这种行为可以通过修改抓取器配置中的语言模式来自定义。
基于向量的语义搜索系统可以使用以下选项进行定制:
# 搜索模式(语义,关键词,混合)
SEARCH_DEFAULT_MODE=混合
# 默认权重在向量和关键词搜索之间(0-1,越高越语义)
SEARCH_HYBRID_ALPHA=0.7
# 嵌入的向量维度(默认:384,适用于all-MiniLM-L6)
VECTOR_DIMENSIONS=384
# 最大存储向量数
VECTOR_MAX_ELEMENTS=100000
您还可以在查询时通过指定搜索请求中的mode参数选择不同的搜索模式。
系统实现了几种策略以确保健壮性: