Add initial README for python-mcp project
This README provides an overview of the python-mcp project, including its features, core concepts, project structure, and getting started instructions.
This commit is contained in:
151
README.md
Normal file
151
README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# python-mcp
|
||||
|
||||
**python-mcp** is a lightweight, modular tool execution runtime written in Python.
|
||||
|
||||
It enables registration and dynamic execution of tools (functions or modules) with a focus on simplicity, extensibility, and readiness for future MCP-style integrations. For development and rapid iteration, a local language model assists with debugging and code generation.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Structured tool system**: Define and run discrete tools with minimal overhead
|
||||
- **Central tool registry**: Discover, register, and manage tools from a single place
|
||||
- **Isolated execution runtime**: Handles invocation, error management, and normalization
|
||||
- **Extensible transport**: Designed to support stdio, HTTP, and WebSocket interfaces in the future
|
||||
|
||||
---
|
||||
|
||||
## Core Concepts
|
||||
|
||||
### Tools
|
||||
|
||||
A **tool** is a function or module dedicated to a specific task.
|
||||
|
||||
Key attributes:
|
||||
|
||||
- `name`: Tool identifier (string)
|
||||
- `description`: Brief description
|
||||
- `execute`: Callable function to run the tool
|
||||
- `input schema` (optional): Schema for validating input
|
||||
|
||||
**Example:**
|
||||
|
||||
```python
|
||||
def example_tool(input: dict):
|
||||
return {"result": "ok"}
|
||||
|
||||
TOOL = {
|
||||
"name": "example_tool",
|
||||
"description": "Example tool",
|
||||
"execute": example_tool,
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Registry
|
||||
|
||||
The **registry** provides:
|
||||
|
||||
- Tool registration (at startup or dynamically)
|
||||
- Listing of all available tools
|
||||
- Resolution and execution lookup by name
|
||||
|
||||
---
|
||||
|
||||
### Runtime
|
||||
|
||||
The **runtime** manages:
|
||||
|
||||
- Tool invocation and error isolation
|
||||
- Input/output normalization
|
||||
- Execution flow, including optional pre/post hooks
|
||||
|
||||
---
|
||||
|
||||
### Transport (Planned)
|
||||
|
||||
Support for multiple interfaces is on the roadmap:
|
||||
|
||||
- stdio (for local MCP clients)
|
||||
- HTTP API (remote integration)
|
||||
- WebSocket (streaming & interactive sessions)
|
||||
|
||||
---
|
||||
|
||||
## Project Structure
|
||||
|
||||
Recommended directory layout:
|
||||
|
||||
```
|
||||
core/ # Core framework logic, registries, interfaces
|
||||
runtime/ # Execution flow, runners, error handling
|
||||
registry/ # Tool registration and discovery utilities
|
||||
protocol/ # Data structure definitions and schemas
|
||||
transport/ # (Future) Interface implementations
|
||||
tools/ # Tool modules
|
||||
filesystem/ # Example tool domain
|
||||
system/ # Example tool domain
|
||||
network/ # Example tool domain
|
||||
server.py # Main entry point
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. **Create a virtual environment:**
|
||||
|
||||
```sh
|
||||
python -m venv .venv
|
||||
```
|
||||
|
||||
2. **Activate the environment:**
|
||||
|
||||
- Windows:
|
||||
`.venv\Scripts\activate`
|
||||
- Linux/macOS:
|
||||
`source .venv/bin/activate`
|
||||
|
||||
3. **Install dependencies:**
|
||||
|
||||
```sh
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
4. **Run the server:**
|
||||
|
||||
```sh
|
||||
python server.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Adding a Tool
|
||||
|
||||
- Place a Python file with your tool in the `tools/` directory.
|
||||
- Define your tool as shown in the example above.
|
||||
- Register your tool with the registry system.
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- This project is in early development: expect rapid iteration and structural changes.
|
||||
- Tool definitions and the registry API may evolve.
|
||||
- Transport layer is currently unimplemented.
|
||||
- A local language model is used during development for coding, debugging, and accelerating iteration.
|
||||
|
||||
---
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [ ] Tool schema validation
|
||||
- [ ] Automatic tool discovery
|
||||
- [ ] MCP compatibility layer
|
||||
- [ ] Transport abstraction (stdio / HTTP)
|
||||
- [ ] Async execution support
|
||||
|
||||
---
|
||||
|
||||
Contributions and feedback are welcome!
|
||||
Reference in New Issue
Block a user
