MCP Blog API
# MCP Blog API
A simple blog API service built with FastMCP and httpx. This project supports uv for fast, reliable Python package management and environment setup.
## Description
This project provides a set of API tools to interact with a mock blog API service. It allows users to fetch all blogs, search for blogs by title, and add new blog posts. The project includes a uv.lock file for reproducible dependency management.
## Features
- Fetch all blogs from the mock API
- Search for blogs by title
- Add new blog posts
## Requirements
- Python 3.13 or higher
- httpx 0.28.1 or higher
- mcp 1.9.0 or higher
## Installation
### Using uv (Recommended)
```bash
# Clone the repository
git clone https://github.com/yourusername/mcp-blog.git
cd mcp-blog
# Install dependencies with uv
uv pip install -e .
```
### Using pip
```bash
# Clone the repository
git clone https://github.com/yourusername/mcp-blog.git
cd mcp-blog
# Install dependencies
pip install -e .
```
## Usage
```python
# Import the MCP server
from main import mcp
# Get all blogs
blogs = mcp.tools.get_blogs()
# Search for blogs by title
search_results = mcp.tools.search_blogs(query="Python")
# Add a new blog
new_blog = mcp.tools.add_blog(title="My New Blog", body="This is the content of my new blog post.")
```
## Running the Server
### Using uv (Recommended)
```bash
uv python main.py
```
### Using standard Python
```bash
python main.py
```
## Environment Management
### Using uv (Recommended)
uv provides fast environment management for Python projects. Here's how to create and manage a virtual environment for this project:
```bash
# Create a new virtual environment
uv venv
# Activate the virtual environment
# On Unix/macOS
source .venv/bin/activate
# On Windows
.venv\Scripts\activate
# Install dependencies in the virtual environment
uv pip install -e .
# Update dependencies
uv pip sync
```
## API Reference
### get_blogs()
Fetches all blogs from the mock API.
### search_blogs(query: str)
Searches for blogs by title using the mock API.
### add_blog(title: str, body: str)
Adds a new blog to the mock API.
## License
[Add your license information here]
## Contributing
[Add contribution guidelines here]TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: add_blog creates new blogs, get_blogs retrieves all blogs, and search_blogs finds blogs by title. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern with snake_case: add_blog, get_blogs, and search_blogs. This predictability enhances readability and usability across the tool set.
With only 3 tools, the set feels thin for a blog API that typically requires CRUD operations. While the tools cover creation and retrieval, the absence of update and delete tools limits the server's scope, making it borderline appropriate.
The tool set is significantly incomplete for a blog API domain. It lacks update_blog and delete_blog tools, preventing full lifecycle management. This gap will likely cause agent failures when attempting to modify or remove blogs.