使用说明
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 -解决方案架构师和人工智能工程师
- 网站: 阪国
- SEO工具: seoexpress.com.cn
- 拥抱脸: yoshii ai
- 领英: 理查德·ms