模型上下文协议服务器

一个自托管的模型上下文协议服务器,提供持久化内存、OAuth认证和外部MCP代理功能,适用于AI编程助手如Claude Code和Codex。

  • by ST0MP-EE5
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ST0MP-EE5/mcp-server

使用说明

MCP 服务器

自托管 模型上下文协议(MCP) 具有持久内存、OAuth身份验证和外部MCP代理的服务器。为Claude Code、Codex和其他AI编码助手部署自己的MCP服务器。

实时服务器: https://mcp.m9m.dev

特性

  • GitHub OAuth -使用GitHub Device Flow进行身份验证(无需重定向URL)
  • 持久内存 -由mem0驱动的跨会话内存(准确率提高26%)
  • 外部MCP代理 -GitHub、Greptile、Linear、Context7工具
  • 插件系统 -Hookify用于行为规则,Ralph Loop用于迭代开发
  • 技能注册表 -AI助手的可重用指令集
  • SSE协议 -实时MCP通信

快速开始

对于用户(连接到现有服务器)

# Authenticate with GitHub
curl -s -X POST https://mcp.m9m.dev/oauth/device | jq '.'
# Go to the URL shown, enter the code
curl -s -X POST https://mcp.m9m.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{"user_code":"YOUR-CODE"}' | jq '.access_token'

增添 ~/.claude/settings.json:

{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.m9m.dev/mcp/sse"],
      "env": {
        "MCP_HEADERS": "Authorization: Bearer YOUR_TOKEN"
      }
    }
  }
}

面向开发人员(自助主机)

git clone https://github.com/ST0MP-EE5/mcp-server.git
cd mcp-server
npm install
cp .env.example .env  # Configure your secrets
npm run dev

看 设置.md 有关详细的设置说明。

项目结构

mcp-server/
├── mcp-server.yaml      # Main configuration
├── .env                 # Environment secrets
├── src/                 # TypeScript source
│   ├── index.ts         # Server entry point
│   ├── mcp-gateway.ts   # MCP protocol + memory tools
│   ├── memory/          # mem0 integration
│   └── oauth/           # GitHub OAuth
├── plugins/             # Claude Code plugins
│   ├── hookify/         # Behavior rules engine
│   ├── ralph-loop/      # Iterative AI loops
│   ├── code-simplifier/ # Code simplification skill
│   └── external/        # External MCP templates
│       ├── github/
│       ├── greptile/
│       ├── linear/
│       └── context7/
├── hooks/               # Reusable hookify rules
├── configs/             # IDE configs (CLAUDE.md, AGENTS.md)
└── specs/               # Feature specifications

可用工具

轮毂工具(内置)

工具 说明
mcp__mcp-server__mcp__list_mcps 列出所有连接的MCP
mcp__mcp-server__mcp__list_skills 列出可用技能
mcp__mcp-server__mcp__get_skill 获取技能内容
mcp__mcp-server__mcp__health 服务器健康检查

内存工具(mem0)

工具 说明
mcp__memory_add 存储信息中的回忆
mcp__memory_search 记忆的语义搜索
mcp__memory_list 列出所有带分页的内存
mcp__memory_delete 删除特定内存
mcp__memory_delete_all 删除所有内存(仅限于用户)

外部MCP

MCP 可用工具
GitHub 存储库管理、问题、PR、代码搜索
爬行兽 人工智能驱动的代码库搜索和理解
线性 项目管理、问题、周期
背景7 上下文管理

认证

GitHub OAuth(推荐)

# 1. Start device flow
curl -s -X POST https://mcp.m9m.dev/oauth/device

# 2. Go to https://github.com/login/device and enter the code

# 3. Get your token
curl -s -X POST https://mcp.m9m.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{"user_code":"YOUR-CODE"}'

代币有效期为30天。内存的作用域为您的GitHub用户名。

API密钥(旧版)

生成一个密钥并将其哈希值添加到 mcp-server.yaml:

openssl rand -hex 32
echo -n "your_key" | shasum -a 256 | awk '{print "sha256:"$1}'

配置

mcp-server.yaml

version: "1.0"
name: "mcp-server"

auth:
  oauth:
    enabled: true
    provider: "github"
    client_id: "${GITHUB_CLIENT_ID}"
    jwt_secret: "${JWT_SECRET}"
    token_expiry: "30d"

mcps:
  external:
    - name: "github"
      url: "https://api.githubcopilot.com/mcp/"
      auth:
        type: "bearer"
        token: "${GITHUB_PERSONAL_ACCESS_TOKEN}"
      enabled: true

    - name: "greptile"
      url: "https://api.greptile.com/mcp"
      auth:
        type: "bearer"
        token: "${GREPTILE_API_KEY}"
      enabled: true

    - name: "linear"
      url: "https://mcp.linear.app/mcp"
      auth:
        type: "none"
      enabled: true

  local:
    - name: "context7"
      command: "npx"
      args: ["-y", "@upstash/context7-mcp"]
      enabled: true

memory:
  enabled: true
  provider: "cloud"
  cloud:
    apiKey: "${MEM0_API_KEY}"

plugins:
  - name: "hookify"
    path: "./plugins/hookify"
    enabled: true

  - name: "ralph-loop"
    path: "./plugins/ralph-loop"
    enabled: true

skills:
  - name: "code-simplifier"
    file: "./plugins/code-simplifier/agents/code-simplifier.md"
    tags: ["refactoring", "code-quality"]

所需的环境变量

# OAuth
GITHUB_CLIENT_ID=your_github_oauth_app_client_id
JWT_SECRET=your_jwt_secret_for_signing_tokens

# External MCPs
GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token
GREPTILE_API_KEY=your_greptile_key

# Memory
MEM0_API_KEY=your_mem0_api_key

插件

挂钩

制定规则以防止不必要的行为:

  • 危险命令前发出警告(rm -rf)
  • 阻止硬编码的秘密
  • 执行代码质量标准

看 钩子/ 对于可用的规则。

拉尔夫·卢普(Ralph Wiggum)

在迭代开发任务的连续循环中运行Claude。

API终点

端点 方法 身份验证 描述
/health GET 否 基本健康检查
/mcp/health GET 否 MCP状态的详细运行状况
/mcp/sse GET 是 MCP客户端的SSE连接
/mcp/messages POST 是 MCP消息处理程序
/oauth/device POST 否 启动GitHub设备流
/oauth/token POST 否 令牌的交换代码
/api/v1/registry GET 是 完整资源注册表
/api/v1/skills/:name 获取 是 获取技能内容

部署

DigitalOcean应用平台(推荐)

doctl apps create --spec .do/app.yaml

看 设置.md 了解详细的部署说明。

码头工人

docker build -t mcp-server .
docker run -d -p 3000:3000 --env-file .env mcp-server

发展

npm run dev      # Development with hot-reload
npm run build    # Build TypeScript
npm start        # Production
npm run lint     # ESLint
npm test         # Run tests

客户端设置

克劳德代码

{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.m9m.dev/mcp/sse"],
      "env": {
        "MCP_HEADERS": "Authorization: Bearer YOUR_TOKEN"
      }
    }
  }
}

OpenAI Codex

创建 codex.json 在您的项目中:

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://mcp.m9m.dev/mcp/sse",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

运行: codex --mcp-config codex.json

许可证

麻省理工学院