mcpField
N
Ntealan Apis Mcp Server

Ntealan Apis Mcp Server

本地服务
github.com/Levis0045科研与教育078 周前更新

关于 Ntealan Apis Mcp Server

NTealan Apis Mcp Server 将 NTeALan 的词典、文章和贡献数据提供给 MCP 客户端。目前提供资源操作,包括查询、统计和搜索;列出的变更工具尚未实现。

主要功能

  1. 01词典元数据与统计
  2. 02文章查询与统计
  3. 03词典和文章搜索
  4. 04贡献记录查询
  5. 05异步资源处理

适用场景

  1. 01获取项目所需的词典详情
  2. 02按查询词或词典搜索文章
  3. 03查看词典或文章统计数据
  4. 04按 ID 查询贡献记录

MCP 相关

将 NTeALan API 数据作为 MCP 资源提供。可通过部署服务的 `/sse` 端点连接;README 指出目前仅资源操作可用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

NTeALan REST APIs MCP 服务

NTeALan 词典 MCP 服务 是一个模块化、可扩展的 Model Context Protocol(MCP) 服务,面向 NTeALan REST API 词典及其贡献内容。此项目提供了一个统一的界面,用于管理词典数据、词条和用户贡献,并针对易于集成和扩展进行了设计。

项目部署于 https://apis.ntealan.net/ntealan/mcpserver。添加 /sse 路径即可连接到 MCP 客户端。目前只能使用资源操作。

⚠️ 此开发端点有时可能不可用。请创建一个 issue,我们会着手处理。

smithery badge

PyPI MIT licensed Documentation


🦜 目录


🦜 功能

  • 词典管理:创建、更新、删除和检索词典及其元数据。
  • 词条管理:管理词典中的词条,包括统计信息和筛选。
  • 贡献管理:跟踪和管理用户对词条和词典的贡献。
  • 可扩展的 MCP 服务:轻松添加新的资源和工具。
  • 异步支持:基于 fastmcp 和 aiohttp 构建,性能出色。
  • 类似 OpenAPI 的资源注册:使用 URI 和标签注册资源和工具。

🦜 快速开始

前提条件
安装
通过 pip 安装

克隆仓库并安装依赖项:

git clone https://github.com/Levis0045/ntealan-apis-mcp-server.git
cd ntealan-apis-mcp-server
pip install .
(可选)安装并使用 uv 以更快地管理依赖项

如果你希望更快地安装依赖项并使用现代 Python 打包方式,可以在 ntealan-apis-mcp-server 目录中使用 uv:

uv sync
运行服务

启动 MCP 服务:

python -m ntealanmcp -t stdio

或者,如果你已安装 uv,可以运行服务命令:

ntealanmcp -t stdio

服务默认使用 Server-Sent Events (sse) 传输方式,并在此端点运行:http://127.0.0.1:8000/sse。如有需要,可以在 main.py 中修改传输方式。


🦜 项目结构

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

🦜 用法

基础资源

资源是异步函数,用于从 NTeALan API 端点公开字典、文章和贡献的数据。它们会注册到 MCP 服务中,并可通过自定义 URI 调用。

资源注册示例:

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}!"}

现有资源及其状态列表:

名称 / URI 模式描述参数开发状态
ntealan-apis://dictionaries/dictionary/{dictionary_id}按 ID 获取字典元数据dictionary_id稳定
ntealan-apis://dictionaries?limit=2获取所有字典元数据limit稳定
ntealan-apis://dictionaries/statistics/{dictionary_id}获取特定字典的统计信息dictionary_id稳定
ntealan-apis://dictionaries/statistics获取所有字典的统计信息无稳定
ntealan-apis://articles/dictionary/{dictionary_id}/{article_id}?none按 ID 获取文章dictionary_id、article_id稳定
ntealan-apis://articles?limit=2获取所有文章limit稳定
ntealan-apis://articles/dictionary/{dictionary_id}?limit=2获取某个字典的所有文章dictionary_id、limit稳定
ntealan-apis://articles/statistics/{dictionary_id}获取某个字典的文章统计信息dictionary_id稳定
ntealan-apis://articles/statistics获取所有文章的统计信息无不稳定
ntealan-apis://contributions/{dictionary_id}/{contribution_id}按 ID 获取贡献dictionary_id、contribution_id稳定
ntealan-apis://greeting/Elvis问候资源name稳定
ntealan-apis://articles/dictionaries/search/{dictionary_id}?q=mba&page=1&limit=1在字典中搜索文章dictionary_id、q、page、limit稳定
ntealan-apis://articles/search?q=mba&page=1搜索文章q、page稳定
ntealan-apis://dictionaries/search?q=yemb&page=1&limit=1搜索字典q、page、limit稳定
基础工具

工具是用于创建、更新和删除词典、文章和贡献的实用函数。

工具注册示例:

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

现有工具列表及状态(尚未实现):

工具名称描述必需的载荷字段开发状态
create_dictionary创建新词典data(词典字段)尚未开始
update_dictionary更新现有词典dictionary_id、data(要更新的字段)尚未开始
delete_dictionary删除词典dictionary_id尚未开始
create_article创建新文章dictionary_id、data(文章字段)尚未开始
update_article更新文章dictionary_id、article_id、data(要更新的字段)尚未开始
delete_article删除文章dictionary_id、article_id尚未开始
create_contribution创建新贡献dictionary_id、article_id、data(贡献字段)尚未开始
update_contribution更新贡献dictionary_id、article_id、contribution_id、data尚未开始
delete_contribution删除贡献dictionary_id、article_id、contribution_id尚未开始
运行示例

查看 examples/ 文件夹以运行和测试一些示例。

# 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

你可以在以下位置获取文档:

# for all resources
uv run examples/run_client_resources.py -h
# for all tools
uv run examples/run_client_tools.py -h
使用 Docker 部署

你可以使用 Docker 部署 MCP 服务,并在生产环境中通过 Nginx 反向代理提供服务。

1. 构建 Docker 镜像

手动构建 Docker 镜像:

docker build -t ntealan-mcp-server .
2. 或自动构建并启动服务
  • 获取并检查最新版本的 compose 和 Docker。响应中会显示 Docker Compose version v2.35.1。
docker compose version
  • 构建并启动服务
docker compose up --build -d
  • 现在可以通过此地址 http://0.0.0.0:8000 或你配置的域名访问 MCP 服务。

  • 使用 MCP 客户端连接到 http://127.0.0.1:8000/sse 或你配置的域名。

使用 Smithery 连接
  • 安装 mcp cli
uv add "mcp[cli]"
  • 使用 MCP 客户端连接
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())

🦜 贡献

请在此文件中了解更多信息:CONTRIBUTION.md

🦜 联系方式

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。