Skip to main content
Glama
README.md
# Document MCP Server

A simple MCP (Model Context Protocol) server and MCP client for managing documents using FastMCP.

## Features

- **Tools**:
  - `read_doc_contents`: Read the contents of a document.
  - `edit_document`: Edit a document by replacing text.
  - `return all the docs`: List all document IDs.

- **Resources**:
  - `docs://documents`: JSON list of document IDs.
  - `docs://documents/{doc_id}`: Plain text content of a specific document.

- **Prompts**:
  - `format_to_md`: Prompt template for formatting documents to Markdown.

## Prerequisites

- Python 3.12 or higher
- uv (Python package manager and project manager)

## Installation

1. Ensure you have Python 3.12+ installed.

2. Install uv if not already installed:
   ```bash
   pip install uv
   ```

3. Clone or download this project to your local machine.

4. Navigate to the project directory:
   ```bash
   cd "path/to/mcp server"
   ```

5. Create a virtual environment and install dependencies:
   ```bash
   uv sync
   ```

## Running the Server

To run the MCP server in development mode:

```bash
uv run mcp dev mcp_server.py
```
The server runs on stdio transport, suitable for MCP clients.

## Testing the Functionality

Test client is provided in `mcp_client.py` to verify the server works.

To test:

1. In one terminal, start the server:
   ```bash
   uv run python mcp_server.py
   ```

2. In another terminal, run the test client:
   ```bash
   uv run mcp_client.py
   ```

This will connect to the server and list the available tools, printing them to the console.

For more advanced testing, you can modify `mcp_client.py` to call specific tools, read resources, or get prompts.

Example: To read a document content, you could add code like:

```python
# Inside the async main function
doc_content = await client.call_tool("read_doc_contents", {"doc_id": "deposition.md"})
print(doc_content)
```

## Project Structure

- `mcp_server.py`: The main MCP server implementation.
- `mcp_client.py`: A test client for interacting with the server.
- `pyproject.toml`: Project configuration and dependencies.

## Notes

- The server uses an in-memory dictionary for documents. Changes are not persisted.
- Ensure the virtual environment is activated when running Python commands.

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: edit_document modifies content, read_doc_contents retrieves content, and return all the docs lists document IDs. There is no overlap in functionality, making tool selection unambiguous for an agent.

Naming Consistency2/5

The naming is inconsistent with mixed conventions: edit_document uses snake_case with a verb_noun pattern, read_doc_contents uses snake_case but abbreviates 'document' inconsistently, and return all the docs uses a sentence-like format with spaces and no clear pattern. This lack of uniformity could confuse agents.

Tool Count3/5

With only 3 tools, the set feels thin for a document management server, as it lacks operations like creating or deleting documents. While the tools cover basic read, list, and edit functions, the scope is limited and may require workarounds for full document lifecycle management.

Completeness2/5

There are significant gaps in the tool surface for document management: no create_document or delete_document tools, and missing operations like search or metadata updates. This incomplete coverage will likely cause agent failures when trying to perform common document workflows beyond reading, listing, and editing.

Maintenance

ActivityInactive
ResponsivenessNo issues