MCP服务器框架

MCPForge是一个提供文档化架构模式、即用模板和CLI的多语言MCP服务器构建框架。

  • by Richardmsbr
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 Richardmsbr/mcpforge

使用说明

MCPForge

模型上下文协议的体系结构模式框架


MCPForge是一个提供文档化架构模式、即用型模板和CLI的框架,用于跨多种语言构建MCP(模型上下文协议)服务器。

停止重新发明轮子。开始锻造生产就绪的MCP服务器。


为什么选择MCPForge?

MCP生态系统正在快速发展,但开发人员一再面临同样的挑战:

问题 MCPForge解决方案
没有标准化的模式 12+有文档记录的设计模式及其实现
特定语言知识 Python、TypeScript、Go、Rust的统一模板
锅炉板开销 CLI在几秒钟内生成生产就绪支架
安全漏洞 内置OAuth 2.1、速率限制和强化指南
扩展不确定性 微服务和网关的企业模式

特征

设计模式库

每个MCP用例的预构建、记录的模式:

Structural Patterns          Behavioral Patterns         Enterprise Patterns
-------------------          -------------------         -------------------
- Adapter                    - Command                   - API Gateway
- Facade                     - Strategy                  - Service Mesh
- Proxy                      - Observer                  - Circuit Breaker
- Decorator                  - Chain of Responsibility  - Bulkhead

多语言模板

具有一致架构的生产就绪模板:

templates/
  python/
    basic/           # Single-purpose MCP server
    enterprise/      # Auth, logging, monitoring
    microservices/   # Distributed MCP architecture
  typescript/
    basic/
    enterprise/
    microservices/
  go/
    basic/
    enterprise/
  rust/
    basic/
    enterprise/

强大的CLI

# Install globally
npm install -g mcpforge

# Create a new MCP server
mcpforge new my-server --lang python --pattern adapter

# Add a tool to existing server
mcpforge add tool search --server my-server

# Generate architecture diagram
mcpforge diagram my-server --output svg

# Validate server structure
mcpforge validate my-server

快速开始

1.安装CLI

npm install -g mcpforge

2.创建您的第一台服务器

mcpforge new my-first-mcp --lang python --pattern basic
cd my-first-mcp

3.运行和测试

# Python
pip install -e .
python -m my_first_mcp

# TypeScript
npm install
npm run dev

架构模式

适配器模式

将外部API转换为MCP兼容工具。

# Python Example
from mcpforge import MCPServer, tool, AdapterPattern

class GitHubAdapter(AdapterPattern):
    """Adapts GitHub API to MCP tools"""

    def __init__(self, token: str):
        self.client = GitHub(token)

    @tool(name="list_repos")
    async def list_repositories(self, org: str) -> list[dict]:
        """List repositories for an organization"""
        return await self.client.repos.list(org=org)

server = MCPServer("github-mcp")
server.register_adapter(GitHubAdapter(token=os.getenv("GITHUB_TOKEN")))
// TypeScript Example
import { MCPServer, tool, AdapterPattern } from 'mcpforge';

class GitHubAdapter extends AdapterPattern {
  private client: Octokit;

  constructor(token: string) {
    super();
    this.client = new Octokit({ auth: token });
  }

  @tool({ name: 'list_repos' })
  async listRepositories(org: string): Promise<Repository[]> {
    const { data } = await this.client.repos.listForOrg({ org });
    return data;
  }
}

网关模式

多个MCP服务器的集中入口点。

                    +------------------+
                    |   MCP Gateway    |
                    |  (Auth, Routing) |
                    +--------+---------+
                             |
         +-------------------+-------------------+
         |                   |                   |
+--------v-------+  +--------v-------+  +--------v-------+
|  GitHub MCP    |  |  Database MCP  |  |  Storage MCP   |
|    Server      |  |    Server      |  |    Server      |
+----------------+  +----------------+  +----------------+
# Gateway Implementation
from mcpforge import Gateway, route, authenticate

gateway = Gateway("mcp-gateway")

@gateway.route("/github/*")
@authenticate(oauth2=True)
async def github_route(request):
    return await gateway.proxy("github-mcp", request)

@gateway.route("/database/*")
@authenticate(api_key=True)
async def database_route(request):
    return await gateway.proxy("database-mcp", request)

更多图案

看 文档/模式/ 完整文档:


模板

Python模板

模板 用例 功能
basic 简单的MCP服务器 单一工具,stdio传输
enterprise 生产部署 OAuth 2.1、日志记录、指标
microservices 分布式系统 服务发现、跟踪

TypeScript模板

模板 用例 功能
basic 快速原型 最小依赖
enterprise 全栈应用程序 快速集成,SSE
microservices 可扩展系统 Docker、K8s清单

Go模板

模板 用例 功能
basic CLI工具 单个二进制输出
enterprise 高性能 连接池、指标

Rust模板

模板 用例 功能
basic 性能关键 异步运行时,最小分配
enterprise 系统集成 跟踪、定制运输

CLI参考

mcpforge <command> [options]

Commands:
  new <name>              Create a new MCP server project
  add <type> <name>       Add tool, resource, or prompt to existing project
  diagram <project>       Generate architecture diagram
  validate <project>      Validate project structure and code
  upgrade <project>       Upgrade to latest MCPForge patterns
  docs                    Open documentation in browser

Options:
  --lang, -l              Language: python, typescript, go, rust
  --pattern, -p           Pattern: basic, enterprise, microservices
  --transport, -t         Transport: stdio, sse, http
  --output, -o            Output format for diagrams: svg, png, mermaid
  --help, -h              Show help
  --version, -v           Show version

安全最佳实践

MCPForge实现了与MCP规范一致的安全模式:

认证

from mcpforge.security import OAuth2Provider, APIKeyAuth

# OAuth 2.1 (recommended for HTTP transport)
server.use_auth(OAuth2Provider(
    issuer="https://auth.example.com",
    audience="mcp-server"
))

# API Key (for internal services)
server.use_auth(APIKeyAuth(
    header="X-API-Key",
    validator=validate_key
))

速率限制

from mcpforge.security import RateLimiter

server.use_middleware(RateLimiter(
    requests_per_minute=60,
    burst=10
))

输入验证

from mcpforge.validation import Schema, validate

@tool(name="query_database")
@validate(Schema({
    "query": str,
    "limit": int & Range(1, 100)
}))
async def query_database(query: str, limit: int = 10):
    # Input is validated before execution
    pass

例子

GitHub集成服务器

mcpforge new github-mcp --lang python --pattern adapter
cd github-mcp
# src/github_mcp/server.py
from mcpforge import MCPServer, tool
from github import Github

server = MCPServer("github-mcp")

@server.tool()
async def search_code(query: str, repo: str) -> list[dict]:
    """Search code in a GitHub repository"""
    g = Github(os.getenv("GITHUB_TOKEN"))
    results = g.search_code(f"{query} repo:{repo}")
    return [{"path": r.path, "url": r.html_url} for r in results[:10]]

@server.tool()
async def create_issue(repo: str, title: str, body: str) -> dict:
    """Create a new issue in a repository"""
    g = Github(os.getenv("GITHUB_TOKEN"))
    repo = g.get_repo(repo)
    issue = repo.create_issue(title=title, body=body)
    return {"number": issue.number, "url": issue.html_url}

if __name__ == "__main__":
    server.run()

数据库查询服务器

mcpforge new database-mcp --lang typescript --pattern enterprise
cd database-mcp
// src/server.ts
import { MCPServer, tool } from 'mcpforge';
import { Pool } from 'pg';

const server = new MCPServer('database-mcp');
const pool = new Pool({ connectionString: process.env.DATABASE_URL });

server.tool({
  name: 'query',
  description: 'Execute a read-only SQL query',
  schema: {
    sql: { type: 'string', description: 'SQL query to execute' },
    params: { type: 'array', optional: true }
  }
}, async ({ sql, params }) => {
  // Only allow SELECT statements
  if (!sql.trim().toLowerCase().startsWith('select')) {
    throw new Error('Only SELECT queries are allowed');
  }
  const result = await pool.query(sql, params);
  return result.rows;
});

server.run();

架构图

MCPForge根据您的代码自动生成架构图:

mcpforge diagram my-server --output svg
+------------------------------------------------------------------+
|                         MCP Client                                |
|                    (Claude, ChatGPT, etc.)                        |
+----------------------------------+-------------------------------+
                                   |
                                   v
+------------------------------------------------------------------+
|                        MCP Gateway                                |
|          [Auth] [Rate Limit] [Logging] [Routing]                  |
+--------+-------------------+-------------------+-----------------+
         |                   |                   |
         v                   v                   v
+----------------+  +----------------+  +----------------+
|  GitHub MCP    |  |  Database MCP  |  |  Storage MCP   |
|                |  |                |  |                |
| Tools:         |  | Tools:         |  | Tools:         |
| - search_code  |  | - query        |  | - upload       |
| - create_issue |  | - list_tables  |  | - download     |
| - list_repos   |  | - describe     |  | - list_files   |
+----------------+  +----------------+  +----------------+

路线图

v1.0(当前)

  • [x] 核心设计模式库
  • [x] Python模板(基础版、企业版)
  • [x] TypeScript模板(基础、企业)
  • [x] CLI脚手架工具
  • [x] 文件网站

v1.1(计划中)

  • []Go模板
  • []Rust模板
  • []Visual Studio代码扩展
  • []架构图生成器

v2.0(未来)

  • []MCP网关实施
  • []Kubernetes操作符
  • []监控仪表板
  • []插件市场

贡献

我们欢迎社区的贡献。看 贡献.md 作为指导方针。

开发环境

git clone https://github.com/Richardmsbr/mcpforge.git
cd mcpforge
npm install
npm run build
npm link

运行测试

npm test                    # Unit tests
npm run test:integration    # Integration tests
npm run test:e2e           # End-to-end tests

社区


许可证

MIT许可证-请参阅 许可证 了解详情。


致谢

MCPForge以MCP社区的工作为基础:


精确建造。为生产而锻造。


作者

Richard Sakaguchi -解决方案架构师和人工智能工程师