Skip to main content
Glama
jsonplaceholder-mcp

jsonplaceholder-mcp

by chatre7

JSONPlaceholder MCP Server

An MCP (Model Context Protocol) server that provides tools to interact with the JSONPlaceholder API - a free fake REST API for testing and prototyping.

Features

This MCP server exposes the following tools:

Tools

  1. get_posts - Retrieve posts from JSONPlaceholder

    • Get all posts

    • Get a specific post by ID

    • Filter posts by user ID

  2. get_users - Retrieve user information

    • Get all users

    • Get a specific user by ID

  3. get_comments - Retrieve comments

    • Get all comments

    • Get a specific comment by ID

    • Get comments for a specific post

  4. get_todos - Retrieve todos

    • Get all todos

    • Get a specific todo by ID

    • Filter todos by user ID

  5. create_post - Create a new post (simulated)

    • Requires: userId, title, body

  6. update_post - Update an existing post (simulated)

    • Requires: id

    • Optional: userId, title, body

  7. delete_post - Delete a post (simulated)

    • Requires: id

Resources

  • jsonplaceholder://api-info - Information about the JSONPlaceholder API

Related MCP server: mcp-jsonplaceholder

Installation

  1. Clone this repository:

git clone <repository-url>
cd jsonplaceholder-mcp
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Usage

Running the Server

npm start

Development Mode

npm run dev

Watch Mode (for development)

npm run watch

Integration with Claude Desktop

To use this MCP server with Claude Desktop, add the following configuration to your Claude Desktop config file:

macOS

Edit: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows

Edit: %APPDATA%/Claude/claude_desktop_config.json

Linux

Edit: ~/.config/Claude/claude_desktop_config.json

Add this configuration:

{
  "mcpServers": {
    "jsonplaceholder": {
      "command": "node",
      "args": ["/absolute/path/to/jsonplaceholder-mcp/dist/index.js"]
    }
  }
}

Replace /absolute/path/to/jsonplaceholder-mcp with the actual path to your installation.

Example Usage in Claude

Once connected, you can ask Claude to:

  • "Get all posts from JSONPlaceholder"

  • "Show me user with ID 1"

  • "Get comments for post 1"

  • "Create a new post with title 'Test Post' and body 'This is a test'"

  • "Get all todos for user 1"

  • "Update post 1 with a new title"

  • "Delete post 1"

About JSONPlaceholder

JSONPlaceholder is a free fake REST API for testing and prototyping. It provides:

  • 100 posts

  • 500 comments

  • 100 albums

  • 5000 photos

  • 200 todos

  • 10 users

Note: All POST, PUT, PATCH, and DELETE operations are simulated and won't persist to the actual server.

API Base URL: https://jsonplaceholder.typicode.com

Development

This project uses:

  • TypeScript for type safety

  • @modelcontextprotocol/sdk - Official Anthropic MCP SDK

  • Node.js runtime

Project Structure

jsonplaceholder-mcp/
├── src/
│   └── index.ts          # Main MCP server implementation
├── dist/                 # Compiled JavaScript (generated)
├── package.json          # Project dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Available Tools

7 tools
create_postA

Create a new post on JSONPlaceholder. Note: This won't actually be saved to the server, but will simulate the creation.

Inputs: body (required), title (required), userId (required).

delete_postA

Delete a post on JSONPlaceholder. Note: This won't actually delete from the server, but will simulate the deletion.

Inputs: id (required).

get_commentsA

Get comments from JSONPlaceholder. Can retrieve all comments, a specific comment by ID, or comments for a specific post.

Inputs: id, postId.

get_postsA

Get posts from JSONPlaceholder. Can retrieve all posts, a specific post by ID, or filter by user ID.

Inputs: id, userId.

get_todosA

Get todos from JSONPlaceholder. Can retrieve all todos, a specific todo by ID, or filter by user ID.

Inputs: id, userId.

get_usersA

Get users from JSONPlaceholder. Can retrieve all users or a specific user by ID.

Inputs: id.

update_postA

Update an existing post on JSONPlaceholder. Note: This won't actually update the server, but will simulate the update.

Inputs: id (required), body, title, userId.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action: get_posts, get_users, get_comments, get_todos, create_post, update_post, delete_post. There is no overlap in purpose or behavior, and the descriptions make the boundaries clear.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern: get_ for reads and create_/update_/delete_ for mutations. The pattern is uniform and predictable across the entire set.

    Tool Count5/5

    With 7 tools, the server is well-scoped for a JSONPlaceholder demo. Each tool covers a core operation without unnecessary bloat, fitting comfortably in the ideal 3-15 tool range.

    Completeness3/5

    Posts have full CRUD coverage (get, create, update, delete), but users, comments, and todos are read-only. This leaves obvious gaps for mutating those resources, though the core post workflow is complete.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers