Bernerspace

Bernerspace

🚀 伯纳斯空间(Bernerspace)

伯纳斯空间是一个统一的MCP服务器,支持所有启用OAuth的集成服务。它解决了当前MCP服务器使用和集成过程中的痛点,只需一个服务器、一个JWT,就能轻松集成多种工具,为用户提供便捷的使用体验。

GitHub stars Issues Docs

🚀 用于所有支持OAuth集成的统一MCP服务器
一个服务器 · 一个JWT · 多种工具

当前实时集成:Slack — 47个工具 已测试并可用
🔜 即将推出: Gmail · Google日历 · Notion
🎯 目标: 100+ 集成

🚀 快速开始

1. 环境配置

创建一个 .env 文件,并设置以下变量:

JWT_SECRET=your-jwt-signing-secret
DATABASE_URL=postgresql://localhost:5432/mcp_server
CLIENT_ID=
CLIENT_SECRET=
SLACK_REDIRECT_URI=http://localhost:8000/mcp/slack/oauth/callback

2. 安装依赖(二选一)

  • 使用pip
    python3 -m venv .venv && source .venv/bin/activate
    pip install -e .
    
  • 使用uv
    uv venv && source .venv/bin/activate
    uv pip install -e .
    

3. 运行服务器

  • 使用Python
    python server.py
    
    服务器将监听 http://localhost:8000
  • 使用Docker
    docker build -t bernerspace-mcp .
    docker run --env-file .env -p 8000:8000 bernerspace-mcp
    
    服务器将监听 http://localhost:8000
  • 使用Docker Compose
    docker compose up -d
    

4. 创建JWT以调用MCP服务器

python generate_jwt.py --user-id 

使用打印出的令牌作为:Authorization: Bearer TOKEN

✨ 主要特性

解决痛点

目前使用或集成MCP服务器存在诸多痛点,而伯纳斯空间有效解决了这些问题:

  • 大多数MCP服务器缺乏OAuth功能,限制了用户体验。伯纳斯空间具备完善的OAuth中间件,为用户提供更好的使用体验。
  • 每个MCP服务器都需要单独部署和管理,增加了运营成本。伯纳斯空间实现了统一部署和管理,降低了运营成本。
  • 集成混乱:不同MCP服务器的认证层不同,使得统一集成几乎不可能。伯纳斯空间提供了一致的MCP工具接口,实现了统一集成。

功能优势

  • 通过中间件在服务间使用单个JWT(HS256,验证发行者/受众)。
  • 每个集成都有OAuth中间件(Slack已上线;更多即将推出),并使用数据库支持的令牌存储。
  • 为每个服务提供一致的MCP工具接口。
  • 提供可自托管的统一端点,例如:

📦 安装指南

安装步骤请参考快速开始部分。

💻 使用示例

基础用法

VS Code MCP客户端配置

示例客户端条目(mcp.json):

{
"servers": {
"slack": {
"url": "http://localhost:8000/mcp/slack",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_JWT"
}
}
}
}

如果用户尚未完成OAuth,工具调用将返回一个包含 requires_auth: trueoauth_url 的对象,你可以打开该URL完成授权。

VS Code MCP客户端设置

在VS Code用户设置中使用此 mcp.json(将 JWT 替换为你生成的令牌):

{
"servers": {
"slack": {
"url": "http://localhost:8000/mcp/slack",
"type": "http",
"headers": {
"Authorization": "Bearer JWT"
}
}
},
"inputs": []
}

高级用法

LangChain示例

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent

client = MultiServerMCPClient(
{
"slack": {
"transport": "streamable_http",
"url": "http://localhost:8000/mcp/slack",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
},
}
}
)

tools = await client.get_tools()
agent = create_react_agent("openai:gpt-4.1", tools)
response = await agent.ainvoke({"messages": "Can you send hello message to my #general groups?"})

📚 详细文档

所有设置说明、集成指南和示例都可以在我们的Notion文档中找到: 🔗 伯纳斯空间快速入门文档

文档会定期更新,包含以下内容:

  • 新集成的快速入门指南
  • 分步安装说明
  • 每个工具的使用示例
  • 路线图和贡献指南

🔧 技术细节

OAuth流程(Slack)

  • GET /mcp/slack 返回 oauth_url 和授权工作区的说明。
  • Slack重定向到 SLACK_REDIRECT_URI(默认为 /mcp/slack/oauth/callback)。
  • 服务器交换代码,丰富令牌详细信息,并将其存储在Postgres中。
  • 令牌存储在表 oauth_tokens 中,复合键为 (client_id, integration_type),其中 client_id = 你的JWT主题 (sub)。

数据库

  • 使用Alembic管理架构(包含迁移)。
  • 表:oauth_tokens(client_id, integration_type, token_json, stored_at)
  • 通过 DATABASE_URL 配置Postgres。

📄 许可证

本项目采用 MIT许可证 进行许可。

  • 0 关注
  • 0 收藏,24 浏览
  • system 提出于 2025-10-03 08:12

相似服务问题

相关AI产品