Token导航 LogoToken导航TokenDH.com
MCP Implementation 2 logo
运维云端stdio官方级别未说明来源级核验

MCP Implementation 2

MCP Server

MCP数据库服务器提供生产就绪的数据库访问实现,支持安全特性和LangGraph代理集成。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
数据库服务安全访问PythonDocker支持

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

SainadhAmul

提供方

SainadhAmul

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

MCP数据库服务器-完整实施

此存储库包含用于数据库访问的MCP服务器和代理的生产就绪实现,如本系列博客所述。

文件概述

  • database_server.py -基本MCP服务器实现(学习/开发)
  • secure_database_server.py -具有安全功能的生产强化版本
  • agent_app.py -使用MCP服务器的LangGraph代理
  • Dockerfile -用于生产部署的容器配置
  • docker-compose.yml -完整的本地测试环境
  • init_db.sql -示例数据库模式和数据
  • requirements.txt -Python依赖关系

快速开始

选项1:Docker编写(最简单)

这将启动测试数据库和MCP服务器:

# Start everything
docker-compose up -d

# Check logs
docker-compose logs -f mcp-server

# Stop everything
docker-compose down

选项2:本地Python

要求:

  • Python 3.11+
  • PostgreSQL在本地运行
# Install dependencies
pip install -r requirements.txt

# Set environment variables
export DB_HOST=localhost
export DB_PASSWORD=your_password
export DB_USER=readonly_user
export DB_NAME=production

# Run the server
python database_server.py

使用代理

代理应用程序演示了如何将MCP服务器与LangGraph集成。

# Set your Anthropic API key
export ANTHROPIC_API_KEY=your_key_here

# Run in interactive mode
python agent_app.py

# Run demo queries
python agent_app.py demo

# Use Docker MCP server instead of local
export MCP_SERVER_MODE=docker
python agent_app.py

MCP检验员测试

MCP Inspector允许您在不构建完整代理的情况下测试服务器:

# Install Inspector
npm install -g @modelcontextprotocol/inspector

# Test your server
mcp-inspector python database_server.py

然后打开终端中显示的web界面。

LangSmith追踪

启用详细跟踪以调试代理行为:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=your_langsmith_key
export LANGCHAIN_PROJECT=mcp-database-agent

python agent_app.py

查看痕迹https://smith.langchain.com

生产部署

构建Docker镜像

docker build -t mcp-database-server .

安全强化跑步

docker run -d \
  --name mcp-database \
  --memory=512m \
  --cpus=1.0 \
  --security-opt seccomp=default.json \
  --cap-drop=ALL \
  --read-only \
  --tmpfs /tmp \
  -e DB_HOST=your-db-host \
  -e DB_PASSWORD=secure_password \
  mcp-database-server

健康监测

# Check container health
docker inspect --format='{{.State.Health.Status}}' mcp-database

# View logs
docker logs -f mcp-database

# View audit logs (if volume mounted)
docker exec mcp-database cat /var/log/mcp/server.log

安全最佳实践

  1. 从不硬编码凭据 -使用环境变量或机密管理
  2. 以非root身份运行 -Dockerfile创建并使用非root用户
  3. 使用只读数据库用户 -仅授予SELECT权限
  4. 启用速率限制 -安全版本实现了这一点
  5. 审核日志记录 -记录所有工具调用以进行安全审查
  6. 输入验证 -所有查询在执行前都经过验证
  7. 网络限制 -限制容器网络访问
  8. 资源限制 -设置内存和CPU限制
  9. 定期更新 -保持依赖关系最新

故障排除

“连接被拒绝”错误

检查:

  • PostgreSQL正在运行: pg_isready -h localhost
  • 凭据正确
  • 网络允许连接(防火墙、Docker网络)

“超出费率限制”

安全服务器限制为每分钟20个查询。等待或调整 MAX_CALLS_PER_MINUTE 在代码中。

“只允许SELECT查询”

这是故意的安全。只允许使用SELECT语句。要修改数据,请添加具有适当验证的特定工具。

代理找不到工具

确保:

  • MCP服务器正在运行且可访问
  • 环境变量设置正确
  • 服务器日志显示初始化成功

扩展服务器

添加新工具

@mcp.tool()
async def your_tool_name(param: str) -> dict:
    """
    Clear description for the AI.
    
    Args:
        param: Description of the parameter
    """
    # Your implementation
    return {"result": "data"}

添加新资源

@mcp.resource("custom://your-resource")
async def your_resource() -> str:
    """Description of what this resource provides."""
    data = {"key": "value"}
    return json.dumps(data, indent=2)

许可证

MIT许可证-您可以自由使用和修改您的项目。

支持

如有疑问或问题:

  1. 查看博客文章以获取详细解释
  2. 查看代码注释
  3. 与MCP检查员一起进行测试,以隔离问题
  4. 检查Docker/PostgreSQL日志中的错误消息

快乐建筑! 🚀

目录标签

目录标签

数据库服务安全访问PythonDocker支持本地部署生产部署LangGraph集成

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP