Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Ntealan Apis Mcp Server

    A modular, extensible Model Context Protocol (MCP) server for NTeALan REST APIs dictionaries and contributions. This project provides a unified interface for managing dictionary data, articles, and user contributions, and is designed for easy integration and extension.

    0 stars
    Python
    Updated May 1, 2025
    generative-ai
    lexicography
    mcp-server
    ntealan
    sse-server

    Table of Contents

    • 🦜 Table of Contents
    • 🦜 Features
    • 🦜 Getting Started
    • Prerequisites
    • Installation
    • Installing via pip
    • (Optional) Install and use uv for faster dependency management
    • Running the Server
    • 🦜 Project Structure
    • 🦜 Usage
    • Primitive resources
    • Primitive tools
    • Run examples
    • Deploying with Docker
    • 1. Build the Docker image
    • 2. Or automatically build and start the service
    • Connect with Smithery
    • 🦜 Contributing
    • 🦜 Contact

    Table of Contents

    • 🦜 Table of Contents
    • 🦜 Features
    • 🦜 Getting Started
    • Prerequisites
    • Installation
    • Installing via pip
    • (Optional) Install and use uv for faster dependency management
    • Running the Server
    • 🦜 Project Structure
    • 🦜 Usage
    • Primitive resources
    • Primitive tools
    • Run examples
    • Deploying with Docker
    • 1. Build the Docker image
    • 2. Or automatically build and start the service
    • Connect with Smithery
    • 🦜 Contributing
    • 🦜 Contact

    Documentation

    ---

    🦜 Table of Contents

    • Features
    • Getting Started
    • Prerequisites
    • Installation
    • Running the Server
    • Project Structure
    • Usage
    • Resources
    • Tools
    • Contributing
    • Contact

    ---

    🦜 Features

    • Dictionary Management: Create, update, delete, and retrieve dictionaries and their metadata.
    • Article Management: Manage articles within dictionaries, including statistics and filtering.
    • Contribution Management: Track and manage user contributions to articles and dictionaries.
    • Extensible MCP Server: Easily add new resources and tools.
    • Async Support: Built on top of fastmcp and aiohttp for high performance.
    • OpenAPI-like Resource Registration: Register resources and tools with URIs and tags.

    ---

    🦜 Getting Started

    Prerequisites

    • Python 3.11+
    • uv
    • aiohttp
    • pydantic
    • fastmcp (or your fork)
    • aiodns
    • python-dotenv

    Installation

    Installing via pip

    Clone the repository and install dependencies:

    bash
    git clone https://github.com/Levis0045/ntealan-apis-mcp-server.git
    cd ntealan-apis-mcp-server
    pip install .

    (Optional) Install and use uv for faster dependency management

    If you want faster installs and modern Python packaging, you can use uv in the ntealan-apis-mcp-server directory:

    bash
    uv sync

    Running the Server

    To start the MCP server:

    bash
    python -m ntealanmcp -t stdio

    Or, if you have uv installed, you can run server command:

    bash
    ntealanmcp -t stdio

    The server will run using the Server-Sent Events (sse) transport by default at this endpoint http://127.0.0.1:8000/sse. You can modify the transport in main.py if needed.

    ---

    🦜 Project Structure

    code
    ntealan-api/
    ├── src/
    │   └── ntealan_apis_mcp/
    │       ├── main.py
    │       ├── models/
    │       │   ├── article.py
    │       │   ├── contribution.py
    │       │   ├── dictionary.py
    │       │   └── common.py
    │       ├── primitives/
    │       |    ├── resources/
    │       │    │   ├── article.py
    │       │    │   ├── contribution.py
    │       │    │   └── dictionary.py
    │       |    └── tools/
    │       |        ├── article.py
    │       |        ├── contribution.py
    │       |        └── dictionary.py
    │       └── common/
    │           ├── utils.py
    │           ├── cache.py
    │           └── http_session.py
    ├── examples/
    ├── tests/
    ├── pyproject.toml
    └── requirements.txt

    ---

    🦜 Usage

    Primitive resources

    Resources are asynchronous functions that expose public Data from NTeALan API endpoints for dictionaries, articles, and contributions. They are registered with the MCP server and can be called via their custom URIs.

    Example resource registration:

    python
    ntl_mcp_server.add_resource_fn(
        lambda dictionary_id, article_id, params: get_article_by_id(
            dictionary_id, article_id, params, ntl_mcp_server.get_context()
        ),
        name="get_article_by_id",
        uri="ntealan-apis://articles/dictionary/{dictionary_id}/{article_id}?{params}",
        tags=["article-endpoint", "mcp-resource"],
        mime_type="application/json",
        description="Get an article by ID"
    )
    
    # or just use the classic integration
    @ntl_mcp_server.resource(
        uri="ntealan-apis://articles/dictionary/{dictionary_id}/{article_id}?{params}",
        tags=["article-endpoint", "mcp-resource"],
        mime_type="application/json"
    )
    async def get_article_by_id(
        dictionary_id: str, article_id: UUID,
        params: str, ctx: Context
    ) -> McpResourceResponse:
        """
        Retrieve a article by its unique identifier.
        """
        # Placeholder logic
        return {"status": "OK", "data": f"Hello, {article_id}!"}

    List of existings resources and status:

    Name / URI PatternDescriptionParametersDevelopment Status
    ntealan-apis://dictionaries/dictionary/{dictionary_id}Get dictionary metadata by IDdictionary_idStable
    ntealan-apis://dictionaries?limit=2Get all dictionaries metadatalimitStable
    ntealan-apis://dictionaries/statistics/{dictionary_id}Get statistics for a specific dictionarydictionary_idStable
    ntealan-apis://dictionaries/statisticsGet statistics for all dictionariesNoneStable
    ntealan-apis://articles/dictionary/{dictionary_id}/{article_id}?noneGet article by IDdictionary_id, article_idStable
    ntealan-apis://articles?limit=2Get all articleslimitStable
    ntealan-apis://articles/dictionary/{dictionary_id}?limit=2Get all articles for a dictionarydictionary_id, limitStable
    ntealan-apis://articles/statistics/{dictionary_id}Get article statistics for a dictionarydictionary_idStable
    ntealan-apis://articles/statisticsGet statistics for all articlesNoneNot stable
    ntealan-apis://contributions/{dictionary_id}/{contribution_id}Get contribution by IDdictionary_id, contribution_idStable
    ntealan-apis://greeting/ElvisGreeting resourcenameStable
    ntealan-apis://articles/dictionaries/search/{dictionary_id}?q=mba&page=1&limit=1Search articles in a dictionarydictionary_id, q, page, limitStable
    ntealan-apis://articles/search?q=mba&page=1Search articlesq, pageStable
    ntealan-apis://dictionaries/search?q=yemb&page=1&limit=1Search dictionariesq, page, limitStable

    Primitive tools

    Tools are utility functions for creating, updating, and deleting dictionaries, articles, and contributions.

    Example tool registration:

    python
    ntl_mcp_server.add_tool(
        create_dictionary,
        description="Create a new dictionary",
        tags=["mcp-tool", "dictionary-endpoint"]
    )

    List of existings tools and status (NOT YET IMPLEMENTED):

    Tool NameDescriptionRequired Payload FieldsDevelopment Status
    create_dictionaryCreate a new dictionarydata (dictionary fields)Not started
    update_dictionaryUpdate an existing dictionarydictionary_id, data (fields to update)Not started
    delete_dictionaryDelete a dictionarydictionary_idNot started
    create_articleCreate a new articledictionary_id, data (article fields)Not started
    update_articleUpdate an articledictionary_id, article_id, data (fields to update)Not started
    delete_articleDelete an articledictionary_id, article_idNot started
    create_contributionCreate a new contributiondictionary_id, article_id, data (contribution fields)Not started
    update_contributionUpdate a contributiondictionary_id, article_id, contribution_id, dataNot started
    delete_contributionDelete a contributiondictionary_id, article_id, contribution_idNot started

    Run examples

    Check examples/ folder to run and test some samples.

    bash
    # for all resources
    uv run examples/run_client_resources.py -t sse -e prod -s 8
    # for all tools
    uv run examples/run_client_tools.py -t stdio -e local -s 0

    You can get docs on :

    bash
    # for all resources
    uv run examples/run_client_resources.py -h
    # for all tools
    uv run examples/run_client_tools.py -h

    Deploying with Docker

    You can deploy the MCP server using Docker and serve it behind an Nginx reverse proxy for production environments.

    1. Build the Docker image

    Build the Docker image manually:

    bash
    docker build -t ntealan-mcp-server .

    2. Or automatically build and start the service

    • Get and check the latest version of compose and Docker. You will get in response Docker Compose version v2.35.1.
    bash
    docker compose version
    • Build and start the service
    bash
    docker compose up --build -d
    • Your MCP server will now be accessible at this address http://0.0.0.0:8000 or your configured domain.
    • Connect with MCP Client at http://127.0.0.1:8000/sse or your configured domain.

    Connect with Smithery

    • Install mcp cli
    bash
    uv add "mcp[cli]"
    • Connect with MCP client
    python
    import mcp
    from mcp.client.websocket import websocket_client
    import json
    import base64
    
    smithery_api_key = "your-api-key"
    url = f"wss://server.smithery.ai/@Levis0045/ntealan-apis-mcp-server/ws?api_key={smithery_api_key}"
    
    async def main():
        # Connect to the server using websocket client
        async with websocket_client(url) as streams:
            async with mcp.ClientSession(*streams) as session:
                # Initialize the connection
                await session.initialize()
                # List available tools
                tools_result = await session.list_tools()
                print(f"Available tools: {', '.join([t.name for t in tools_result.tools])}")
    
                # Example of calling a tool:
                # result = await session.call_tool("tool-name", arguments={"arg1": "value"})
    
    if __name__ == "__main__":
        import asyncio
        asyncio.run(main())

    ---

    🦜 Contributing

    Get more informations in this file: CONTRIBUTION.md

    🦜 Contact

    • Project Lead: Elvis Mboning@NTeALan
    • NTeALan APIs documentation: https://apis.ntealan.net/ntealan
    • GitHub Issues: https://github.com/Levis0045/ntealan-apis-mcp-server/issues
    • Email: contact@ntealan.org

    Similar MCP

    Based on tags & features

    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biothings Mcp

      Python·
      25
    • FH

      Fhir Mcp Server

      Python·
      55
    • OM

      Omop Mcp

      Python·
      14

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biothings Mcp

      Python·
      25
    • FH

      Fhir Mcp Server

      Python·
      55
    • OM

      Omop Mcp

      Python·
      14

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k