semvec/pypi-packages huggingface dataset:
ezmcp 0.0.2
Easy-to-use MCP server framework specialized for SSE.
License: MIT
Requires Python: >=3.10

# ezmcp

Easy-to-use MCP server framework specialized for SSE.

## Overview

ezmcp is a lightweight framework that makes it easy to create MCP-compatible servers using a FastAPI-like syntax. It provides a simple decorator-based API for defining tools that can be called by MCP clients.

## Features

- FastAPI-style decorator API for defining MCP tools
- Automatic parameter validation and type conversion
- Automatic generation of tool schemas from function signatures
- Built-in support for SSE transport
- FastAPI-style middleware support
- Easy integration with existing Starlette applications
- Interactive documentation page for exploring and testing tools

## Installation

```bash
pip install ezmcp
```

## Quick Start

```python
from ezmcp import ezmcp, TextContent

# Create an ezmcp application
app = ezmcp("my-app")

# Define a tool
@app.tool(description="Echo a message back to the user")
async def echo(message: str):
    """Echo a message back to the user."""
    return [TextContent(type="text", text=f"Echo: {message}")]

# Run the application
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)
```

Once the server is running, you can:
- Access the interactive documentation at `http://localhost:8000/docs`
- Connect to the SSE endpoint at `http://localhost:8000/sse`

## Middleware

ezmcp supports middleware similar to FastAPI, allowing you to add behavior that is applied across your entire application.

```python
from starlette.requests import Request

from ezmcp import TextContent, ezmcp

app = ezmcp("my-app")

@app.middleware
async def process_time_middleware(request: Request, call_next):
    """Add a header with the processing time."""
    import time
    start_time = time.perf_counter()
    response = await call_next(request)
    process_time = time.perf_counter() - start_time
    response.headers["X-Process-Time"] = str(process_time)
    return response

@app.tool(description="Echo a message back to the user")
async def echo(message: str):
    """Echo a message back to the user."""
    return [TextContent(type="text", text=f"Echo: {message}")]
```

For more information on middleware, see the [middleware documentation](docs/middleware.md).

## Documentation

For more detailed documentation, see the [ezmcp/README.md](ezmcp/README.md) file.

## License

MIT

## commands

- install for test `pdm install -G test`
- install for dev `pdm install -G dev`
eikon-api-wrapper 0.1.1
Enables effective and resilient Eikon data extracts.
License: MIT
Requires Python: >=3.9
Keywords: eikon, api, wrapper, data, extracts

# eikon_api_wrapper
Easier and more reliable usage of the Eikon data terminal when querying company or bond data.
The API allows to create tables like in the Eikon Screener APP, but with arbitrary amount of rows and columns.

## Usage
1. Clone or download this repository.
2. To use the Eikon API, create a file called `eikon_app_key.txt` with a valid eikon app key in the root directory of your local clone.
More information for getting this Eikon App Key is available [here](https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api/quick-start).
2. Start the Thomson Reuters Eikon Terminal in Front End and login (for that, you have to sit at a computer that has access Eikon).
3. Run `sample_extraction.py` to retrieve a sample data extract from Eikon.
4. The results will be stored locally in a subfolder called `data`.

You can imitate the sample functions for custom extractions. Check their definitions in the `functions.py` script. To find the column names you need for your specific task, you can use the Eikon front end. Just browse for a sample company or bond and find a sample value you are interested in.

![Tux, the Linux mascot](/eikon_api_wrapper/docs/images/eikon_front_end_pic1.PNG)

Then hover over the question mark to find its API Name, which you can then use in your custom function like in the sample functions.

![Tux, the Linux mascot](/eikon_api_wrapper/docs/images/eikon_front_end_pic2.PNG)