Provides calculator and file operation tools for LangGraph agents, enabling mathematical computations and sandboxed file management within workflows
Enables local file operations with sandbox security, providing tools for reading, writing, creating, and deleting files within a restricted workspace directory
本地 MCP 服务器
一个模块化、生产就绪的模型上下文协议 (MCP) 服务器,为 LangGraph 代理和其他 MCP 客户端提供计算器和文件操作工具。
功能特性
18 个工具:10 个计算器工具 + 8 个文件操作工具
异步支持:完全的异步/等待支持,优化性能
沙箱安全:文件操作限制在工作区目录内
可配置:基于 YAML 的配置,支持环境变量覆盖
日志记录:多级日志记录,支持轮转(文件 + ���制台)
类型安全:完整的类型注解和验证
模块化:易于添加新的工具类别
架构
工具
计算器工具(10 个)
基本操作:
calculator_add
:两数相加calculator_subtract
:两数相减calculator_multiply
:两数相乘calculator_divide
:两数相除(含零检查)
高级操作:
calculator_power
:计算 base^exponentcalculator_sqrt
:计算平方根(验证非负数)calculator_log
:计算对数(支持自定义底数)calculator_sin
:计算正弦(角度/弧度)calculator_cos
:计算余弦(角度/弧度)calculator_tan
:计算正切(角度/弧度)
文件操作工具(8 个)
读取操作:
file_read
:读取完整文件内容file_read_lines
:读取文件的特定行file_exists
:检查文件是否存在file_list
:列出文件(支持 glob 模式)
写入操作:
file_write
:写入/覆盖文件内容file_append
:追加内容到文件file_create
:创建新文件(如存在则失败)file_delete
:删除文件
安全特性:
仅接受相对路径(相对于工作区)
沙箱强制执行(所有路径必须在工作区内)
路径遍历防护
文件扩展名过滤
文件大小限制(默认:10MB)
安装
1. 安装依赖
或使用项目安装:
2. 配置(可选)
复制并自定义配置:
或使用环境变量:
使用方法
运行服务器
服务器使用 stdio 传输进行通信:
服务器将:
从
config/default.yaml
加载配置(如果存在config/config.yaml
也会加载)初始化日志到
logs/mcp_server.log
从
tools/
模块注册所有工具开始监听 stdin/stdout 的 MCP 消息
使用简单客户端测试
测试所有工具而无需 LangGraph:
这将:
连接到 MCP 服务器
列出所有可用工具
测试计算器操作(加、除、平方根、正弦)
测试文件操作(写入、读取、列表、存在)
测试错误处理
与 LangGraph 集成
完整示例请参见 examples/langgraph_integration.py
。
配置
配置文件(config/default.yaml
)
环境变量
MCP_CONFIG_PATH
:用户配置文件路径MCP_LOG_LEVEL
:覆盖日志级别(DEBUG、INFO 等)MCP_WORKSPACE_ROOT
:覆盖工作区根目录MCP_DEBUG
:启用调试模式(true/false)
工具返回格式
所有工具返回结构化的 JSON:
计算器工具:
文件读取:
文件写入:
错误:
添加新工具
在
src/tools/your_category/
中创建新模块使用
@tool
装饰器:
在
src/tools/__init__.py
中导入模块重启服务器
日志记录
日志写入到:
文件:
logs/mcp_server.log
(支持轮转)控制台:stderr(如果
console_output: true
)
注意:stdout 保留用于 MCP 协议通信。
日志级别:
DEBUG:详细调试信息(工具参数、结果)
INFO:一般操作(工具调用、文件操作)
WARNING:警告(验证失败、非关键错误)
ERROR:错误(操作失败、异常)
CRITICAL:严重故障(服务器崩溃)
启用调试模式:
安全注意事项
文件操作安全
沙箱:所有文件路径必须在
workspace_root
内路径验证:拒绝绝对路径,防止
..
遍历扩展名过滤:默认阻止危险扩展名
大小限制:文件默认限制为 10MB
仅相对路径:LLM 提供相对路径,如
data/input.txt
最佳实践
以最小权限运行服务器
定期检查
workspace/
内容根据您的用例自定义
blocked_extensions
设置适当的
max_file_size
限制启用日志记录以监控操作
故障排除
服务器无法启动
检查 Python 版本(需要 Python 3.10+)
验证所有依赖已安装:
pip install mcp aiofiles pyyaml
检查
logs/mcp_server.log
中的日志
工具未找到
验证工具模块已在
src/tools/__init__.py
中导入检查工具是否使用
@tool
装饰器注册添加新工具后重启服务器
文件操作错误
验证路径是相对的(不是绝对路径)
检查路径是否在工作区内:
config.workspace_root
验证文件权限
检查文件大小是否超过
max_file_size
限制
路径验证错误
使用正斜杠:
data/file.txt
(不是data\file.txt
)不要使用
..
或绝对路径确保文件扩展名未被阻止
开发
运行测试
项目结构
src/server.py
:MCP 服务器实现src/config.py
:配置加载和验证src/logger.py
:日志设置src/tools/base.py
:工具注册表和装饰器src/tools/calculator/
:计算器工具src/tools/file_ops/
:文件操作工具
许可证
MIT 许可证 - 随意使用和修改您的项目。
贡献
欢迎贡献!要添加新工具:
遵循
src/tools/
中的模块化结构使用
@tool
装饰器添加全面的错误处理
更新此 README
支持
如有问题或疑问:
查看故障排除部分
查看
logs/mcp_server.log
中的日志启用调试模式以获取详细输出
查看 MCP 文档:https://modelcontextprotocol.io
使用 Anthropic 的 MCP(模型上下文协议)构建
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Provides 18 tools including calculator operations (add, subtract, multiply, divide, power, sqrt, log, trigonometric functions) and secure sandboxed file operations (read, write, append, delete, list) for LangGraph agents and MCP clients. Features async support, YAML configuration, comprehensive logging, and path traversal protection.