MCP NPX Fetch
# MCP NPX Fetch
<div align="center">
[](https://www.npmjs.com/package/@tokenizin/mcp-npx-fetch)
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
[](https://github.com/modelcontextprotocol)
A powerful MCP server for fetching and transforming web content into various formats (HTML, JSON, Markdown, Plain Text) with ease.
[Installation](#installation) •
[Features](#features) •
[Usage](#usage) •
[Documentation](#documentation) •
[Contributing](#contributing)
</div>
<a href="https://glama.ai/mcp/servers/m2a0ue08n2"><img width="380" height="200" src="https://glama.ai/mcp/servers/m2a0ue08n2/badge" alt="NPX Fetch MCP server" /></a>
---
## 🚀 Features
- 🌐 **Universal Content Fetching**: Supports HTML, JSON, plain text, and Markdown formats
- 🔒 **Custom Headers Support**: Add authentication and custom headers to your requests
- 🛠 **Built-in Transformations**: Automatic conversion between formats
- ⚡ **High Performance**: Built with modern JavaScript features and optimized for speed
- 🔌 **MCP Compatible**: Seamlessly integrates with Claude Desktop and other MCP clients
- 🎯 **Type-Safe**: Written in TypeScript with full type definitions
## 📦 Installation
### NPM Global Installation
```bash
npm install -g @tokenizin/mcp-npx-fetch
```
### Direct Usage with NPX
```bash
npx @tokenizin/mcp-npx-fetch
```
## 📚 Documentation
### Available Tools
#### `fetch_html`
Fetches and returns raw HTML content from any URL.
```typescript
{
url: string; // Required: Target URL
headers?: { // Optional: Custom request headers
[key: string]: string;
};
}
```
#### `fetch_json`
Fetches and parses JSON data from any URL.
```typescript
{
url: string; // Required: Target URL
headers?: { // Optional: Custom request headers
[key: string]: string;
};
}
```
#### `fetch_txt`
Fetches and returns clean plain text content, removing HTML tags and scripts.
```typescript
{
url: string; // Required: Target URL
headers?: { // Optional: Custom request headers
[key: string]: string;
};
}
```
#### `fetch_markdown`
Fetches content and converts it to well-formatted Markdown.
```typescript
{
url: string; // Required: Target URL
headers?: { // Optional: Custom request headers
[key: string]: string;
};
}
```
## 🔧 Usage
### CLI Usage
Start the MCP server directly:
```bash
mcp-npx-fetch
```
Or via npx:
```bash
npx @tokenizin/mcp-npx-fetch
```
### Claude Desktop Integration
1. Locate your Claude Desktop configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%/Claude/claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
2. Add the following configuration to your `mcpServers` object:
```json
{
"mcpServers": {
"fetch": {
"command": "npx",
"args": ["-y", "@tokenizin/mcp-npx-fetch"],
"env": {}
}
}
}
```
## 💻 Local Development
1. Clone the repository:
```bash
git clone https://github.com/tokenizin-agency/mcp-npx-fetch.git
cd mcp-npx-fetch
```
2. Install dependencies:
```bash
npm install
```
3. Start development mode:
```bash
npm run dev
```
4. Run tests:
```bash
npm test
```
## 🛠 Technical Stack
- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk) - Core MCP functionality
- [JSDOM](https://github.com/jsdom/jsdom) - HTML parsing and manipulation
- [Turndown](https://github.com/mixmark-io/turndown) - HTML to Markdown conversion
- [TypeScript](https://www.typescriptlang.org/) - Type safety and modern JavaScript features
- [Zod](https://github.com/colinhacks/zod) - Runtime type validation
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
<div align="center">
Made with ❤️ by <a href="https://github.com/tokenizin-agency">PT Tokenizin Technology Agency</a>
</div>
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose based on the output format (HTML, JSON, Markdown, plain text), with no overlap in functionality. The descriptions explicitly differentiate them by content type, making tool selection straightforward for an agent.
All tools follow a consistent verb_noun pattern with 'fetch_' prefix and suffix indicating the output format (e.g., fetch_html, fetch_json). The naming is perfectly uniform and predictable across all four tools.
With 4 tools, this server is well-scoped for fetching content in different formats. Each tool earns its place by covering a distinct output type, and the count is neither too thin nor excessive for the domain of URL-based content retrieval.
The toolset covers the core fetching operations for common content types (HTML, JSON, Markdown, plain text), with no dead ends. A minor gap exists in not handling other formats like XML or binary data, but agents can work around this for most use cases.