模块化MCP服务器框架

MCPCore是一个模块化、生产就绪的MCP服务器框架,支持自动发现的提示、工具和资源,提供流式HTTP服务、API密钥/Bearer认证、速率限制、管理CLI、Docker/Compose支持、Helm图表和CI集成。

  • by protolabs42
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 protolabs42/MCPCore

使用说明

MCPCore(Python)

MCPCore是一个模块化的、可直接用于生产的MCP(Modded Minecraft Project,模组化Minecraft项目)服务器框架,支持自动发现功能 提示、工具、资源; 可流式传输的HTTP; API密钥/承载令牌 使用(某种方式)认证 范围与撤销; 速率限制; 管理员命令行界面(Admin CLI); Docker/Compose(通常可简化为“Docker Compose”); Helm 图表;和 CI(企业识别系统/企业形象识别系统)。

仓库: https://github.com/protolabs42/MCPCore

快速入门(可流式传输的HTTP)

uv add "mcp[cli]" pydantic starlette uvicorn redis typer
uv run mcp-core   # serves streamable HTTP at http://127.0.0.1:8000/mcp
# STDIO fallback
uv run mcp-core-stdio   # or: ANY_MCP_ENABLE_HTTP=false uv run mcp-core

在暴露服务器之前,请设置明确的安全环境变量:

export ANY_MCP_ENABLE_AUTH=true
export ANY_MCP_KEYS_PATH=./keys.json
export ANY_MCP_CORS_ALLOW_ORIGINS=http://localhost:5173

通过(某种方式)添加到客户端(例如,Claude Desktop) .mcp.json:

{
  "mcpServers": { "mcpcore": { "command": "uv", "args": ["run", "mcp-core"] } }
}

可流式传输的HTTP + 认证 + 速率限制

export ANY_MCP_HTTP_HOST=0.0.0.0
export ANY_MCP_HTTP_PORT=8000
export ANY_MCP_HTTP_PATH=/mcp
export ANY_MCP_CORS_ALLOW_ORIGINS=http://localhost:5173,http://localhost:3000
export ANY_MCP_CORS_EXPOSE_HEADERS=Mcp-Session-Id

# Keys in JSON &/or Redis
export ANY_MCP_ENABLE_AUTH=true
export ANY_MCP_KEYS_PATH=./keys.json
export ANY_MCP_REDIS_URL=redis://localhost:6379/0

# Rate limiting
export ANY_MCP_RATE_LIMIT=true
export ANY_MCP_RATE_WINDOW_S=60
export ANY_MCP_RATE_MAX=300

uv run mcp-core-http

客户示例

  • curl 健康检查:
    curl -H "Authorization: Bearer sk_live_demo" http://127.0.0.1:8000/healthz
    
  • python fastmcp 客户:
    import asyncio
    from fastmcp import Client
    
    async def main():
        async with Client("http://127.0.0.1:8000/mcp") as client:
            tools = await client.list_tools()
            print("Tools:", [t.name for t in tools])
            result = await client.call_tool("ping", {})
            print("Ping:", result.data)
    
    asyncio.run(main())
    

管理员命令行界面(Admin CLI)

# add a key with scopes
uv run mcp-core-admin keys add --key sk_live_ABC --scopes tools:*,resources:*,prompts:*
# list/revoke/update
uv run mcp-core-admin keys list
uv run mcp-core-admin keys revoke --key sk_live_ABC
uv run mcp-core-admin keys set-scopes --key sk_live_ABC --scopes tools:ping,resources:time
# clean up revoked entries (JSON or Redis stores)
uv run mcp-core-admin keys cleanup

反向代理

确保你的代理服务器保留(所需设置/数据等) Authorization, X-API-Key,以及 Mcp-Session-Id 标题;暴露 Mcp-Session-Id 通过CORS(跨源资源共享)。

Kubernetes(通常简称为K8s)

使用Helm图表在 chart/设置图像、环境和入口 values.yaml:

helm upgrade --install mcpcore ./chart

添加你自己的功能

拖放文件,它们将自动注册:

  • src/mcp_core/tools/my_tool.py (与)一起;带有;用 @mcp.tool()
  • src/mcp_core/resources/my_res.py 和;与 @mcp.resource("scheme://{param}")
  • src/mcp_core/prompts/my_prompt.py 和;与 @mcp.prompt()

最佳实践

见 BEST_PRACTICES.md 关于此仓库的工具/资源设计、安全性、性能、测试及运维方面的指导。

安全提示

  • 默认设置对本地开发较为宽松:在生产环境之前,请启用认证并固定(版本/配置) ANY_MCP_CORS_ALLOW_ORIGINS并且在TLS之后运行。
  • 建议使用基于 Redis 的速率限制,并将密钥存储在保险库或密钥管理器中。
  • 定期更换密钥,撤销未使用的密钥,并执行 uv run mcp-core-admin keys cleanup 以清除过时条目。

开发工作流程

  • 安装开发依赖项: uv pip install -e .
  • 运行检查: ./scripts/check.sh
  • 工具自动从(某处)注册 src/mcp_core/{tools,resources,prompts}; 在下方添加配套测试 tests/.