我的MCP服务器
模型上下文协议(MCP)服务器,为VS代码中的各种应用程序提供开发工具和API集成。
⚠️ 重要提示:所有文档必须在BookStack中创建,而不是作为.md文件。看 文档工作流程 作为指导方针。
全面的文件包括:
- 开发指南
- 项目路线图和跟踪
- 完整的工具参考
- 建筑细部
- 开发指南
- 食谱管理(11个有营养数据的食谱)
- Grocy集成指南
访问 MCP服务器簿 在BookStack上。
关键文档页面
- 文档工作流程 -如何创建/更新文档(BookStack优先方法)
- 配方管理指南 -11种食谱,47种产品,膳食计划工作流程
- 产品营养数据库 -10种产品的详细营养数据
- Grocy数据结构参考 -技术文档、30个MCP工具、API详细信息
在BookStack中查找的位置(项目策略)
此项目的所有文档必须保存在BookStack中。不添加或更新本地 .md 存储库中的文件——创建或编辑相应的BookStack页面。为便于快速参考,关键位置如下:
- 货架:
Development,Personal,Projects(用这些来整理书籍) - 项目书:MCP服务器--\<>
- 重要页面:
- Grocy数据结构参考--\(第82页) - Grocy API集成-\<>(第id:78页) - 文档工作流程(BookStack优先)--\<>(第84页) - Woolworths收据进口(概述)--\<>(第85页)
处理导入时,请务必先检查这些BookStack页面。如果您需要为导入运行创建一个新页面(例如,每次收据摘要),请在项目簿或 Woolworths Receipt Imports (2025-11-09) 预订并链接回项目手册。
快速开始
先决条件
- Node.js 18或更高版本
- npm(附带Node.js)
安装
# Clone the repository
git clone https://github.com/Deejpotter/my-mcp-server.git
cd my-mcp-server
# Install dependencies
npm install
# Build the server
npm run build可用脚本
npm run build-将TypeScript编译为JavaScriptnpm run dev-自动重新加载的开发模式npm start-运行已编译的服务器npm run typecheck-检查TypeScript类型npm run lint-运行ESLint检查npm test-运行测试套件
VS代码集成
添加到您的VS Code MCP设置文件(~/.config/Code/User/mcp.json 在Linux/macOS或 %APPDATA%\Code\User\mcp.json 在Windows上):
生产模式(推荐)
{
"servers": {
"my-mcp-server": {
"command": "npm",
"args": [
"--prefix",
"~/Repos/my-mcp-server",
"start"
],
"env": {}
}
}
}注: 跑 npm run build 在任何代码更改之后。
发展模式
{
"servers": {
"my-mcp-server": {
"command": "npm",
"args": [
"--prefix",
"~/Repos/my-mcp-server",
"run",
"dev"
],
"env": {}
}
}
}注: 文件更改时自动重新加载,无需构建步骤。
配置
创建一个 .env API集成的项目根目录中的文件:
# Google Search (via SerpAPI) - Free tier: 100 searches/month
SERPAPI_API_KEY=your_serpapi_key_here
# Context7 - Optional for enhanced documentation
CONTEXT7_API_KEY=your_context7_key_here
# BookStack - Required for BookStack tools
BOOKSTACK_URL=https://your-bookstack-instance.com
BOOKSTACK_TOKEN_ID=your_token_id_here
BOOKSTACK_TOKEN_SECRET=your_token_secret_here
# ClickUp - Required for ClickUp tools
CLICKUP_API_TOKEN=your_clickup_token_here
# Grocy - Required for Grocy tools
GROCY_BASE_URL=https://your-grocy-instance.com
GROCY_API_KEY=your_grocy_api_key_here
# Hugging Face - Required for AI image generation
HUGGING_FACE_API_KEY=your_hugging_face_key_here注: DuckDuckGo搜索在没有任何API密钥的情况下工作。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
可用工具
所有工具都包括全面的安全验证和错误处理。
文件操作
- read_file -读取具有大小限制和路径验证的文件内容
- 安全性:阻止路径遍历,验证工作目录中的路径 - 默认最大大小:1MB(可配置)
- write_file -通过自动目录创建将内容写入文件
- 安全性:路径验证,防止写入禁止的目录 - 自动创建父目录
- 列表文件 -列出支持glob模式的文件
- 支持递归目录遍历 - 过滤掉禁止的路径(.git、node_modules、.env)
网页搜索
- 谷歌搜索 -使用SerpAPI搜索谷歌
- 返回结构化结果:标题、URL、代码段、位置 - 需要 SERPAPI_API_KEY 环境变量(免费层:每月100次搜索) - 支持特定位置的结果
- duckduckgo_search -在DuckDuckGo中搜索网页结果
- 无需API密钥-免费且无限制 - 返回包含标题、URL和片段的真实网络搜索结果 - 以隐私为中心的搜索选项,无需跟踪
文档查找
- resolve_library_id -为包查找正确的Context7库ID
- 搜索库、框架和文档 - 返回与元数据(代码片段、信任评分、版本)的最佳匹配
- get_文档 -从Context7获取全面的文档
- 获取最新的特定于版本的文档 - 针对重点文档的可选主题过滤 - 文档长度的可配置令牌限制
- 搜索文档 -在Context7中跨多个库搜索
- 文档全文搜索 - 按类别/技术筛选 - 使用片段获取相关性排名结果
BookStack集成
- 书架_搜索 -在BookStack文档中搜索
- 搜索书籍、页面、章节和书架 - 支持高级搜索语法(过滤器、精确匹配、标签) - 返回预览和元数据 - 需要 BOOKSTACK_URL, BOOKSTACK_TOKEN_ID, BOOKSTACK_TOKEN_SECRET
- 书架 -获取书架详细信息和书籍
- 检索包括所有书籍在内的书架信息 - 按显示顺序查看图书列表 - 包括元数据和层次结构
- 书架_get_page -检索整页内容
- 获取HTML和Markdown格式的页面内容 - 包括所有元数据和层次结构信息
- 书架_get_book -获取书籍结构
- 检索图书详细信息和目录 - 以结构化格式查看所有章节和页面
- 书架_创意_书架 -创建新货架
- 创建顶级书架以组织多本书 - 在书架创建过程中添加书籍(可选) - 支持描述和标签
- 书架_创意_书籍 -创建新书
- 创建包含名称、描述和标签的顶级书籍 - 返回书籍ID和URL以添加章节/页面 - 支持为组织添加标签
- 书架_创意_触觉 -在书籍中创建章节
- 将页面组织成逻辑章节 - 需要父book_id - 支持描述和标签
- 书架_创意_页面 -创建包含内容的页面
- 在书籍或章节中创建页面 - 支持HTML和Markdown内容 - 自动将base64图像提取到图库 - 需要book_id或chapter_id
- 书架_更新_书架 -更新书架细节和书籍
- 修改书架名称、描述和书籍分配 - 通过提供新书阵列重新订购书籍 - 支持部分更新
- 书架更新_书籍 -更新书籍详细信息
- 修改书籍名称、描述和标签 - 支持部分更新(仅提供要更改的字段)
- 书架更新页面 -更新页面内容和元数据
- 更新页面名称、HTML/Markdown内容和标签 - 在书籍或章节之间移动页面 - 支持部分更新
- 书架_书架 -删除工具架
- 警告:永久删除机框(无法撤消) - 书架上的书被保存了下来 - 需要shelf_id
- bookback_delete_book -删除一本书
- 警告:永久删除该书及其所有章节和页面(无法撤消) - 需要book_id
- 书架_书籍_章节 -删除章节
- 警告:永久删除章节及其所有页面(无法撤消) - 需要chapter_id
- bookback_delete_page -删除页面
- 警告:永久删除页面(无法撤消) - 需要page_id
ClickUp集成
- 点击获取任务 -检索任务详细信息
- 获取完整的任务信息,包括状态、优先级、分配对象 - 查看标签、日期、描述和自定义字段 - 需要 CLICKUP_API_TOKEN
- clickup_create_task -创建新任务
- 在任何列表中创建具有名称、描述和状态的任务 - 设置优先级、截止日期、受让人和标签 - 返回任务ID和URL
- clickup_update_task -更新现有任务
- 修改任务属性(名称、描述、状态、优先级) - 添加或删除受让人 - 更新截止日期和其他字段
Grocy集成
厨房和家庭库存管理,包括智能库存跟踪、购物清单和食谱。
库存管理:
- grocy_stock_getcurrent -获取完整的库存概览,包括数量和最佳食用日期
- grocy_stock_get-product -获取详细的产品信息、定价和历史记录
- 杂货店产品 -将产品添加到库存中(使用日期和价格进行购买跟踪)
- 杂货_库存_消费品_产品 -从库存中删除产品(使用FIFO进行消耗跟踪)
- grocy_stock_getvolatile -获取即将过期、过期、过期或低于最低库存的产品
- 杂货店_商品_条形码 -按条形码查找产品
购物清单:
- 杂货店_购物清单_add_产品 -将产品添加到购物清单
- 杂货店_购物清单_搬家_产品 -从购物清单中删除产品
- grocy_shoppinglist_add_missing -自动添加低于最低库存的所有产品
- 杂货店购物清单 -清除购物清单(所有项目或仅完成)
产品管理:
- grocy_product_create -在Grocy中创建新产品(添加到食谱之前需要)
- grocy_location_list -列出所有存储位置(用于产品创建)
- grocy_数量_单位列表 -列出所有数量单位(件、克、千克、升、毫升等)
食谱和膳食计划:
- grocy_recipe_create -使用名称、描述和服务信息创建新配方
- grocy_recipe_add_ingregation -使用数量和产品ID将配料添加到配方中
- grocy_recipe_get_满足 -检查食谱的配料是否有库存
- grocy_recipe_consume -消耗库存中的所有配方成分
- grocy_recipe_add_missing_to_shoppinglist -将缺少的食谱配料添加到购物清单中
- grocy_mal_plan_add -将食谱添加到特定日期的膳食计划日历中
- grocy_mal_plan_get -检索日期范围内的膳食计划(每周计划概述)
任务:
- grocy_tasks_get_pending -获取所有未完成的任务
- grocy_task_完成 -将任务标记为已完成
系统:
- grocy_system_info -获取Grocy版本和系统信息
需要 GROCY_BASE_URL 和 GROCY_API_KEY 环境变量。
澳大利亚杂货价格比较
搜索并比较澳大利亚Woolworths和Coles超市的价格。
- 伍尔沃斯_搜索_产品 -搜索Woolworths产品并获取当前价格
- 公共API(无需身份验证) - 返回产品名称、价格、单位(kg、g、L、ml、每个、包装) - 包括包装尺寸和单价信息 - 使用可选参数限制结果
- coles_search_产品 -搜索Coles产品并获取当前价格
- 返回产品名称、价格、单位和包装尺寸 - 支持特定商店的搜索(默认:store 0584) - 需要 COLES_API_KEY 环境变量 - 使用可选参数限制结果
- 杂货店_比较_价格 -比较两家商店的价格
- 同时在Woolworths和Coles搜索产品 - 显示每家商店的最佳匹配价格 - 计算哪个商店最便宜 - 显示储蓄金额 - 非常适合做出明智的购物决策
示例用法:
"Search for ground beef at Woolworths"
"Check Coles prices for spaghetti"
"Compare tomato sauce prices at both stores"
"Find the cheapest option for olive oil"优点:
- 澳大利亚两家主要超市的实时定价
- 单价比较($/kg、$/100g等)
- 在最便宜的商店购物省钱
- Grocy购物清单集成就绪(即将推出)
需要 COLES_API_KEY 环境变量。Woolworths API是公开的,不需要密钥。
命令执行
- 运行命令 -执行带有安全验证的shell命令
- 只允许执行列表(git、ls、pwd、echo、cat、grep、find、npm、node等) - 超时保护(默认30秒) - 工作目录验证
- security_status -查看安全配置
- 显示允许的命令 - 列出禁止的路径和目录 - 显示当前安全设置
Git集成
- git_命令 -安全执行git命令
- 仅验证git操作 - 存储库目录验证 - 超时保护(默认60秒)
图像生成与处理
- 图像生成 -使用AI从文本提示生成图像
- 由Hugging Face FLUX.1型号提供技术支持(schnell and dev) - 多种尺寸选项(512x512至1024x1024) - 支持负面提示和指导量表 - 需要 HUGGING_FACE_API_KEY (免费等级:约50张图片/天) - 详细文件
- image_convert -在不同格式之间转换图像
- 支持WEBP、PNG、JPEG、AVIF、GIF、TIFF - 支持目录的批处理 - 质量控制和文件夹结构保存 - 非常适合优化web/BookStack的图像
- image_resize -使用智能策略调整图像大小
- 7个方便的预设(缩略图至4K) - 5种匹配策略(覆盖、包含、填充、内部、外部) - 自动保持纵横比 - 批处理支持
- 图像优化 -优化图像以减小文件大小
- 特定格式压缩(mozjpeg、调色板缩减) - 通常可节省40-70%的空间 - 元数据保存选项 - 详细统计报告
可用资源
资源为AI助手提供只读的上下文信息。
可用提示
这些是MCP服务器公开的高质量、以工作流为中心的提示。每个提示都旨在指导真正的开发人员工作流程(质量重于数量)。
- 代码查看指南 --一步一步的代码审查工作流程,涵盖可读性、安全性、性能、测试和可操作的建议。
- commit_message_composer --按照常规提交编写有意义的提交消息;与git工具集成以分析差异。
- 图书馆检索工作流程 --使用Context7和网络搜索来评估适合性和替代方案的系统性图书馆/框架研究工作流程。
- 错误_调查_指南 --结构化调试方法:复制、收集数据、形成假设、测试、修复和记录。
- 功能_实现_计划 --将功能分解为需求、架构、文件更改、测试、推出和成功指标。
- 搜索_评分_指南 --将用户的粗略搜索意图转化为优化的查询;分析意图,推荐最佳工具,并提供现成的搜索策略。
安全功能
此MCP服务器实施了企业级安全措施:
命令注入保护
- 基于允许列表的命令验证
- 只有预先批准的命令才能执行
- 危险命令模式被阻止(rm-rf、format等)
路径穿越预防
- 根据工作目录验证所有文件路径
- 规范路径解析防止目录转义
- 被禁止的目录已被自动阻止(.git、node_modules、.env)
资源限制
- 文件大小限制可防止内存耗尽(默认1MB)
- 命令超时保护(30-60秒)
- 命令输出的缓冲区大小限制
信息披露保护
- 资源中没有主机名暴露
- 用相对路径替换完整文件系统路径
- 筛选敏感数据的环境变量
VS代码集成
GitHub Copilot的设置
添加到您的VS Code MCP设置文件中:
窗户: %APPDATA%\Code\User\mcp.json
macOS/Linux: ~/.config/Code/User/mcp.json
生产模式(推荐)
最适合日常使用。运行编译后的JavaScript以获得更好的性能和稳定性。
要求: 跑 npm run build 在任何代码更改之后。
{
"servers": {
"my-mcp-server": {
"command": "npm",
"args": [
"--prefix",
"~/Repos/my-mcp-server",
"start"
],
"env": {}
}
}
}优点:
- 更快的启动速度和更低的内存使用率
- 对于长时间运行的后台进程更稳定
- 标准生产Node.js设置
发展模式
最适合积极发展。通过热重载直接运行TypeScript。
要求: 只需要 npm install (无构建步骤)。
{
"servers": {
"my-mcp-server": {
"command": "npm",
"args": [
"--prefix",
"~/Repos/my-mcp-server",
"run",
"dev"
],
"env": {}
}
}
}优点:
- 无需构建步骤
- 文件更改时自动重新启动
- 开发过程中迭代更快
注: 调整路径以匹配您的安装目录。这 ~/Repos/my-mcp-server 该路径在Windows和Linux上都有效。
Jan AI的设置
Jan使用了不同的配置格式。添加到Jan的MCP设置中:
生产模式(推荐):
{
"type": "stdio",
"command": "node",
"args": [
"C:/Users/YourUserName/Repos/my-mcp-server/dist/server.js"
],
"active": true
}要求: 跑 npm run build 在任何代码更改之后。
注: 为了与Windows兼容,请使用带正斜杠的绝对路径。
配置
环境变量(可选)
创建一个 .env API集成的文件:
# Google Search (via SerpAPI) - Required for google_search tool
# Get your key from: https://serpapi.com/manage-api-key
# Free tier: 100 searches/month
SERPAPI_API_KEY=your_serpapi_key_here
# Context7 - Optional for enhanced documentation lookup
# Get your key from: https://context7.com
CONTEXT7_API_KEY=your_context7_key_here
# BookStack - Required for BookStack tools
# Create tokens in your BookStack instance: Settings > API Tokens
BOOKSTACK_URL=https://your-bookstack-instance.com
BOOKSTACK_TOKEN_ID=your_token_id_here
BOOKSTACK_TOKEN_SECRET=your_token_secret_here
# ClickUp - Required for ClickUp tools
# Get your token from: https://app.clickup.com/settings/apps
CLICKUP_API_TOKEN=your_clickup_token_here
# GitHub - Optional for enhanced code search
# Create at: https://github.com/settings/tokens
GITHUB_TOKEN=your_github_token_here注: DuckDuckGo搜索工作没有任何API密钥-它是完全免费和无限的!
项目结构
my-mcp-server/
├── src/
│ ├── server.ts # Main MCP server entry point
│ ├── tools/ # MCP tool implementations
│ │ ├── fileTools.ts # File read/write/list operations
│ │ ├── systemTools.ts # System monitoring and stats
│ │ ├── commandTools.ts # Command execution and security
│ │ └── gitTools.ts # Git command operations
│ ├── resources/ # MCP resources (read-only data)
│ │ ├── systemResources.ts # System and workspace information
│ │ └── gitResources.ts # Git repository status
│ └── utils/ # Shared utility functions
│ ├── security.ts # Security validation and checks
│ ├── cache.ts # Caching and rate limiting
│ └── performance.ts # Performance tracking
├── dist/ # Compiled JavaScript (generated by build)
├── package.json # Node.js dependencies and scripts
├── tsconfig.json # TypeScript compiler configuration
├── .eslintrc.json # ESLint code quality rules
└── README.md # This file发展
添加新工具
工具按类别组织。要添加新工具,请执行以下操作:
- 在中选择适当的文件
src/tools/或创建新类别 - 使用
server.registerTool()Zod模式 - 使用来自的实用程序实施安全验证
src/utils/security.ts - 注册
src/server.ts如果创建新文件
工具结构示例:
server.registerTool(
"tool_name",
{
title: "Tool Title",
description: "What the tool does",
inputSchema: {
param: z.string().describe("Parameter description"),
},
outputSchema: {
result: z.string(),
},
},
async ({ param }) => {
try {
// Tool implementation
return {
content: [{ type: "text", text: "Success message" }],
};
} catch (error: unknown) {
const err = error as Error;
return {
content: [{ type: "text", text: `Error: ${err.message}` }],
isError: true,
};
}
}
);代码规范
- TypeScript严格模式 -所有代码都必须通过类型检查
- Zod验证 -所有工具输入均已Zod模式验证
- 安全第一 -使用
validatePath()和validateCommand()来自utils - 错误处理 -始终返回内容
isError旗帜,永不投掷 - 评论 -添加JSDoc注释,解释目的和安全考虑因素
- 无console.log -使用
console.error()用于调试(stdout用于MCP协议)
故障排除
服务器无法启动
- 检查Node.js版本:
node --version(必须为18+) - 重建:
npm run build - 检查错误:
npm run typecheck
工具未出现在VS代码中
- 验证MCP设置文件的位置和语法
- 完全重新启动VS代码
- 检查服务器是否已构建:
npm run build - 检查dist/server.js是否存在
安全验证错误
- 跑
security_status查看允许命令的工具 - 确保文件路径在工作目录中
- 检查命令是否在allowlist中(git、ls、pwd等)
贡献
这是一个个人项目,但欢迎提出建议和改进。贡献时:
- 遵循现有的代码模式和结构
- 添加全面的错误处理
- 包括对所有用户输入的安全验证
- 更新任何新功能的文档
- 提交前进行彻底测试
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
