pforge MCP server
Commit Nov 10, 2026Build MCP servers using declarative YAML configuration instead of writing boilerplate code.
Also known as paiml/pforge
- Stars
- 3
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.1.2
- Last commit
- Nov 10, 2026
- License
- MIT
What is pforge MCP?
pforge builds MCP servers using declarative YAML configuration instead of writing boilerplate code.
Summary generated from the project's README
About pforge MCP server
Developers who want to create Model Context Protocol servers without writing repetitive boilerplate code can use pforge to define their tools through YAML configuration. This framework generates optimized Rust code from your declarations, sitting on top of the pmcp SDK to handle protocol implementation and transport. You can manage your server by installing the pforge-cli via Cargo and using the pforge serve command to run your project.
The system supports four distinct handler types to suit different needs: native Rust functions for type safety, CLI commands for shell execution, HTTP for proxying endpoints, and pipelines for chaining tools together. While it is built on Rust, it offers a Deno/TypeScript bridge that allows for type-safe handler definitions and runtime schema validation. This approach enables rapid development by shifting the focus from protocol plumbing to tool logic and configuration.
What you can do with it
- 1Rapidly scaffold a new serverA developer can quickly initialize a new project structure by running a single command.
- 2Execute shell commands as toolsYou can create an MCP tool that runs local system commands using the CLI handler type.
- 3Proxy external web servicesDevelopers can build a server that acts as a bridge to existing web APIs using HTTP handlers.
- 4Build servers using TypeScriptUsers preferring web technologies can implement handlers using Deno and TypeScript instead of pure Rust.
Written from the project's README. Every use case is checked against a quote from it.
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablepaiml/pforge is public and reachablegithub.com/paiml/pforge ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-10github.com/paiml/pforge ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubpforge
A declarative framework for building Model Context Protocol (MCP) servers using YAML configuration.
MCP Server
Registry Name: io.github.paiml/pforge
pforge is available in the Model Context Protocol (MCP) Registry. Install it via:
# Via Cargo (recommended)
cargo install pforge-cli
# Then run as MCP server
pforge serve
For Maintainers: See MCP Registry Publishing Guide for publishing instructions.
What is pforge?
pforge lets you define MCP servers in YAML instead of writing boilerplate code. It's built on top of pmcp (rust-mcp-sdk) and generates optimized Rust code from your configuration.
Quick example:
forge:
name: my-server
version: 0.1.0
transport: stdio
tools:
- type: native
name: greet
description: "Greet someone"
handler:
path: handlers::greet_handler
params:
name: { type: string, required: true }
Installation
# From crates.io
cargo install pforge-cli
# From source
git clone https://github.com/paiml/pforge
cd pforge
cargo install --path crates/pforge-cli
Quick Start
# Create new project
pforge new my-server
cd my-server
# Run the server
pforge serve
The scaffolded project includes a working example handler. Edit pforge.yaml to add more tools, then implement handlers in src/handlers/.
Handler Types
pforge supports four handler types:
- Native - Rust functions with full type safety
- CLI - Execute shell commands
- HTTP - Proxy HTTP endpoints
- Pipeline - Chain multiple tools together
See the book for detailed examples of each type.
Language Bridges
pforge provides language bridges for building MCP servers in your preferred language:
Deno/TypeScript Bridge
Build type-safe MCP servers using TypeScript and Deno with native performance:
import { PforgeBridge } from "https://raw.githubusercontent.com/paiml/pforge/main/bridges/deno/bridge.ts";
const bridge = new PforgeBridge();
bridge.register({
name: "greet",
description: "Greet a user by name",
handler: (input: { name: string }) => ({
success: true,
data: { message: `Hello, ${input.name}!` },
}),
});
const result = await bridge.execute("greet", { name: "Alice" });
console.log(result.data);
Features:
- Type-safe handler definitions with TypeScript generics
- Runtime schema validation with no external dependencies
- O(1) handler lookup performance
- Both sync and async handler support
- 74+ tests passing with full quality gates
Documentation: bridges/deno/README.md
Coming Soon
- Python bridge (FFI-based with asyncio support)
- Go bridge (CGo-based with goroutine support)
- Node.js bridge (Native addon with N-API)
Documentation
- Book - Complete guide with examples and comparisons
- Architecture - Technical design details
- User Guide - Usage guide
- Implementation Status - Current project status
- CLAUDE.md - Development workflow for contributors
Examples
- hello-world - Minimal native handler example
- calculator - Math operations with tests
- rest-api-proxy - HTTP handler examples
Project Status
Version: 0.1.2
Published crates:
pforge-config- Configuration parsingpforge-macro- Procedural macrospforge-runtime- Core runtime (depends on pmcp)pforge-codegen- Code generationpforge-cli- CLI tool
Test results: 120+ tests passing (90+ unit/integration, 12 property-based, 8 quality gates, 5+ doctests)
See IMPLEMENTATION_STATUS.md for detailed progress.
Development
# Run tests
cargo test --all
# Run quality gates
make quality-gate
# Watch mode
make watch
# Build release
make build-release
See CLAUDE.md for full development workflow.
Architecture
pforge is built as a framework on top of pmcp (rust-mcp-sdk):
┌─────────────────────────────────┐
│ pforge (Framework Layer) │
│ - YAML → Rust codegen │
│ - Handler registry │
│ - State management │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ pmcp (Protocol SDK) │
│ - MCP protocol implementation │
│ - Transport handling │
└─────────────────────────────────┘
When to use pmcp directly: You need fine-grained control over MCP protocol details or want to avoid code generation.
When to use pforge: You want declarative configuration and rapid MCP server development with less code.
Contributing
Contributions are welcome. Please:
- Read CLAUDE.md for development standards
- Check ROADMAP.md for current priorities
- Ensure tests pass:
cargo test --all - Ensure quality gates pass:
make quality-gate
All commits are validated by pre-commit hooks that check code formatting, linting, tests, complexity, coverage, and markdown link validity (using pmat validate-docs) to prevent broken documentation links.
License
MIT - see LICENSE
Acknowledgments
Built on pmcp by Pragmatic AI Labs.
pforge MCP questions
What are the different handler types supported by pforge?
pforge supports Native (Rust functions), CLI (shell commands), HTTP (proxying endpoints), and Pipeline (chaining tools) handler types.
Can I build MCP servers using TypeScript?
Yes, pforge provides a Deno/TypeScript bridge that allows you to build type-safe MCP servers using TypeScript and Deno.
How do I install pforge?
You can install the CLI via Cargo using the command 'cargo install pforge-cli'.
When should I use pforge instead of pmcp directly?
Use pforge when you want declarative configuration and rapid development with less code, whereas pmcp is better for fine-grained control over protocol details.