# Cmcp

> A command-line utility for interacting with MCP servers.

- **Type:** MCP server
- **Install:** `agentstack add mcp-russellluo-cmcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [RussellLuo](https://agentstack.voostack.com/s/russellluo)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [RussellLuo](https://github.com/RussellLuo)
- **Source:** https://github.com/RussellLuo/cmcp

## Install

```sh
agentstack add mcp-russellluo-cmcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# cMCP

`cmcp` is a command-line utility that helps you interact with [MCP][1] servers. It's basically `curl` for MCP servers.

## Installation

```bash
pip install cmcp
```

## Usage

### STDIO

Interact with the STDIO server:

```bash
cmcp COMMAND METHOD
```

Add required parameters:

```bash
cmcp COMMAND METHOD param1=value param2:='{"arg1": "value"}'
```

Add required environment variables:

```bash
cmcp COMMAND METHOD ENV_VAR1:value ENV_VAR2:value param1=value param2:='{"arg1": "value"}'
```

### HTTP (or SSE)

Interact with the HTTP (or SSE) server:

```bash
cmcp URL METHOD
```

Add required parameters:

```bash
cmcp URL METHOD param1=value param2:='{"arg1": "value"}'
```

Add required HTTP headers:

```bash
cmcp URL METHOD Header1:value Header2:value param1=value param2:='{"arg1": "value"}'
```

### Verbose mode

Enable verbose mode to show JSON-RPC request and response:

```bash
cmcp -v COMMAND_or_URL METHOD
```

## Quick Start

Given the following MCP Server (see [here][2]):

```python
# server.py
from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")

# Add a prompt
@mcp.prompt()
def review_code(code: str) -> str:
    return f"Please review this code:\n\n{code}"

# Add a static config resource
@mcp.resource("config://app")
def get_config() -> str:
    """Static configuration data"""
    return "App configuration here"

# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"

# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b
```

### STDIO transport

List prompts:

```bash
cmcp 'mcp run server.py' prompts/list
```

Get a prompt:

```bash
cmcp 'mcp run server.py' prompts/get name=review_code arguments:='{"code": "def greet(): pass"}'
```

List resources:

```bash
cmcp 'mcp run server.py' resources/list
```

Read a resource:

```bash
cmcp 'mcp run server.py' resources/read uri=config://app
```

List resource templates:

```bash
cmcp 'mcp run server.py' resources/templates/list
```

List tools:

```bash
cmcp 'mcp run server.py' tools/list
```

Call a tool:

```bash
cmcp 'mcp run server.py' tools/call name=add arguments:='{"a": 1, "b": 2}'
```

### HTTP transport

Run the above MCP server with HTTP transport:

```bash
mcp run server.py -t streamable-http
```

List prompts:

```bash
cmcp http://localhost:8000 prompts/list
# or `cmcp http://localhost:8000/mcp prompts/list`
```

Get a prompt:

```bash
cmcp http://localhost:8000 prompts/get name=review_code arguments:='{"code": "def greet(): pass"}'
```

List resources:

```bash
cmcp http://localhost:8000 resources/list
```

Read a resource:

```bash
cmcp http://localhost:8000 resources/read uri=config://app
```

List resource templates:

```bash
cmcp http://localhost:8000 resources/templates/list
```

List tools:

```bash
cmcp http://localhost:8000 tools/list
```

Call a tool:

```bash
cmcp http://localhost:8000 tools/call name=add arguments:='{"a": 1, "b": 2}'
```

### SSE transport (Deprecated)

Run the above MCP server with SSE transport:

```bash
mcp run server.py -t sse
```

List prompts:

```bash
cmcp http://localhost:8000/sse prompts/list
```

Get a prompt:

```bash
cmcp http://localhost:8000/sse prompts/get name=review_code arguments:='{"code": "def greet(): pass"}'
```

List resources:

```bash
cmcp http://localhost:8000/sse resources/list
```

Read a resource:

```bash
cmcp http://localhost:8000/sse resources/read uri=config://app
```

List resource templates:

```bash
cmcp http://localhost:8000/sse resources/templates/list
```

List tools:

```bash
cmcp http://localhost:8000/sse tools/list
```

Call a tool:

```bash
cmcp http://localhost:8000/sse tools/call name=add arguments:='{"a": 1, "b": 2}'
```

## Using `mcp.json` (Advanced)

For convenience, you can use a configuration file to manage your MCP servers instead of typing the full command or URL each time. By default, `cmcp` looks for `.cmcp/mcp.json` (in the current directory) or `~/.cmcp/mcp.json` (in your home directory).

The configuration follows the standard MCP JSON format, which is also used by [Cursor](https://cursor.com/docs/context/mcp#using-mcpjson), [Claude Code](https://code.claude.com/docs/en/mcp#project-scope), [FastMCP](https://gofastmcp.com/integrations/mcp-json-configuration), and other MCP clients.

Example configuration file:

```json
{
  "mcpServers": {
    "local-server": {
      "command": "python",
      "args": ["mcp-server.py"],
      "env": {
        "API_KEY": "value"
      }
    },
    "remote-server": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "API_KEY": "value"
      }
    }
  }
}
```

Use a configured server by prefixing its name with `:`:

```bash
# Use the local-server from config
cmcp :local-server tools/list

# Use the remote-server from config
cmcp :remote-server tools/call name=add arguments:='{"a": 1, "b": 2}'

# Use a custom config file
cmcp --config /path/to/config.json :local-server tools/list
```

## Related Projects

[cA2A][3]: A command-line utility for interacting with A2A agents.

## License

[MIT][4]

[1]: https://modelcontextprotocol.io
[2]: https://github.com/modelcontextprotocol/python-sdk#quickstart
[3]: https://github.com/RussellLuo/ca2a
[4]: http://opensource.org/licenses/MIT

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [RussellLuo](https://github.com/RussellLuo)
- **Source:** [RussellLuo/cmcp](https://github.com/RussellLuo/cmcp)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** yes
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-russellluo-cmcp
- Seller: https://agentstack.voostack.com/s/russellluo
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
