🤖 MCP编码服务器
一个生产就绪的模型上下文协议(MCP)服务器,为AI模型与您的系统交互提供全面的工具。
🚀 什么是MCP?
MCP(模型上下文协议)是一种标准协议,允许AI模型调用系统上的函数。此服务器提供以下工具:
- 文件操作:读取、写入、搜索文件
- 系统命令:安全执行终端命令
- Web剪贴:从网站提取数据
- 代码分析:分析和格式化代码
- Git操作:版本控制命令
- 数据库操作:SQL查询和命令
- 人工智能集成:生成和分析内容
📋 特性
🔧 核心工具
文件操作
file_read-读取文件内容file_write-将内容写入文件file_search-按模式搜索文件file_list-列出目录内容file_search_content-在文件中搜索文本file_info-获取文件信息
系统操作
system_info-获取系统信息system_command-执行终端命令system_package-安装Python包
Web操作
web_scrape-删除网页内容web_api-进行HTTP API调用
代码操作
code_analyze-分析代码中的问题code_format-格式代码
Git操作
git_status-检查git状态git_commit-提交更改git_push-推到远程
数据库操作
db_query-执行SQL查询db_execute-执行SQL命令
人工智能操作
ai_generate-生成代码/文本ai_analyze-分析内容
🛠️ 安装
先决条件
- Python 3.8或更高版本
- pip(Python包管理器)
快速开始
- 克隆或下载服务器文件
# Make sure you have all the files in your directory
ls -la- 安装依赖项
pip install -r requirements.txt- 设置环境变量(可选)
export OPENAI_API_KEY="your-openai-api-key"
export ANTHROPIC_API_KEY="your-anthropic-api-key"
export GITHUB_TOKEN="your-github-token"- 运行服务器
python server.py🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENAI_API_KEY | 人工智能工具的OpenAI API密钥 | 无 |
ANTHROPIC_API_KEY | 人工智能工具的Anthropic API密钥 | 无 |
GITHUB_TOKEN | 用于git操作的GitHub令牌 | 无 |
MCP_SERVER_HOST | 服务器主机 | localhost |
MCP_SERVER_PORT | 服务器端口 | 8000 |
MCP_BASE_PATH | 文件操作的基本目录 | 当前目录 |
MCP_WORKING_DIR | 命令工作目录 | 当前目录 |
MCP_DATA_DIR | 数据目录 | 。/数据 |
MCP_RATE_LIMIT | 每分钟速率限制 | 60 |
MCP_MAX_FILE_SIZE | 最大文件大小(MB) | 100 |
MCP_LOG_LEVEL | 日志记录级别 | 信息 |
MCP_LOG_FILE | 日志文件路径 | mcp_server.Log |
MCP_METRICS_ENABLED | 启用指标收集 | true |
安全功能
- 速率限制:通过可配置的限制防止滥用
- 命令验证:阻止危险的系统命令
- 路径验证:确保文件在允许的目录内
- 文件大小限制:防止大文件操作
- 扩展过滤:只允许安全的文件类型
📖 用法
启动服务器
# Basic start
python server.py
# With custom configuration
MCP_BASE_PATH=/path/to/workspace python server.py
# With logging
MCP_LOG_LEVEL=DEBUG python server.py从AI模型连接
服务器通过MCP协议进行通信。AI模型可以连接和调用这样的工具:
# Example tool call from AI
{
"method": "tools/call",
"params": {
"name": "file_read",
"arguments": {
"path": "main.py"
}
}
}工具示例
读取文件
{
"name": "file_read",
"arguments": {
"path": "src/main.py",
"encoding": "utf-8"
}
}写入文件
{
"name": "file_write",
"arguments": {
"path": "new_file.py",
"content": "print('Hello, World!')"
}
}执行命令
{
"name": "system_command",
"arguments": {
"command": "ls -la",
"timeout": 30
}
}搜索文件
{
"name": "file_search",
"arguments": {
"pattern": "*.py",
"recursive": true
}
}废弃网站
{
"name": "web_scrape",
"arguments": {
"url": "https://example.com"
}
}🏗️ 建筑
项目结构
mcp_coding_server/
├── server.py # Main MCP server
├── config.py # Configuration management
├── requirements.txt # Python dependencies
├── README.md # This file
├── tools/ # Tool implementations
│ ├── __init__.py
│ ├── file_tools.py # File operations
│ ├── system_tools.py # System commands
│ ├── web_tools.py # Web scraping
│ ├── code_tools.py # Code analysis
│ ├── git_tools.py # Git operations
│ ├── database_tools.py # Database operations
│ └── ai_tools.py # AI integration
└── utils/ # Utilities
├── __init__.py
├── logger.py # Logging setup
├── security.py # Security manager
└── metrics.py # Metrics collection核心组件
- MCP服务器:处理MCP协议的主服务器类
- 工具类:单个工具实施
- 安全经理:处理安全和速率限制
- 度量收集器:收集使用情况指标
- 配置:管理配置和环境变量
🔒 安全
内置保护
- 命令阻止:危险命令被自动阻止
- 路径验证:所有文件操作都限制在允许的目录中
- 速率限制:通过可配置的限制防止滥用
- 输入消毒:所有输入都经过消毒
- 错误处理:全面的错误处理和记录
已阻止的命令
rm -rf /-危险文件删除format c:-磁盘格式化sudo-特权升级chmod 777-危险权限- 还有更多。..
📊 监控
指标收集
服务器自动收集指标,包括:
- 请求计数
- 响应时间
- 错误率
- 工具使用统计
日志记录
控制台和文件的全面日志记录:
- 请求/响应日志记录
- 误差跟踪
- 安全事件
- 性能指标
🚀 生产部署
Docker(推荐)
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "server.py"]环境设置
# Production environment variables
export MCP_LOG_LEVEL=WARNING
export MCP_METRICS_ENABLED=true
export MCP_RATE_LIMIT=30
export MCP_MAX_FILE_SIZE=50🔧 发展
添加新工具
- 在中创建新的工具类
tools/ - 实施
get_tools()方法 - 实施
handle_tool_call()方法 - 在中注册该工具
server.py
示例工具
class MyTool:
def get_tools(self) -> List[Tool]:
return [
Tool(
name="my_tool",
description="My custom tool",
inputSchema={
"type": "object",
"properties": {
"param": {"type": "string"}
}
}
)
]
async def handle_tool_call(self, tool_name: str, arguments: Dict[str, Any]) -> Dict[str, Any]:
if tool_name == "my_tool":
return await self._my_tool_function(arguments)🐛 故障排除
常见问题
- 导入错误:确保安装了所有依赖项
pip install -r requirements.txt- 权限错误:检查文件和目录权限
chmod +x server.py- 端口已在使用中:更改配置中的端口
export MCP_SERVER_PORT=8001- API关键问题:验证API密钥设置是否正确
echo $OPENAI_API_KEY调试模式
MCP_LOG_LEVEL=DEBUG python server.py📝 许可证
该项目根据MIT许可证获得许可。
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
📞 支持
对于问题和疑问:
- 检查故障排除部分
- 查看登录
mcp_server.log - 启用调试日志记录
- 用详细信息创建问题
______________________________________________________________________
与你的AI助手一起编码快乐! 🚀
