MCP Framework
MCP框架
用于构建模型上下文协议 (MCP) 服务器的 TypeScript 框架。
与原版的差异
该分支(@ronangrant/mcp-framework)包括以下改进:
用仅控制台的日志记录替换基于文件的日志记录,以获得更好的兼容性和可靠性
消除了对文件系统日志的依赖,消除了 ENOENT 错误
简化日志记录实现,同时保持相同的接口
所有日志现在通过 console.error() 输出到 stderr
Related MCP server: MCP Server Starter (TypeScript)
安装
npm install @ronangrant/mcp-framework用法
创建一个新的 MCP 服务器:
import { MCPServer } from '@ronangrant/mcp-framework';
const server = new MCPServer({
name: "my-server",
version: "1.0.0"
});
await server.start();特征
用于创建 MCP 服务器的易于使用的 API
内置对工具、提示和资源的支持
带有控制台输出的简化日志系统
全面支持 TypeScript
灵活的交通选择
执照
麻省理工学院
MCP-Framework 是一个使用 TypeScript 优雅地构建模型上下文协议 (MCP) 服务器的框架。
MCP-Framework 为您提供开箱即用的架构,并支持基于目录的自动工具、资源和提示符发现功能。使用我们强大的 MCP 抽象,您可以优雅地定义工具、资源或提示符。我们的命令行界面让您轻松上手 MCP 服务器。
特征
🛠️ 自动发现和加载工具、资源和提示
多种传输支持(stdio、SSE)
具有完全类型安全性的 TypeScript 优先开发
基于官方 MCP SDK 构建
易于使用的工具、提示和资源基类
SSE 端点的开箱即用身份验证
点击此处阅读完整文档
使用 mcp-framework 创建存储库
使用 CLI(推荐)
# Install the framework globally
npm install -g mcp-framework
# Create a new MCP server project
mcp create my-mcp-server
# Navigate to your project
cd my-mcp-server
# Your server is ready to use!CLI 使用
该框架提供了强大的 CLI 来管理您的 MCP 服务器项目:
项目创建
# Create a new project
mcp create <your project name here>添加工具
# Add a new tool
mcp add tool price-fetcher添加提示
# Add a new prompt
mcp add prompt price-analysis添加资源
# Add a new prompt
mcp add resource market-data开发工作流程
创建你的项目:
mcp create my-mcp-server
cd my-mcp-server根据需要添加工具:
mcp add tool data-fetcher mcp add tool data-processor mcp add tool report-generator建造:
npm run build添加到 MCP 客户端(请参阅下面的 Claude Desktop 示例)
与 Claude Desktop 一起使用
本地开发
将此配置添加到您的 Claude Desktop 配置文件:
MacOS :`~/Library/Application Support/Claude/claude_desktop_config.json` Windows :`%APPDATA%/Claude/claude_desktop_config.json`
{
"mcpServers": {
"${projectName}": {
"command": "node",
"args":["/absolute/path/to/${projectName}/dist/index.js"]
}
}
}发布后
将此配置添加到您的 Claude Desktop 配置文件:
MacOS :`~/Library/Application Support/Claude/claude_desktop_config.json` Windows :`%APPDATA%/Claude/claude_desktop_config.json`
{
"mcpServers": {
"${projectName}": {
"command": "npx",
"args": ["${projectName}"]
}
}
}构建和测试
更改你的工具
运行 `npm run build` 进行编译
服务器将在启动时自动加载您的工具
快速入门
创建工具
import { MCPTool } from "mcp-framework";
import { z } from "zod";
interface ExampleInput {
message: string;
}
class ExampleTool extends MCPTool<ExampleInput> {
name = "example_tool";
description = "An example tool that processes messages";
schema = {
message: {
type: z.string(),
description: "Message to process",
},
};
async execute(input: ExampleInput) {
return `Processed: ${input.message}`;
}
}
export default ExampleTool;设置服务器
import { MCPServer } from "mcp-framework";
const server = new MCPServer();
// OR (mutually exclusive!) with SSE transport
const server = new MCPServer({
transport: {
type: "sse",
options: {
port: 8080 // Optional (default: 8080)
}
}
});
// Start the server
await server.start();传输配置
stdio 传输(默认)
如果没有提供传输配置,则默认使用 stdio 传输:
const server = new MCPServer();
// or explicitly:
const server = new MCPServer({
transport: { type: "stdio" }
});上交所运输
要使用服务器发送事件 (SSE) 传输:
const server = new MCPServer({
transport: {
type: "sse",
options: {
port: 8080, // Optional (default: 8080)
endpoint: "/sse", // Optional (default: "/sse")
messageEndpoint: "/messages", // Optional (default: "/messages")
cors: {
allowOrigin: "*", // Optional (default: "*")
allowMethods: "GET, POST, OPTIONS", // Optional (default: "GET, POST, OPTIONS")
allowHeaders: "Content-Type, Authorization, x-api-key", // Optional (default: "Content-Type, Authorization, x-api-key")
exposeHeaders: "Content-Type, Authorization, x-api-key", // Optional (default: "Content-Type, Authorization, x-api-key")
maxAge: "86400" // Optional (default: "86400")
}
}
}
});CORS 配置
SSE 传输支持灵活的 CORS 配置。默认情况下,它使用适合开发的宽松设置。对于生产环境,您应该根据自己的安全需求配置 CORS:
const server = new MCPServer({
transport: {
type: "sse",
options: {
// Restrict to specific origin
cors: {
allowOrigin: "https://myapp.com",
allowMethods: "GET, POST",
allowHeaders: "Content-Type, Authorization",
exposeHeaders: "Content-Type, Authorization",
maxAge: "3600"
}
}
}
});
// Or with multiple allowed origins
const server = new MCPServer({
transport: {
type: "sse",
options: {
cors: {
allowOrigin: "https://app1.com, https://app2.com",
allowMethods: "GET, POST, OPTIONS",
allowHeaders: "Content-Type, Authorization, Custom-Header",
exposeHeaders: "Content-Type, Authorization",
maxAge: "86400"
}
}
}
});验证
MCP 框架为 SSE 端点提供了可选的身份验证方式。您可以选择 JWT 或 API Key 身份验证,也可以实现自定义的身份验证提供程序。
JWT 身份验证
import { MCPServer, JWTAuthProvider } from "mcp-framework";
import { Algorithm } from "jsonwebtoken";
const server = new MCPServer({
transport: {
type: "sse",
options: {
auth: {
provider: new JWTAuthProvider({
secret: process.env.JWT_SECRET,
algorithms: ["HS256" as Algorithm], // Optional (default: ["HS256"])
headerName: "Authorization" // Optional (default: "Authorization")
}),
endpoints: {
sse: true, // Protect SSE endpoint (default: false)
messages: true // Protect message endpoint (default: true)
}
}
}
}
});客户端必须在授权标头中包含有效的 JWT 令牌:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...API 密钥认证
import { MCPServer, APIKeyAuthProvider } from "mcp-framework";
const server = new MCPServer({
transport: {
type: "sse",
options: {
auth: {
provider: new APIKeyAuthProvider({
keys: [process.env.API_KEY],
headerName: "X-API-Key" // Optional (default: "X-API-Key")
})
}
}
}
});客户端必须在 X-API-Key 标头中包含有效的 API 密钥:
X-API-Key: your-api-key自定义身份验证
您可以通过实现AuthProvider接口来实现自己的身份验证提供程序:
import { AuthProvider, AuthResult } from "mcp-framework";
import { IncomingMessage } from "node:http";
class CustomAuthProvider implements AuthProvider {
async authenticate(req: IncomingMessage): Promise<boolean | AuthResult> {
// Implement your custom authentication logic
return true;
}
getAuthError() {
return {
status: 401,
message: "Authentication failed"
};
}
}执照
麻省理工学院
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA TypeScript implementation of a Model Context Protocol server that provides a frictionless framework for developers to build and deploy AI tools and prompts, focusing on developer experience with zero boilerplate and automatic tool registration.86714MIT
- FlicenseNot gradedqualityDmaintenanceA minimal, production-ready TypeScript starter template for building Model Context Protocol (MCP) servers with auto-loading architecture for tools, resources, and prompts. Provides boilerplate code, generators, and examples to quickly create MCP servers that can connect AI applications to any data source or tool.-
- AlicenseNot gradedqualityDmaintenanceA TypeScript framework for building Model Context Protocol servers with a decorator-based API, enabling custom tools, resources, and prompts for AI applications.22MIT
- AlicenseNot gradedqualityAmaintenanceA TypeScript toolkit for building Model Context Protocol servers with tools, prompts, resources, middleware, and testing helpers, reducing boilerplate.146MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ronangrant/mcp-framework'
If you have feedback or need assistance with the MCP directory API, please join our Discord server